From 22da4eed3cb74e5846da47633aff940a938b6072 Mon Sep 17 00:00:00 2001 From: Kayshen-X Date: Wed, 1 Jul 2026 22:16:04 +0800 Subject: [PATCH] chore(repo): retire agent-native; root is now a pure Cargo workspace - Remove the Zig `agent-native` git submodule (no Rust crate depends on it; the built-in agent runtime is the Rust `agent` crate under vendor/agent). - Make the repo root a pure Cargo workspace: delete root package.json + bun.lock; move all web-SDK JS/Bun tooling into packages/ (new packages/package.json workspace root, generate-iconify-catalog.mjs, and the oxlint/oxfmt configs). - Scrub agent-native from all docs and fix README dev commands + prerequisites to reflect the Rust product (cargo directly; bun tooling runs from packages/). - Drop the deleted-root-package.json read from the op-host-web ci_workflow test. --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- .github/pull_request_template.md | 4 +- .gitmodules | 3 - .prettierignore | 1 - AGENTS.md | 16 +- CLAUDE.md | 23 +- Dockerfile.web-rust | 6 +- README.de.md | 40 +-- README.es.md | 40 +-- README.fr.md | 40 +-- README.hi.md | 40 +-- README.id.md | 40 +-- README.ja.md | 40 +-- README.ko.md | 40 +-- README.md | 60 ++--- README.pt.md | 40 +-- README.ru.md | 40 +-- README.th.md | 40 +-- README.tr.md | 40 +-- README.vi.md | 40 +-- README.zh-TW.md | 40 +-- README.zh.md | 40 +-- crates/op-host-web/tests/ci_workflow.rs | 6 - package.json | 46 ---- .oxfmtrc.json => packages/.oxfmtrc.json | 0 oxlintrc.json => packages/.oxlintrc.json | 0 packages/CLAUDE.md | 13 +- packages/agent-native | 1 - bun.lock => packages/bun.lock | 250 +++++++----------- packages/package.json | 31 +++ .../scripts}/generate-iconify-catalog.mjs | 6 +- scripts/ensure-agent-native.cjs | 105 -------- 32 files changed, 485 insertions(+), 648 deletions(-) delete mode 100644 package.json rename .oxfmtrc.json => packages/.oxfmtrc.json (100%) rename oxlintrc.json => packages/.oxlintrc.json (100%) delete mode 160000 packages/agent-native rename bun.lock => packages/bun.lock (68%) create mode 100644 packages/package.json rename {scripts => packages/scripts}/generate-iconify-catalog.mjs (94%) delete mode 100644 scripts/ensure-agent-native.cjs diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index a42cb7020..95ba6bff3 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -11,7 +11,7 @@ body: id: version attributes: label: Version - description: OpenPencil version (check Help > About or `package.json`) + description: OpenPencil version (check Help > About or `Cargo.toml`) placeholder: e.g. 0.3.2 validations: required: true diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 5912bc53b..f8ed5ea7e 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -26,7 +26,7 @@ ## Checklist -- [ ] `npx tsc --noEmit` passes -- [ ] `bun --bun run test` passes +- [ ] `cargo test --workspace` passes +- [ ] `cargo clippy --workspace --all-targets -- -D warnings` passes - [ ] No unrelated changes included - [ ] Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) diff --git a/.gitmodules b/.gitmodules index 65b8828cb..3c69d61bc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "packages/agent-native"] - path = packages/agent-native - url = https://github.com/ZSeven-W/agent.git [submodule "vendor/agent"] path = vendor/agent url = https://github.com/ZSeven-W/agent-rs.git diff --git a/.prettierignore b/.prettierignore index 9d07b6019..bc9dc023e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,7 +1,6 @@ # oxfmt picks this file up automatically (alongside .gitignore). # Git submodules — owned by separate repos, not formatted from here. -packages/agent-native/ vendor/agent/ vendor/casement/ vendor/jian/ diff --git a/AGENTS.md b/AGENTS.md index dbcb5f735..5e2350cc7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,23 +2,23 @@ This file provides guidance to Codex when working with code in this repository. -> **The TypeScript OpenPencil has been retired.** `apps/web`, `apps/desktop`, `apps/cli`, and the `pen-*` packages are gone. The product is **Rust** (`crates/`) + a **Zig** agent runtime (`packages/agent-native`) + a **wasm-backed web SDK** (`packages/op-web-sdk*`). See git history (last TS tag `v0.7.5`) for the retired code. +> **The TypeScript OpenPencil has been retired.** `apps/web`, `apps/desktop`, `apps/cli`, and the `pen-*` packages are gone. The product is **Rust** (`crates/`) + a **wasm-backed web SDK** (`packages/op-web-sdk*`). See git history (last TS tag `v0.7.5`) for the retired code. For full guidance see **`CLAUDE.md`** (this directory). Authoritative Rust architecture lives in **`crates/CLAUDE.md`**; remaining packages in **`packages/CLAUDE.md`**. ## Commands -Tooling is **Cargo** (Rust — the product) plus **Bun** (remaining JS/Zig glue). +Tooling is **Cargo** (Rust — the product). The root has **no `package.json`**; the JS/**Bun** tooling for the web SDK lives under `packages/` — run SDK/JS scripts from there. -- **Web dev server (Rust):** `bun run dev` (= `bash scripts/start-web-rust.sh`) -- **Build (Rust):** `bun run build` (= `cargo build --workspace --release`) -- **Tests (Rust):** `bun run test` (= `cargo test --workspace`); single crate: `cargo test -p ` -- **Type check:** `cargo check --workspace`; wasm: `bun run cargo:wasm-check` +- **Web dev server (Rust):** `bash scripts/start-web-rust.sh` +- **Build (Rust):** `cargo build --workspace --release` +- **Tests (Rust):** `cargo test --workspace`; single crate: `cargo test -p ` +- **Type check:** `cargo check --workspace`; wasm: `cargo check --target wasm32-unknown-unknown -p op-host-web --no-default-features --features web` - **Lint / format (Rust):** `cargo clippy --workspace --all-targets -- -D warnings` / `cargo fmt --all` -- **Lint / format (TS SDK):** `bun run lint` (oxlint) / `bun run format` (oxfmt) +- **Lint / format (TS SDK):** from `packages/`: `bun run lint` (oxlint) / `bun run format` (oxfmt) - **Desktop app:** `cargo build -p op-host-desktop` → binary `openpencil-desktop` - **CLI:** `cargo build -p op-cli` → binary `op` -- **Agent runtime (Zig):** `bun run agent:build` then `bun run agent-native:bundle` +- **Iconify catalog (Rust assets):** from `packages/`: `bun run generate-iconify-catalog` ## Conventions diff --git a/CLAUDE.md b/CLAUDE.md index 57bce3741..91ffa7959 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,30 +2,28 @@ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. -> **The TypeScript OpenPencil has been retired.** `apps/web`, `apps/desktop`, `apps/cli`, and the `pen-*` packages (pen-types/core/engine/renderer/figma/mcp/ai-skills/sdk/react/acp) are gone. The product is now implemented in **Rust** (`crates/`) with a **Zig** agent runtime (`packages/agent-native`) and a thin **wasm-backed web SDK** (`packages/op-web-sdk*`). Historical `// ported from pen-*` comments in the Rust sources name the retired TS as their origin — that code no longer exists in-tree; consult git history (last TS tag `v0.7.5`) if you need it. +> **The TypeScript OpenPencil has been retired.** `apps/web`, `apps/desktop`, `apps/cli`, and the `pen-*` packages (pen-types/core/engine/renderer/figma/mcp/ai-skills/sdk/react/acp) are gone. The product is now implemented in **Rust** (`crates/`) with a thin **wasm-backed web SDK** (`packages/op-web-sdk*`). Historical `// ported from pen-*` comments in the Rust sources name the retired TS as their origin — that code no longer exists in-tree; consult git history (last TS tag `v0.7.5`) if you need it. Detailed module docs load automatically in subdirectories: - **`crates/CLAUDE.md`** — Rust shell: crate layout, editor core, widgets, hosts (native/web/desktop), MCP, AI, orchestrator, codegen. **The canonical architecture doc.** -- **`packages/CLAUDE.md`** — Remaining packages (agent-native Zig runtime + op-web-sdk web viewer SDK family). -- **`packages/agent-native/CLAUDE.md`** — Zig agent runtime (NAPI addon). +- **`packages/CLAUDE.md`** — Remaining packages (op-web-sdk web viewer SDK family). ## Commands -Tooling is **Cargo** (Rust — the product) plus **Bun** (the remaining JS/Zig glue). +Tooling is **Cargo** (Rust — the product). The root has **no `package.json`**; the JS/**Bun** tooling for the web SDK lives under `packages/` — run SDK/JS scripts from there. -- **Web dev server (Rust):** `bun run dev` (= `bash scripts/start-web-rust.sh`) -- **Build (Rust):** `bun run build` (= `cargo build --workspace --release`) -- **Run all tests (Rust):** `bun run test` (= `cargo test --workspace`); single crate: `cargo test -p ` -- **Type check:** `cargo check --workspace`; wasm: `bun run cargo:wasm-check` +- **Web dev server (Rust):** `bash scripts/start-web-rust.sh` +- **Build (Rust):** `cargo build --workspace --release` +- **Run all tests (Rust):** `cargo test --workspace`; single crate: `cargo test -p ` +- **Type check:** `cargo check --workspace`; wasm: `cargo check --target wasm32-unknown-unknown -p op-host-web --no-default-features --features web` - **Lint / format (Rust):** `cargo clippy --workspace --all-targets -- -D warnings` / `cargo fmt --all` -- **Lint / format (remaining TS SDK):** `bun run lint` (oxlint) / `bun run format` (oxfmt) +- **Lint / format (remaining TS SDK):** from `packages/`: `bun run lint` (oxlint) / `bun run format` (oxfmt) - **Desktop app:** `cargo build -p op-host-desktop` → binary `openpencil-desktop` (live MCP on `127.0.0.1:/mcp`) - **CLI:** `cargo build -p op-cli` → binary `op` - **MCP server:** built into the desktop/web host (`--mcp `); crate `op-mcp` -- **Agent runtime (Zig):** `bun run agent:build` then `bun run agent-native:bundle` -- **Iconify catalog (Rust assets):** `bun run generate-iconify-catalog` -- **Bump version:** `bun run bump ` (syncs package.json; Rust versions live in Cargo.toml) +- **Iconify catalog (Rust assets):** from `packages/`: `bun run generate-iconify-catalog` +- **Bump SDK versions:** from `packages/`: `bun run bump ` (syncs the SDK `package.json`s; Rust versions live in Cargo.toml) ## Architecture @@ -46,7 +44,6 @@ crates/ op-git / op-opmerge / op-pen-loader / op-design-lint / op-i18n / op-smoke / … packages/ -├── agent-native/ Zig AI agent runtime (NAPI, multi-provider, concurrent Agent Teams) ├── op-web-sdk/ Read-only `.op` web viewer SDK (wraps the op-host-web wasm bundle) ├── op-web-sdk-react/ React 19 adapter for op-web-sdk └── op-web-sdk-vue/ Vue 3 adapter for op-web-sdk diff --git a/Dockerfile.web-rust b/Dockerfile.web-rust index 82f51b10d..288162491 100644 --- a/Dockerfile.web-rust +++ b/Dockerfile.web-rust @@ -2,11 +2,11 @@ # # Dockerfile.web-rust — container for the RUST web host (C1). # -# Serves the Rust CanvasKit web editor: the `openpencil-desktop` daemon running +# Serves the Rust CanvasKit web editor: the `op-host-web-server` daemon running # in `--serve-web` mode, hosting the wasm-bindgen bundle + the vendored # CanvasKit artifact out of a `web-bundle/` directory placed next to the binary. -# This is the Rust analog of the root `Dockerfile` (which ships the retired -# TS/Nitro web app via `bun run ./out/web/server/index.mjs`). +# This is the sole web container now that the TypeScript/Nitro web app (and its +# root `Dockerfile`) have been retired. # # Build (self-contained, builds the wasm bundle in-image — the default): # docker build -f Dockerfile.web-rust -t openpencil-web-rust . diff --git a/README.de.md b/README.de.md index 78d1849e8..44f579077 100644 --- a/README.de.md +++ b/README.de.md @@ -105,20 +105,17 @@ Export aus einer einzigen `.op`-Datei nach React + Tailwind, HTML + CSS, Vue, Sv ## Schnellstart ```bash -# Abhängigkeiten installieren -bun install - -# Entwicklungsserver auf http://localhost:3000 starten -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` Oder als Desktop-App ausführen: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **Voraussetzungen:** [Bun](https://bun.sh/) >= 1.0 und [Node.js](https://nodejs.org/) >= 18 +> **Voraussetzungen:** [Rust](https://www.rust-lang.org/) (stable) zum Bauen des Produkts. [Bun](https://bun.sh/) >= 1.0 und [Node.js](https://nodejs.org/) >= 18 werden nur für das Web-SDK unter `packages/` benötigt. ### Docker @@ -254,7 +251,7 @@ Unterstützt drei Eingabemethoden: Inline-String, `@filepath` (aus Datei lesen) - Mehrstufiger Workflow — `design_skeleton` → `design_content` → `design_refine` mit fokussierten Prompts pro Phase - Style Guides — 50+ eingebaute Stile (glassmorphism, brutalist, retro usw.) mit tag-basiertem Fuzzy-Matching, eingebunden in Planung und Generierung - Multi-Modell-Fähigkeitsprofile — passt Denkmodus, Aufwand und Promptform automatisch an die Modellstufe an -- Integrierte Agent-Laufzeit (`agent-native`, Zig NAPI) + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini-Anbieter +- Integrierte Agent-Laufzeit (Rust) + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini-Anbieter - Anthropic-Format-Passthrough für chinesische LLM-Anbieter — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Git-Integration** @@ -309,7 +306,7 @@ OpenPencil wird von Grund auf in **Rust** neu geschrieben ([#129](https://github | **Web-Nutzlast** | JS + WASM-Bundle | **8.2 MB** wasm / **2.18 MB** gzip über die Leitung | | **Rendering** | CanvasKit/Skia im Web | Ein GPU-beschleunigtes Skia-Backend auf **jedem** Ziel | | **Speicher** | JavaScript GC-Pausen | Kein GC — Rust-Ownership, vorhersagbare Latenz | -| **Codebasis** | Web-Stack + Electron + Zig NAPI-Agent | Ein Rust-Workspace: Editor · CLI · MCP · AI · Codegen · Figma · Git | +| **Codebasis** | Web-Stack + Electron | Ein Rust-Workspace: Editor · CLI · MCP · AI · Codegen · Figma · Git | | **Zielplattformen** | Web + Desktop, zwei separate Stacks | Desktop (macOS/Win/Linux) · Mobile (iOS/Android) · Browser — ein Kern | **Gemessene Verbesserungen** @@ -382,15 +379,20 @@ openpencil/ ## Skripte ```bash -bun --bun run dev # Entwicklungsserver (Port 3000) -bun --bun run build # Produktions-Build -bun --bun run test # Tests ausführen (Vitest) -npx tsc --noEmit # Typprüfung -bun run bump # Version über alle package.json synchronisieren -bun run electron:dev # Electron-Entwicklung -bun run electron:build # Electron-Paketierung -bun run cli:dev # CLI aus Quellcode ausführen -bun run cli:compile # CLI nach dist kompilieren +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## Mitwirken @@ -400,7 +402,7 @@ Beiträge sind willkommen! Siehe [CLAUDE.md](./CLAUDE.md) für Architekturdetail 1. Forken und klonen 2. Versionssynchronisierung einrichten: `git config core.hooksPath .githooks` 3. Branch erstellen: `git checkout -b feat/my-feature` -4. Prüfungen ausführen: `npx tsc --noEmit && bun --bun run test` +4. Prüfungen ausführen: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. Mit [Conventional Commits](https://www.conventionalcommits.org/) committen: `feat(canvas): add rotation snapping` 6. Pull Request gegen `main` öffnen diff --git a/README.es.md b/README.es.md index bcbc9ed96..d9750ad93 100644 --- a/README.es.md +++ b/README.es.md @@ -105,20 +105,17 @@ Exporta desde un solo archivo `.op` a React + Tailwind, HTML + CSS, Vue, Svelte, ## Inicio Rápido ```bash -# Instalar dependencias -bun install - -# Iniciar el servidor de desarrollo en http://localhost:3000 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` O ejecutar como aplicación de escritorio: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **Requisitos previos:** [Bun](https://bun.sh/) >= 1.0 y [Node.js](https://nodejs.org/) >= 18 +> **Requisitos previos:** [Rust](https://www.rust-lang.org/) (stable) para compilar el producto. [Bun](https://bun.sh/) >= 1.0 y [Node.js](https://nodejs.org/) >= 18 solo se necesitan para el SDK web en `packages/`. ### Docker @@ -254,7 +251,7 @@ Soporta tres métodos de entrada: cadena inline, `@filepath` (leer desde archivo - Flujo de trabajo por capas — `design_skeleton` → `design_content` → `design_refine` con prompts enfocados por fase - Guías de estilo — más de 50 estilos integrados (glassmorphism, brutalist, retro, etc.) con coincidencia difusa basada en etiquetas, integrada en planificación y generación - Perfiles multi-modelo — adapta automáticamente el modo de pensamiento, el esfuerzo y la forma del prompt por nivel de modelo -- Runtime de agente integrado (`agent-native`, Zig NAPI) + proveedores Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini +- Runtime de agente integrado (Rust) + proveedores Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini - Passthrough en formato Anthropic para proveedores de LLM chinos — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Integración con Git** @@ -309,7 +306,7 @@ OpenPencil está siendo reescrito desde cero en **Rust** ([#129](https://github. | **Carga web** | Bundle JS + WASM | **8.2 MB** wasm / **2.18 MB** gzip sobre la red | | **Renderizado** | CanvasKit/Skia en web | Un único backend Skia acelerado por GPU en **cada** plataforma | | **Memoria** | Pausas del JavaScript GC | Sin GC — ownership de Rust, latencia predecible | -| **Base de código** | Web stack + Electron + Zig NAPI agent | Un workspace Rust: editor · CLI · MCP · AI · codegen · Figma · Git | +| **Base de código** | Web stack + Electron | Un workspace Rust: editor · CLI · MCP · AI · codegen · Figma · Git | | **Plataformas** | Web + escritorio, dos stacks separados | Escritorio (macOS/Win/Linux) · móvil (iOS/Android) · navegador — un núcleo | **Mejoras medidas** @@ -382,15 +379,20 @@ openpencil/ ## Scripts ```bash -bun --bun run dev # Servidor de desarrollo (puerto 3000) -bun --bun run build # Compilación de producción -bun --bun run test # Ejecutar pruebas (Vitest) -npx tsc --noEmit # Verificación de tipos -bun run bump # Sincronizar versión en todos los package.json -bun run electron:dev # Desarrollo con Electron -bun run electron:build # Empaquetado de Electron -bun run cli:dev # Ejecutar CLI desde el código fuente -bun run cli:compile # Compilar CLI a dist +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## Contribuir @@ -400,7 +402,7 @@ bun run cli:compile # Compilar CLI a dist 1. Haz fork y clona el repositorio 2. Configura la sincronización de versión: `git config core.hooksPath .githooks` 3. Crea una rama: `git checkout -b feat/my-feature` -4. Ejecuta las verificaciones: `npx tsc --noEmit && bun --bun run test` +4. Ejecuta las verificaciones: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. Haz commit con [Conventional Commits](https://www.conventionalcommits.org/): `feat(canvas): add rotation snapping` 6. Abre un PR contra `main` diff --git a/README.fr.md b/README.fr.md index fd06ac12e..8c6a4deb1 100644 --- a/README.fr.md +++ b/README.fr.md @@ -105,20 +105,17 @@ Exportez depuis un seul fichier `.op` vers React + Tailwind, HTML + CSS, Vue, Sv ## Démarrage rapide ```bash -# Installer les dépendances -bun install - -# Démarrer le serveur de développement sur http://localhost:3000 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` Ou lancer en tant qu'application de bureau : ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **Prérequis :** [Bun](https://bun.sh/) >= 1.0 et [Node.js](https://nodejs.org/) >= 18 +> **Prérequis :** [Rust](https://www.rust-lang.org/) (stable) pour compiler le produit. [Bun](https://bun.sh/) >= 1.0 et [Node.js](https://nodejs.org/) >= 18 ne sont nécessaires que pour le SDK web dans `packages/`. ### Docker @@ -254,7 +251,7 @@ Supporte trois méthodes d'entrée : chaîne en ligne, `@filepath` (lecture depu - Workflow en couches — `design_skeleton` → `design_content` → `design_refine` avec des prompts ciblés par phase - Guides de style — plus de 50 styles intégrés (glassmorphism, brutalist, retro, etc.) avec appariement flou basé sur les tags, intégrés dans la planification et la génération - Profils de capacités multi-modèles — adapte automatiquement le mode de réflexion, l'effort et la forme du prompt selon le niveau du modèle -- Runtime d'agent intégré (`agent-native`, Zig NAPI) + fournisseurs Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini +- Runtime d'agent intégré (Rust) + fournisseurs Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini - Passthrough au format Anthropic pour les fournisseurs LLM chinois — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Intégration Git** @@ -309,7 +306,7 @@ OpenPencil est en cours de réécriture complète en **Rust** ([#129](https://gi | **Charge web** | Bundle JS + WASM | **8.2 MB** wasm / **2.18 MB** gzip sur le réseau | | **Rendu** | CanvasKit/Skia sur le web | Un seul backend Skia accéléré GPU sur **chaque** cible | | **Mémoire** | Pauses du GC JavaScript | Sans GC — ownership Rust, latence prévisible | -| **Base de code** | Stack web + Electron + agent Zig NAPI | Un workspace Rust : éditeur · CLI · MCP · AI · codegen · Figma · Git | +| **Base de code** | Stack web + Electron | Un workspace Rust : éditeur · CLI · MCP · AI · codegen · Figma · Git | | **Cibles** | Web + bureau, deux stacks séparées | Bureau (macOS/Win/Linux) · mobile (iOS/Android) · navigateur — un seul cœur | **Améliorations mesurées** @@ -382,15 +379,20 @@ openpencil/ ## Scripts ```bash -bun --bun run dev # Serveur de développement (port 3000) -bun --bun run build # Build de production -bun --bun run test # Lancer les tests (Vitest) -npx tsc --noEmit # Vérification des types -bun run bump # Synchroniser la version dans tous les package.json -bun run electron:dev # Développement Electron -bun run electron:build # Packaging Electron -bun run cli:dev # Exécuter le CLI depuis les sources -bun run cli:compile # Compiler le CLI vers dist +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## Contribuer @@ -400,7 +402,7 @@ Les contributions sont les bienvenues ! Consultez [CLAUDE.md](./CLAUDE.md) pour 1. Forker et cloner 2. Configurer la synchronisation de version : `git config core.hooksPath .githooks` 3. Créer une branche : `git checkout -b feat/my-feature` -4. Exécuter les vérifications : `npx tsc --noEmit && bun --bun run test` +4. Exécuter les vérifications : `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. Commiter avec [Conventional Commits](https://www.conventionalcommits.org/) : `feat(canvas): add rotation snapping` 6. Ouvrir une PR contre `main` diff --git a/README.hi.md b/README.hi.md index 3469456f7..6a9258d87 100644 --- a/README.hi.md +++ b/README.hi.md @@ -105,20 +105,17 @@ Claude Code, Codex, Gemini, OpenCode, Kiro, या Copilot CLIs में वन ## त्वरित शुरुआत ```bash -# निर्भरताएँ इंस्टॉल करें -bun install - -# http://localhost:3000 पर डेव सर्वर शुरू करें -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` या डेस्कटॉप ऐप के रूप में चलाएँ: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **पूर्वापेक्षाएँ:** [Bun](https://bun.sh/) >= 1.0 और [Node.js](https://nodejs.org/) >= 18 +> **पूर्वापेक्षाएँ:** उत्पाद बनाने के लिए [Rust](https://www.rust-lang.org/) (stable)। [Bun](https://bun.sh/) >= 1.0 और [Node.js](https://nodejs.org/) >= 18 केवल `packages/` के अंतर्गत web SDK के लिए आवश्यक हैं। ### Docker @@ -254,7 +251,7 @@ cat design.dsl | op design - # stdin से पाइप करें - लेयर्ड वर्कफ़्लो — `design_skeleton` → `design_content` → `design_refine`, प्रत्येक चरण के लिए केंद्रित प्रॉम्प्ट - स्टाइल गाइड — 50+ इन-बिल्ट स्टाइल (glassmorphism, brutalist, retro आदि), टैग-आधारित फ़ज़ी मैचिंग, प्लानिंग और जनरेशन में एकीकृत - मल्टी-मॉडल क्षमता प्रोफ़ाइल — मॉडल स्तर के अनुसार थिंकिंग मोड, प्रयास और प्रॉम्प्ट रूप को स्वचालित रूप से अनुकूलित करता है -- बिल्ट-इन एजेंट रनटाइम (`agent-native`, Zig NAPI) + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini प्रदाता +- बिल्ट-इन एजेंट रनटाइम (Rust) + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini प्रदाता - चीनी LLM प्रदाताओं के लिए Anthropic फ़ॉर्मेट पासथ्रू — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Git इंटीग्रेशन** @@ -309,7 +306,7 @@ OpenPencil को पूरी तरह **Rust** में नए सिरे | **वेब पेलोड** | JS + WASM बंडल | **8.2 MB** wasm / **2.18 MB** gzip वायर पर | | **रेंडरिंग** | CanvasKit/Skia वेब पर | **हर** टार्गेट पर एक GPU-एक्सेलेरेटेड Skia बैकएंड | | **मेमोरी** | JavaScript GC पॉज़ | कोई GC नहीं — Rust ओनरशिप, अनुमानित लेटेंसी | -| **कोडबेस** | वेब स्टैक + Electron + Zig NAPI एजेंट | एक Rust वर्कस्पेस: editor · CLI · MCP · AI · codegen · Figma · Git | +| **कोडबेस** | वेब स्टैक + Electron | एक Rust वर्कस्पेस: editor · CLI · MCP · AI · codegen · Figma · Git | | **टार्गेट** | Web + desktop, दो अलग स्टैक | Desktop (macOS/Win/Linux) · mobile (iOS/Android) · browser — एक कोर | **मापे गए सुधार** @@ -382,15 +379,20 @@ openpencil/ ## स्क्रिप्ट ```bash -bun --bun run dev # डेव सर्वर (पोर्ट 3000) -bun --bun run build # प्रोडक्शन बिल्ड -bun --bun run test # टेस्ट चलाएँ (Vitest) -npx tsc --noEmit # टाइप चेक -bun run bump # सभी package.json में वर्शन सिंक करें -bun run electron:dev # Electron डेव -bun run electron:build # Electron पैकेज -bun run cli:dev # सोर्स से CLI चलाएँ -bun run cli:compile # CLI को dist में कंपाइल करें +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## योगदान @@ -400,7 +402,7 @@ bun run cli:compile # CLI को dist में कंपाइल कर 1. फ़ोर्क और क्लोन करें 2. वर्शन सिंक सेटअप करें: `git config core.hooksPath .githooks` 3. ब्रांच बनाएँ: `git checkout -b feat/my-feature` -4. चेक चलाएँ: `npx tsc --noEmit && bun --bun run test` +4. चेक चलाएँ: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. [Conventional Commits](https://www.conventionalcommits.org/) के साथ कमिट करें: `feat(canvas): add rotation snapping` 6. `main` के विरुद्ध PR खोलें diff --git a/README.id.md b/README.id.md index 3a7235c52..f2ecb61ea 100644 --- a/README.id.md +++ b/README.id.md @@ -105,20 +105,17 @@ Ekspor dari satu file `.op` ke React + Tailwind, HTML + CSS, Vue, Svelte, Flutte ## Mulai Cepat ```bash -# Instal dependensi -bun install - -# Jalankan server pengembangan di http://localhost:3000 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` Atau jalankan sebagai aplikasi desktop: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **Prasyarat:** [Bun](https://bun.sh/) >= 1.0 dan [Node.js](https://nodejs.org/) >= 18 +> **Prasyarat:** [Rust](https://www.rust-lang.org/) (stable) untuk membangun produk. [Bun](https://bun.sh/) >= 1.0 dan [Node.js](https://nodejs.org/) >= 18 hanya diperlukan untuk web SDK di `packages/`. ### Docker @@ -254,7 +251,7 @@ Mendukung tiga metode input: string inline, `@filepath` (baca dari file), atau ` - Alur kerja berlapis — `design_skeleton` → `design_content` → `design_refine` dengan prompt yang terfokus per fase - Panduan Gaya — 50+ gaya bawaan (glassmorphism, brutalist, retro, dll.) dengan pencocokan fuzzy berbasis tag, terintegrasi ke perencanaan dan pembuatan - Profil kemampuan multi-model — secara otomatis menyesuaikan mode berpikir, upaya, dan bentuk prompt berdasarkan tingkat model -- Runtime agen bawaan (`agent-native`, Zig NAPI) + penyedia Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini +- Runtime agen bawaan (Rust) + penyedia Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini - Passthrough format Anthropic untuk penyedia LLM Tiongkok — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Integrasi Git** @@ -309,7 +306,7 @@ OpenPencil sedang ditulis ulang dari awal dalam **Rust** ([#129](https://github. | **Payload web** | Bundle JS + WASM | **8.2 MB** wasm / **2.18 MB** gzip melalui jaringan | | **Rendering** | CanvasKit/Skia di web | Satu backend Skia berakselerasi GPU di **setiap** target | | **Memori** | Jeda JavaScript GC | Tanpa GC — kepemilikan Rust, latensi yang dapat diprediksi | -| **Basis kode** | Web stack + Electron + Zig NAPI agent | Satu workspace Rust: editor · CLI · MCP · AI · codegen · Figma · Git | +| **Basis kode** | Web stack + Electron | Satu workspace Rust: editor · CLI · MCP · AI · codegen · Figma · Git | | **Target** | Web + desktop, dua stack terpisah | Desktop (macOS/Win/Linux) · mobile (iOS/Android) · browser — satu inti | **Peningkatan terukur** @@ -382,15 +379,20 @@ openpencil/ ## Skrip ```bash -bun --bun run dev # Server pengembangan (port 3000) -bun --bun run build # Build produksi -bun --bun run test # Jalankan pengujian (Vitest) -npx tsc --noEmit # Pemeriksaan tipe -bun run bump # Sinkronisasi versi di semua package.json -bun run electron:dev # Pengembangan Electron -bun run electron:build # Paket Electron -bun run cli:dev # Jalankan CLI dari sumber -bun run cli:compile # Kompilasi CLI ke dist +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## Berkontribusi @@ -400,7 +402,7 @@ Kontribusi sangat disambut! Lihat [CLAUDE.md](./CLAUDE.md) untuk detail arsitekt 1. Fork dan clone 2. Atur sinkronisasi versi: `git config core.hooksPath .githooks` 3. Buat cabang: `git checkout -b feat/my-feature` -4. Jalankan pemeriksaan: `npx tsc --noEmit && bun --bun run test` +4. Jalankan pemeriksaan: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. Commit dengan [Conventional Commits](https://www.conventionalcommits.org/): `feat(canvas): add rotation snapping` 6. Buka PR ke `main` diff --git a/README.ja.md b/README.ja.md index c3daf7876..d16af6130 100644 --- a/README.ja.md +++ b/README.ja.md @@ -105,20 +105,17 @@ Web アプリ + Electron による macOS・Windows・Linux ネイティブデス ## クイックスタート ```bash -# 依存関係をインストール -bun install - -# http://localhost:3000 で開発サーバーを起動 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` またはデスクトップアプリとして実行: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **前提条件:** [Bun](https://bun.sh/) >= 1.0 および [Node.js](https://nodejs.org/) >= 18 +> **前提条件:** 製品のビルドには [Rust](https://www.rust-lang.org/)(stable)が必要です。[Bun](https://bun.sh/) >= 1.0 および [Node.js](https://nodejs.org/) >= 18 は `packages/` 配下の web SDK にのみ必要です。 ### Docker @@ -254,7 +251,7 @@ cat design.dsl | op design - # stdin からパイプ入力 - レイヤードワークフロー — `design_skeleton` → `design_content` → `design_refine`、各フェーズごとに焦点を絞ったプロンプト - スタイルガイド — 50+ のビルトインスタイル(glassmorphism、brutalist、retro など)、タグベースのファジーマッチング対応、プランニングと生成に統合 - マルチモデル能力プロファイル — モデル階層に応じてシンキングモード、エフォート、プロンプト形状を自動適応 -- ビルトインエージェントランタイム(`agent-native`、Zig NAPI)+ Anthropic、Claude Agent SDK、OpenCode、Codex、Copilot、Gemini プロバイダー +- ビルトインエージェントランタイム(Rust)+ Anthropic、Claude Agent SDK、OpenCode、Codex、Copilot、Gemini プロバイダー - 中国系 LLM プロバイダー向け Anthropic フォーマットパススルー — Kimi、Zhipu、GLM、DouBao、Ark、Bailian/DashScope、ModelScope、Coding Plans **Git 統合** @@ -309,7 +306,7 @@ OpenPencil は **Rust** で一から書き直されています ([#129](https:// | **Web ペイロード** | JS + WASM バンドル | **8.2 MB** wasm / **2.18 MB** gzip(転送時) | | **レンダリング** | Web 上の CanvasKit/Skia | **すべての**ターゲットで単一の GPU アクセラレーション Skia バックエンド | | **メモリ** | JavaScript GC によるポーズ | GC なし — Rust 所有権モデル、予測可能なレイテンシ | -| **コードベース** | Web スタック + Electron + Zig NAPI エージェント | 単一 Rust ワークスペース:エディター・CLI・MCP・AI・codegen・Figma・Git | +| **コードベース** | Web スタック + Electron | 単一 Rust ワークスペース:エディター・CLI・MCP・AI・codegen・Figma・Git | | **ターゲット** | Web + デスクトップ、別々のスタック | デスクトップ(macOS/Win/Linux)・モバイル(iOS/Android)・ブラウザ — 単一コア | **実測改善値** @@ -382,15 +379,20 @@ openpencil/ ## スクリプト ```bash -bun --bun run dev # 開発サーバー(ポート 3000) -bun --bun run build # 本番ビルド -bun --bun run test # テストの実行(Vitest) -npx tsc --noEmit # 型チェック -bun run bump # すべての package.json のバージョンを同期 -bun run electron:dev # Electron 開発モード -bun run electron:build # Electron パッケージング -bun run cli:dev # ソースから CLI を実行 -bun run cli:compile # CLI を dist にコンパイル +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## コントリビュート @@ -400,7 +402,7 @@ bun run cli:compile # CLI を dist にコンパイル 1. フォークしてクローン 2. バージョン同期を設定:`git config core.hooksPath .githooks` 3. ブランチを作成:`git checkout -b feat/my-feature` -4. チェックを実行:`npx tsc --noEmit && bun --bun run test` +4. チェックを実行:`cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. [Conventional Commits](https://www.conventionalcommits.org/) 形式でコミット:`feat(canvas): add rotation snapping` 6. `main` ブランチに PR を作成 diff --git a/README.ko.md b/README.ko.md index 44980f137..dfb8940e6 100644 --- a/README.ko.md +++ b/README.ko.md @@ -105,20 +105,17 @@ Claude Code, Codex, Gemini, OpenCode, Kiro 또는 Copilot CLI에 원클릭 설 ## 빠른 시작 ```bash -# 의존성 설치 -bun install - -# http://localhost:3000 에서 개발 서버 시작 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` 또는 데스크톱 앱으로 실행: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **필수 조건:** [Bun](https://bun.sh/) >= 1.0 및 [Node.js](https://nodejs.org/) >= 18 +> **필수 조건:** 제품을 빌드하려면 [Rust](https://www.rust-lang.org/)(stable)가 필요합니다. [Bun](https://bun.sh/) >= 1.0 및 [Node.js](https://nodejs.org/) >= 18은 `packages/` 아래의 web SDK에만 필요합니다. ### Docker @@ -254,7 +251,7 @@ cat design.dsl | op design - # stdin에서 파이프 입력 - 계층적 워크플로 — `design_skeleton` → `design_content` → `design_refine`, 각 단계에 집중된 프롬프트 사용 - 스타일 가이드 — 50개 이상의 내장 스타일(glassmorphism, brutalist, retro 등), 태그 기반 퍼지 매칭 지원, 플래닝과 생성에 통합 - 멀티 모델 역량 프로파일 — 모델 등급별로 싱킹 모드, 노력도, 프롬프트 형태를 자동 적응 -- 내장 에이전트 런타임(`agent-native`, Zig NAPI) + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini 제공자 +- 내장 에이전트 런타임(Rust) + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini 제공자 - 중국 LLM 제공자를 위한 Anthropic 형식 패스스루 — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Git 통합** @@ -309,7 +306,7 @@ OpenPencil은 **Rust**로 처음부터 다시 작성되고 있습니다 ([#129]( | **웹 페이로드** | JS + WASM 번들 | **8.2 MB** wasm / 전송 시 **2.18 MB** gzip | | **렌더링** | 웹에서 CanvasKit/Skia | **모든** 타깃에서 GPU 가속 Skia 백엔드 하나 | | **메모리** | JavaScript GC 일시 중단 | GC 없음 — Rust 소유권, 예측 가능한 레이턴시 | -| **코드베이스** | 웹 스택 + Electron + Zig NAPI 에이전트 | 단일 Rust 워크스페이스: 에디터 · CLI · MCP · AI · 코드젠 · Figma · Git | +| **코드베이스** | 웹 스택 + Electron | 단일 Rust 워크스페이스: 에디터 · CLI · MCP · AI · 코드젠 · Figma · Git | | **지원 플랫폼** | 웹 + 데스크톱, 두 개의 별도 스택 | 데스크톱 (macOS/Win/Linux) · 모바일 (iOS/Android) · 브라우저 — 코어 하나 | **측정된 개선 사항** @@ -382,15 +379,20 @@ openpencil/ ## 스크립트 ```bash -bun --bun run dev # 개발 서버 (포트 3000) -bun --bun run build # 프로덕션 빌드 -bun --bun run test # 테스트 실행 (Vitest) -npx tsc --noEmit # 타입 검사 -bun run bump # 모든 package.json에 버전 동기화 -bun run electron:dev # Electron 개발 모드 -bun run electron:build # Electron 패키징 -bun run cli:dev # 소스에서 CLI 실행 -bun run cli:compile # CLI를 dist로 컴파일 +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## 기여하기 @@ -400,7 +402,7 @@ bun run cli:compile # CLI를 dist로 컴파일 1. 포크 후 클론 2. 버전 동기화 설정: `git config core.hooksPath .githooks` 3. 브랜치 생성: `git checkout -b feat/my-feature` -4. 검사 실행: `npx tsc --noEmit && bun --bun run test` +4. 검사 실행: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. [Conventional Commits](https://www.conventionalcommits.org/) 형식으로 커밋: `feat(canvas): add rotation snapping` 6. `main` 브랜치에 PR 생성 diff --git a/README.md b/README.md index 52e3e2773..1ad0bb2ab 100644 --- a/README.md +++ b/README.md @@ -172,20 +172,17 @@ git submodule update --init --recursive ## Quick Start (Development) ```bash -# Install dependencies -bun install - -# Start dev server at http://localhost:3000 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` Or run as a desktop app: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **Prerequisites:** [Bun](https://bun.sh/) >= 1.0 and [Node.js](https://nodejs.org/) >= 18. Optional: [Zig](https://ziglang.org/) >= 0.14 for building `agent-native` from source (a prebuilt binary will be downloaded automatically if Zig is not installed). +> **Prerequisites:** [Rust](https://www.rust-lang.org/) (stable) to build the product. [Bun](https://bun.sh/) >= 1.0 and [Node.js](https://nodejs.org/) >= 18 are only needed for the web SDK under `packages/`. ### Docker @@ -325,7 +322,7 @@ Supports three input methods: inline string, `@filepath` (read from file), or `- - Layered workflow — `design_skeleton` → `design_content` → `design_refine` with focused prompts per phase - Style Guides — 50+ built-in styles (glassmorphism, brutalist, retro, etc.) with tag-based fuzzy matching, wired into planning and generation - Multi-model capability profiles — auto-adapts thinking mode, effort, and prompt shape per model tier -- Built-in agent runtime (`agent-native`, Zig NAPI) + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini providers +- Built-in Rust agent runtime + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini providers - Anthropic-format passthrough for Chinese LLM providers — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Git Integration** @@ -366,7 +363,7 @@ Supports three input methods: inline string, `@filepath` (read from file), or `- | **Server** | Nitro | | **Desktop** | Electron 35 | | **CLI** | `op` — terminal control, batch design DSL | -| **AI** | agent-native (Zig NAPI) · Anthropic SDK · Claude Agent SDK · OpenCode SDK · Copilot SDK | +| **AI** | Built-in Rust runtime · Anthropic SDK · Claude Agent SDK · OpenCode SDK · Copilot SDK | | **Runtime** | Bun · Vite 7 | | **Lint** | oxlint · oxfmt | | **File format** | `.op` — JSON-based, human-readable, Git-friendly | @@ -382,7 +379,7 @@ OpenPencil is being rewritten from the ground up in **Rust** ([#129](https://git | **Web payload** | JS + WASM bundle | **8.2 MB** wasm / **2.18 MB** gzip over the wire | | **Rendering** | CanvasKit/Skia on web | One GPU-accelerated Skia backend on **every** target | | **Memory** | JavaScript GC pauses | No GC — Rust ownership, predictable latency | -| **Codebase** | Web stack + Electron + Zig NAPI agent | One Rust workspace: editor · CLI · MCP · AI · codegen · Figma · Git | +| **Codebase** | Web stack + Electron | One Rust workspace: editor · CLI · MCP · AI · codegen · Figma · Git | | **Targets** | Web + desktop, two separate stacks | Desktop (macOS/Win/Linux) · mobile (iOS/Android) · browser — one core | **Measured improvements** @@ -434,8 +431,7 @@ openpencil/ │ ├── pen-renderer/ Standalone CanvasKit/Skia renderer │ ├── pen-mcp/ MCP server — tools, routes, document manager │ ├── pen-sdk/ Umbrella SDK (re-exports all packages) -│ ├── pen-ai-skills/ AI prompt skill engine (phase-driven prompt loading) -│ └── agent-native/ Native AI agent runtime (Zig NAPI, multi-provider, teams) +│ └── pen-ai-skills/ AI prompt skill engine (phase-driven prompt loading) └── .githooks/ Pre-commit version sync from branch name ``` @@ -460,18 +456,20 @@ openpencil/ ## Scripts ```bash -bun --bun run dev # Dev server (port 3000) -bun --bun run build # Production build -bun --bun run test # Run tests (Vitest) -npx tsc --noEmit # Type check -bun run lint # Lint (oxlint) -bun run format # Format (oxfmt) -bun run bump # Sync version across all package.json -bun run electron:dev # Electron dev -bun run electron:build # Electron package -bun run cli:dev # Run CLI from source -bun run cli:compile # Compile CLI to dist -bun run mcp:dev # Run MCP server from source +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ### Rust subsystem (Step 0+) @@ -484,11 +482,11 @@ rustup toolchain install 1.94 rustup target add wasm32-unknown-unknown # build / test / lint -bun run cargo:check -bun run cargo:test -bun run cargo:clippy -bun run cargo:wasm-check # kickoff §1.2 wasm32 invariant -bun run cargo:deny # cargo-deny (native + wasm32 bans; CI uses cargo-deny-action@v2) +cargo check --workspace +cargo test --workspace +cargo clippy --workspace --all-targets -- -D warnings +cargo check --target wasm32-unknown-unknown -p op-host-web --no-default-features --features web # kickoff §1.2 wasm32 invariant +cargo deny check && cargo deny --target wasm32-unknown-unknown check bans # cargo-deny (native + wasm32 bans; CI uses cargo-deny-action@v2) ``` **Entry crates (`crates/` — build targets):** @@ -513,7 +511,7 @@ Contributions are welcome! See [CLAUDE.md](./CLAUDE.md) for architecture details 1. Fork and clone 2. Set up version sync: `git config core.hooksPath .githooks` 3. Create a branch: `git checkout -b feat/my-feature` -4. Run checks: `npx tsc --noEmit && bun --bun run test` +4. Run checks: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. Commit with [Conventional Commits](https://www.conventionalcommits.org/): `feat(canvas): add rotation snapping` 6. Open a PR against `main` @@ -534,7 +532,7 @@ Contributions are welcome! See [CLAUDE.md](./CLAUDE.md) for architecture details - [x] Headless design engine (`pen-engine`) + React UI SDK (`pen-react`) - [x] Style Guides with tag-based matching and MCP tools - [x] Concurrent Agent Teams with delegate tool and canvas indicators -- [x] Native agent runtime (`agent-native` — Zig NAPI) +- [x] Built-in Rust agent runtime - [x] Git integration — clone, branch, push/pull, folder-mode three-way merge - [x] Canvas raster export (PNG / JPEG / WEBP / PDF) - [x] Rust shell — Step 1a (G1 shared Skia context) on `v0.8.0`: `SharedSkiaContext` + `NativeBackend` (Jian-`DrawOp`-backed) + shell-core re-exports `jian_core::gesture::*` (events stay consistent with Jian — no OP-side translation layer per v19.4) + `basic_window` demo, with the multi-platform CI matrix green (macOS aarch64 + x86_64, Linux x86_64 + aarch64 cross, Windows x86_64 + aarch64 cross, iOS aarch64 + sim, Android aarch64 + x86_64, wasm32). Spec `v19.5` FROZEN; `vendor/jian` pinned at `c4a794dc`. OP visual model (single-page + infinite canvas canonical / multi-page also supported / no routing / Figma import auto-converts) and OP chrome (toolbars / panels — Rust-only) deferred to Step 1c+. diff --git a/README.pt.md b/README.pt.md index 2d553cba6..0b637e23b 100644 --- a/README.pt.md +++ b/README.pt.md @@ -105,20 +105,17 @@ Exporte de um único arquivo `.op` para React + Tailwind, HTML + CSS, Vue, Svelt ## Início Rápido ```bash -# Instalar dependências -bun install - -# Iniciar servidor de desenvolvimento em http://localhost:3000 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` Ou executar como aplicativo desktop: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **Pré-requisitos:** [Bun](https://bun.sh/) >= 1.0 e [Node.js](https://nodejs.org/) >= 18 +> **Pré-requisitos:** [Rust](https://www.rust-lang.org/) (stable) para compilar o produto. [Bun](https://bun.sh/) >= 1.0 e [Node.js](https://nodejs.org/) >= 18 são necessários apenas para o SDK web em `packages/`. ### Docker @@ -254,7 +251,7 @@ Suporta três métodos de entrada: string inline, `@filepath` (ler de arquivo) o - Fluxo em camadas — `design_skeleton` → `design_content` → `design_refine` com prompts focados por fase - Guias de estilo — mais de 50 estilos integrados (glassmorphism, brutalist, retro, etc.) com correspondência fuzzy baseada em tags, integrados ao planejamento e geração - Perfis de capacidade multi-modelo — adapta automaticamente o modo de pensamento, o esforço e a forma do prompt conforme o nível do modelo -- Runtime de agente integrado (`agent-native`, Zig NAPI) + provedores Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini +- Runtime de agente integrado (Rust) + provedores Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini - Passthrough no formato Anthropic para provedores de LLMs chineses — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Integração com Git** @@ -309,7 +306,7 @@ O OpenPencil está sendo reescrito do zero em **Rust** ([#129](https://github.co | **Payload web** | Bundle JS + WASM | **8.2 MB** wasm / **2.18 MB** gzip transferido pela rede | | **Renderização** | CanvasKit/Skia na web | Um único backend Skia com aceleração GPU em **todos** os alvos | | **Memória** | Pausas do JavaScript GC | Sem GC — ownership Rust, latência previsível | -| **Base de código** | Web stack + Electron + Zig NAPI agent | Um workspace Rust: editor · CLI · MCP · AI · codegen · Figma · Git | +| **Base de código** | Web stack + Electron | Um workspace Rust: editor · CLI · MCP · AI · codegen · Figma · Git | | **Plataformas** | Web + desktop, duas stacks separadas | Desktop (macOS/Win/Linux) · mobile (iOS/Android) · navegador — um núcleo | **Melhorias mensuradas** @@ -382,15 +379,20 @@ openpencil/ ## Scripts ```bash -bun --bun run dev # Servidor de desenvolvimento (porta 3000) -bun --bun run build # Build de produção -bun --bun run test # Executar testes (Vitest) -npx tsc --noEmit # Verificação de tipos -bun run bump # Sincronizar versão em todos os package.json -bun run electron:dev # Desenvolvimento com Electron -bun run electron:build # Empacotamento do Electron -bun run cli:dev # Executar CLI a partir do código-fonte -bun run cli:compile # Compilar CLI para dist +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## Contribuindo @@ -400,7 +402,7 @@ Contribuições são bem-vindas! Consulte o [CLAUDE.md](./CLAUDE.md) para detalh 1. Faça fork e clone 2. Configure a sincronização de versão: `git config core.hooksPath .githooks` 3. Crie uma branch: `git checkout -b feat/my-feature` -4. Execute as verificações: `npx tsc --noEmit && bun --bun run test` +4. Execute as verificações: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. Faça commit com [Conventional Commits](https://www.conventionalcommits.org/): `feat(canvas): add rotation snapping` 6. Abra um PR contra `main` diff --git a/README.ru.md b/README.ru.md index 629f23e01..114096641 100644 --- a/README.ru.md +++ b/README.ru.md @@ -105,20 +105,17 @@ ## Быстрый старт ```bash -# Установить зависимости -bun install - -# Запустить сервер разработки на http://localhost:3000 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` Или запустить как десктопное приложение: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **Требования:** [Bun](https://bun.sh/) >= 1.0 и [Node.js](https://nodejs.org/) >= 18 +> **Требования:** [Rust](https://www.rust-lang.org/) (stable) для сборки продукта. [Bun](https://bun.sh/) >= 1.0 и [Node.js](https://nodejs.org/) >= 18 нужны только для веб-SDK в `packages/`. ### Docker @@ -254,7 +251,7 @@ cat design.dsl | op design - # Передача через stdin - Послойный рабочий процесс — `design_skeleton` → `design_content` → `design_refine` со сфокусированными промптами на каждой фазе - Руководства по стилю — 50+ встроенных стилей (glassmorphism, brutalist, retro и т. д.) с нечётким сопоставлением по тегам, интегрированным в планирование и генерацию - Профили возможностей мультимодели — автоматически подстраивает режим размышления, уровень усилий и форму промпта в зависимости от уровня модели -- Встроенный рантайм агентов (`agent-native`, Zig NAPI) + провайдеры Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini +- Встроенный рантайм агентов (Rust) + провайдеры Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini - Проброс формата Anthropic для китайских провайдеров LLM — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Интеграция с Git** @@ -309,7 +306,7 @@ OpenPencil переписывается с нуля на **Rust** ([#129](https: | **Объём для веба** | JS + WASM бандл | **8.2 MB** wasm / **2.18 MB** gzip по сети | | **Рендеринг** | CanvasKit/Skia на вебе | Единый GPU-ускоренный Skia бэкенд на **каждой** платформе | | **Память** | Паузы JavaScript GC | Без GC — владение Rust, предсказуемая задержка | -| **Кодовая база** | Веб-стек + Electron + Zig NAPI агент | Одно Rust-пространство: редактор · CLI · MCP · AI · кодген · Figma · Git | +| **Кодовая база** | Веб-стек + Electron | Одно Rust-пространство: редактор · CLI · MCP · AI · кодген · Figma · Git | | **Платформы** | Веб + десктоп, два раздельных стека | Десктоп (macOS/Win/Linux) · мобильные (iOS/Android) · браузер — одно ядро | **Измеренные улучшения** @@ -382,15 +379,20 @@ openpencil/ ## Скрипты ```bash -bun --bun run dev # Сервер разработки (порт 3000) -bun --bun run build # Сборка для продакшена -bun --bun run test # Запустить тесты (Vitest) -npx tsc --noEmit # Проверка типов -bun run bump # Синхронизация версий во всех package.json -bun run electron:dev # Разработка Electron -bun run electron:build # Упаковка Electron -bun run cli:dev # Запуск CLI из исходников -bun run cli:compile # Компиляция CLI в dist +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## Участие в разработке @@ -400,7 +402,7 @@ bun run cli:compile # Компиляция CLI в dist 1. Сделайте форк и клонируйте репозиторий 2. Настройте синхронизацию версий: `git config core.hooksPath .githooks` 3. Создайте ветку: `git checkout -b feat/my-feature` -4. Запустите проверки: `npx tsc --noEmit && bun --bun run test` +4. Запустите проверки: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. Сделайте коммит в формате [Conventional Commits](https://www.conventionalcommits.org/): `feat(canvas): add rotation snapping` 6. Откройте PR в ветку `main` diff --git a/README.th.md b/README.th.md index b7779c041..33a4764ad 100644 --- a/README.th.md +++ b/README.th.md @@ -105,20 +105,17 @@ Orchestrator แบ่งหน้าที่ซับซ้อนออกเ ## เริ่มต้นอย่างรวดเร็ว ```bash -# ติดตั้ง dependencies -bun install - -# เริ่ม dev server ที่ http://localhost:3000 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` หรือรันเป็นแอปพลิเคชัน Desktop: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **ข้อกำหนดเบื้องต้น:** [Bun](https://bun.sh/) >= 1.0 และ [Node.js](https://nodejs.org/) >= 18 +> **ข้อกำหนดเบื้องต้น:** ต้องใช้ [Rust](https://www.rust-lang.org/) (stable) เพื่อ build ผลิตภัณฑ์ [Bun](https://bun.sh/) >= 1.0 และ [Node.js](https://nodejs.org/) >= 18 จำเป็นเฉพาะสำหรับ web SDK ใน `packages/` เท่านั้น ### Docker @@ -254,7 +251,7 @@ cat design.dsl | op design - # Pipe จาก stdin - Layered workflow — `design_skeleton` → `design_content` → `design_refine` พร้อม prompt ที่เน้นเฉพาะในแต่ละเฟส - Style Guides — สไตล์ในตัวกว่า 50 แบบ (glassmorphism, brutalist, retro ฯลฯ) พร้อม fuzzy matching ตาม tag ใช้ในการวางแผนและการสร้าง - โปรไฟล์ความสามารถหลายโมเดล — ปรับโหมดการคิด ความพยายาม และรูปแบบ prompt อัตโนมัติตามระดับโมเดล -- Agent runtime ในตัว (`agent-native`, Zig NAPI) + ผู้ให้บริการ Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini +- Agent runtime ในตัว (Rust) + ผู้ให้บริการ Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini - Passthrough รูปแบบ Anthropic สำหรับผู้ให้บริการ LLM จีน — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **การเชื่อมต่อ Git** @@ -309,7 +306,7 @@ OpenPencil กำลังถูกเขียนใหม่ตั้งแต | **ขนาด payload บนเว็บ** | JS + WASM bundle | **8.2 MB** wasm / **2.18 MB** gzip บนเครือข่าย | | **การ Render** | CanvasKit/Skia บนเว็บ | Skia backend เดียวที่เร่งด้วย GPU บน **ทุก** เป้าหมาย | | **หน่วยความจำ** | JavaScript GC หยุดชั่วคราว | ไม่มี GC — Rust ownership latency คาดเดาได้ | -| **Codebase** | Web stack + Electron + Zig NAPI agent | Rust workspace เดียว: editor · CLI · MCP · AI · codegen · Figma · Git | +| **Codebase** | Web stack + Electron | Rust workspace เดียว: editor · CLI · MCP · AI · codegen · Figma · Git | | **เป้าหมาย** | Web + desktop สอง stack แยกกัน | Desktop (macOS/Win/Linux) · mobile (iOS/Android) · browser — one core | **ผลการวัดที่ได้จริง** @@ -382,15 +379,20 @@ openpencil/ ## Scripts ```bash -bun --bun run dev # Dev server (port 3000) -bun --bun run build # Production build -bun --bun run test # รันการทดสอบ (Vitest) -npx tsc --noEmit # ตรวจสอบ type -bun run bump # Sync version ในทุก package.json -bun run electron:dev # Electron dev -bun run electron:build # Electron package -bun run cli:dev # รัน CLI จาก source -bun run cli:compile # คอมไพล์ CLI ไปยัง dist +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## การมีส่วนร่วม @@ -400,7 +402,7 @@ bun run cli:compile # คอมไพล์ CLI ไปยัง dist 1. Fork และ clone 2. ตั้งค่า version sync: `git config core.hooksPath .githooks` 3. สร้าง branch: `git checkout -b feat/my-feature` -4. รันการตรวจสอบ: `npx tsc --noEmit && bun --bun run test` +4. รันการตรวจสอบ: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. Commit ด้วย [Conventional Commits](https://www.conventionalcommits.org/): `feat(canvas): add rotation snapping` 6. เปิด PR เข้า `main` diff --git a/README.tr.md b/README.tr.md index 1f6ae6eff..d6c3ca854 100644 --- a/README.tr.md +++ b/README.tr.md @@ -105,20 +105,17 @@ Tek bir `.op` dosyasından React + Tailwind, HTML + CSS, Vue, Svelte, Flutter, S ## Hızlı Başlangıç ```bash -# Bağımlılıkları yükle -bun install - -# http://localhost:3000 adresinde geliştirme sunucusunu başlat -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` Ya da masaüstü uygulaması olarak çalıştırın: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **Ön koşullar:** [Bun](https://bun.sh/) >= 1.0 ve [Node.js](https://nodejs.org/) >= 18 +> **Ön koşullar:** Ürünü derlemek için [Rust](https://www.rust-lang.org/) (stable). [Bun](https://bun.sh/) >= 1.0 ve [Node.js](https://nodejs.org/) >= 18 yalnızca `packages/` altındaki web SDK için gereklidir. ### Docker @@ -254,7 +251,7 @@ cat design.dsl | op design - # stdin'den pipe ile besle - Katmanlı iş akışı — `design_skeleton` → `design_content` → `design_refine`, her aşamada odaklı prompt'lar - Stil Rehberleri — 50+ yerleşik stil (glassmorphism, brutalist, retro vb.), etiket tabanlı bulanık eşleştirme ile planlama ve üretime entegre - Çoklu model yetenek profilleri — model katmanına göre düşünme modunu, çabayı ve prompt biçimini otomatik olarak uyarlar -- Yerleşik ajan çalışma ortamı (`agent-native`, Zig NAPI) + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini sağlayıcıları +- Yerleşik ajan çalışma ortamı (Rust) + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini sağlayıcıları - Çinli LLM sağlayıcıları için Anthropic formatlı geçiş — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Git Entegrasyonu** @@ -309,7 +306,7 @@ OpenPencil, sıfırdan **Rust** ile yeniden yazılıyor ([#129](https://github.c | **Web yükü** | JS + WASM paketi | **8.2 MB** wasm / **2.18 MB** gzip ile transfer | | **Görüntü işleme** | Web'de CanvasKit/Skia | **Her** hedefte tek GPU hızlandırmalı Skia arka ucu | | **Bellek** | JavaScript GC duraklamaları | GC yok — Rust sahiplik modeli, öngörülebilir gecikme | -| **Kod tabanı** | Web yığını + Electron + Zig NAPI ajan | Tek Rust çalışma alanı: editör · CLI · MCP · AI · codegen · Figma · Git | +| **Kod tabanı** | Web yığını + Electron | Tek Rust çalışma alanı: editör · CLI · MCP · AI · codegen · Figma · Git | | **Hedefler** | Web + masaüstü, iki ayrı yığın | Masaüstü (macOS/Win/Linux) · mobil (iOS/Android) · tarayıcı — tek çekirdek | **Ölçülen iyileştirmeler** @@ -382,15 +379,20 @@ openpencil/ ## Betikler ```bash -bun --bun run dev # Geliştirme sunucusu (port 3000) -bun --bun run build # Üretim derlemesi -bun --bun run test # Testleri çalıştır (Vitest) -npx tsc --noEmit # Tür denetimi -bun run bump # Tüm package.json dosyalarında sürümü eşitle -bun run electron:dev # Electron geliştirme modu -bun run electron:build # Electron paketleme -bun run cli:dev # CLI'yi kaynaktan çalıştır -bun run cli:compile # CLI'yi dist'e derle +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## Katkıda Bulunma @@ -400,7 +402,7 @@ Katkılarınızı bekliyoruz! Mimari ayrıntılar ve kod stili için [CLAUDE.md] 1. Fork'layın ve klonlayın 2. Sürüm eşitlemeyi ayarlayın: `git config core.hooksPath .githooks` 3. Dal oluşturun: `git checkout -b feat/my-feature` -4. Kontrolleri çalıştırın: `npx tsc --noEmit && bun --bun run test` +4. Kontrolleri çalıştırın: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. [Conventional Commits](https://www.conventionalcommits.org/) formatıyla commit yapın: `feat(canvas): add rotation snapping` 6. `main` dalına PR açın diff --git a/README.vi.md b/README.vi.md index 24f1ddb84..39a38e3ed 100644 --- a/README.vi.md +++ b/README.vi.md @@ -105,20 +105,17 @@ Xuất từ một tệp `.op` duy nhất sang React + Tailwind, HTML + CSS, Vue, ## Bắt đầu nhanh ```bash -# Cài đặt các phụ thuộc -bun install - -# Khởi động máy chủ phát triển tại http://localhost:3000 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` Hoặc chạy dưới dạng ứng dụng desktop: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **Yêu cầu:** [Bun](https://bun.sh/) >= 1.0 và [Node.js](https://nodejs.org/) >= 18 +> **Yêu cầu:** [Rust](https://www.rust-lang.org/) (stable) để build sản phẩm. [Bun](https://bun.sh/) >= 1.0 và [Node.js](https://nodejs.org/) >= 18 chỉ cần cho web SDK trong `packages/`. ### Docker @@ -254,7 +251,7 @@ Hỗ trợ ba phương thức nhập liệu: chuỗi inline, `@filepath` (đọc - Quy trình phân lớp — `design_skeleton` → `design_content` → `design_refine` với prompt tập trung cho từng giai đoạn - Style Guides — hơn 50 style tích hợp (glassmorphism, brutalist, retro, v.v.) với khớp mờ dựa trên tag, tích hợp vào lập kế hoạch và tạo - Hồ sơ năng lực đa mô hình — tự động điều chỉnh chế độ tư duy, nỗ lực và hình thức prompt theo cấp mô hình -- Runtime tác nhân tích hợp (`agent-native`, Zig NAPI) + nhà cung cấp Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini +- Runtime tác nhân tích hợp (Rust) + nhà cung cấp Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini - Chuyển tiếp định dạng Anthropic cho các nhà cung cấp LLM Trung Quốc — Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans **Tích hợp Git** @@ -309,7 +306,7 @@ OpenPencil đang được viết lại từ đầu bằng **Rust** ([#129](https | **Tải trọng web** | Bundle JS + WASM | **8.2 MB** wasm / **2.18 MB** gzip qua mạng | | **Dựng hình** | CanvasKit/Skia trên web | Một backend Skia tăng tốc GPU trên **mọi** nền tảng | | **Bộ nhớ** | Dừng do JavaScript GC | Không có GC — sở hữu Rust, độ trễ có thể dự đoán | -| **Codebase** | Web stack + Electron + Zig NAPI agent | Một Rust workspace: editor · CLI · MCP · AI · codegen · Figma · Git | +| **Codebase** | Web stack + Electron | Một Rust workspace: editor · CLI · MCP · AI · codegen · Figma · Git | | **Nền tảng** | Web + desktop, hai stack riêng biệt | Desktop (macOS/Win/Linux) · mobile (iOS/Android) · browser — một nhân | **Cải thiện đã đo lường** @@ -382,15 +379,20 @@ openpencil/ ## Scripts ```bash -bun --bun run dev # Máy chủ phát triển (cổng 3000) -bun --bun run build # Build production -bun --bun run test # Chạy kiểm thử (Vitest) -npx tsc --noEmit # Kiểm tra kiểu -bun run bump # Đồng bộ phiên bản trên tất cả package.json -bun run electron:dev # Electron dev -bun run electron:build # Đóng gói Electron -bun run cli:dev # Chạy CLI từ mã nguồn -bun run cli:compile # Biên dịch CLI sang dist +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## Đóng góp @@ -400,7 +402,7 @@ Chào mừng đóng góp! Xem [CLAUDE.md](./CLAUDE.md) để biết chi tiết v 1. Fork và clone 2. Thiết lập đồng bộ phiên bản: `git config core.hooksPath .githooks` 3. Tạo branch: `git checkout -b feat/my-feature` -4. Chạy kiểm tra: `npx tsc --noEmit && bun --bun run test` +4. Chạy kiểm tra: `cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. Commit theo [Conventional Commits](https://www.conventionalcommits.org/): `feat(canvas): add rotation snapping` 6. Mở PR vào nhánh `main` diff --git a/README.zh-TW.md b/README.zh-TW.md index 7295f7ac2..75e741013 100644 --- a/README.zh-TW.md +++ b/README.zh-TW.md @@ -105,20 +105,17 @@ Web 應用程式 + 透過 Electron 在 macOS、Windows 和 Linux 上原生執行 ## 快速開始 ```bash -# 安裝相依套件 -bun install - -# 在 http://localhost:3000 啟動開發伺服器 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` 或以桌面應用程式形式執行: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **前置條件:** [Bun](https://bun.sh/) >= 1.0 以及 [Node.js](https://nodejs.org/) >= 18 +> **前置條件:** 建置產品需要 [Rust](https://www.rust-lang.org/)(stable)。[Bun](https://bun.sh/) >= 1.0 和 [Node.js](https://nodejs.org/) >= 18 僅用於 `packages/` 下的 web SDK。 ### Docker @@ -254,7 +251,7 @@ cat design.dsl | op design - # 從 stdin 管道輸入 - 分層工作流 — `design_skeleton` → `design_content` → `design_refine`,每個階段使用聚焦的提示詞 - 風格指南 — 50+ 內建風格(glassmorphism、brutalist、retro 等),支援基於標籤的模糊匹配,並接入規劃與生成流程 - 多模型能力設定檔 — 依模型層級自動適配思考模式、推理強度與提示詞形態 -- 內建智能體執行環境(`agent-native`,Zig NAPI)+ Anthropic、Claude Agent SDK、OpenCode、Codex、Copilot、Gemini 提供商 +- 內建智能體執行環境(Rust)+ Anthropic、Claude Agent SDK、OpenCode、Codex、Copilot、Gemini 提供商 - 中國大型語言模型 Anthropic 格式透傳 — Kimi、Zhipu、GLM、DouBao、Ark、Bailian/DashScope、ModelScope、Coding Plans **Git 整合** @@ -309,7 +306,7 @@ OpenPencil 正以 **Rust** 從頭重寫([#129](https://github.com/ZSeven-W/ope | **Web 傳輸大小** | JS + WASM 套件 | **8.2 MB** wasm / **2.18 MB** gzip 傳輸 | | **渲染** | Web 上的 CanvasKit/Skia | 在**所有**目標平台共用同一套 GPU 加速 Skia 後端 | | **記憶體** | JavaScript GC 暫停 | 無 GC — Rust 所有權機制,延遲可預測 | -| **程式碼庫** | Web 技術棧 + Electron + Zig NAPI 智能體 | 單一 Rust workspace:編輯器 · CLI · MCP · AI · 程式碼生成 · Figma · Git | +| **程式碼庫** | Web 技術棧 + Electron | 單一 Rust workspace:編輯器 · CLI · MCP · AI · 程式碼生成 · Figma · Git | | **支援平台** | Web + 桌面端,兩套獨立技術棧 | 桌面端(macOS/Win/Linux)· 行動端(iOS/Android)· 瀏覽器 — 同一核心 | **實測改善成果** @@ -382,15 +379,20 @@ openpencil/ ## 指令碼命令 ```bash -bun --bun run dev # 開發伺服器(連接埠 3000) -bun --bun run build # 正式版建置 -bun --bun run test # 執行測試(Vitest) -npx tsc --noEmit # 型別檢查 -bun run bump # 在所有 package.json 間同步版本號 -bun run electron:dev # Electron 開發模式 -bun run electron:build # Electron 封裝 -bun run cli:dev # 從原始碼執行 CLI -bun run cli:compile # 編譯 CLI 到 dist +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## 參與貢獻 @@ -400,7 +402,7 @@ bun run cli:compile # 編譯 CLI 到 dist 1. Fork 並複製存放庫 2. 設定版本同步:`git config core.hooksPath .githooks` 3. 建立分支:`git checkout -b feat/my-feature` -4. 執行檢查:`npx tsc --noEmit && bun --bun run test` +4. 執行檢查:`cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. 使用 [Conventional Commits](https://www.conventionalcommits.org/) 提交:`feat(canvas): add rotation snapping` 6. 向 `main` 分支發起 PR diff --git a/README.zh.md b/README.zh.md index 4be31e976..3fcad8af0 100644 --- a/README.zh.md +++ b/README.zh.md @@ -105,20 +105,17 @@ Web 应用 + 通过 Electron 支持 macOS、Windows 和 Linux 原生桌面端。 ## 快速开始 ```bash -# 安装依赖 -bun install - -# 在 http://localhost:3000 启动开发服务器 -bun --bun run dev +# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host) +bash scripts/start-web-rust.sh ``` 或以桌面应用形式运行: ```bash -bun run electron:dev +cargo run -p op-host-desktop ``` -> **前置条件:** [Bun](https://bun.sh/) >= 1.0 以及 [Node.js](https://nodejs.org/) >= 18 +> **前置条件:** 构建产品需要 [Rust](https://www.rust-lang.org/)(stable)。[Bun](https://bun.sh/) >= 1.0 和 [Node.js](https://nodejs.org/) >= 18 仅用于 `packages/` 下的 web SDK。 ### Docker @@ -254,7 +251,7 @@ cat design.dsl | op design - # 从 stdin 管道输入 - 分层工作流 — `design_skeleton` → `design_content` → `design_refine`,每个阶段使用聚焦的提示词 - 风格指南 — 50+ 内置风格(glassmorphism、brutalist、retro 等),支持基于标签的模糊匹配,并接入规划与生成流程 - 多模型能力配置 — 按模型层级自动适配思考模式、推理强度与提示词形态 -- 内置智能体运行时(`agent-native`,Zig NAPI)+ Anthropic、Claude Agent SDK、OpenCode、Codex、Copilot、Gemini 提供商 +- 内置智能体运行时(Rust)+ Anthropic、Claude Agent SDK、OpenCode、Codex、Copilot、Gemini 提供商 - 国产大模型 Anthropic 格式透传 — Kimi、Zhipu、GLM、DouBao、Ark、Bailian/DashScope、ModelScope、Coding Plans **Git 集成** @@ -309,7 +306,7 @@ OpenPencil 正在从头用 **Rust** 重写([#129](https://github.com/ZSeven-W/ | **Web 包体积** | JS + WASM 包 | **8.2 MB** wasm / 传输 **2.18 MB** gzip | | **渲染** | Web 端 CanvasKit/Skia | **所有**目标平台统一使用 GPU 加速 Skia 后端 | | **内存** | JavaScript GC 暂停 | 无 GC — Rust 所有权,延迟可预期 | -| **代码库** | Web 技术栈 + Electron + Zig NAPI agent | 单一 Rust workspace:editor · CLI · MCP · AI · codegen · Figma · Git | +| **代码库** | Web 技术栈 + Electron | 单一 Rust workspace:editor · CLI · MCP · AI · codegen · Figma · Git | | **目标平台** | Web + 桌面,两套独立技术栈 | 桌面(macOS/Win/Linux)· 移动端(iOS/Android)· 浏览器 — 共用同一核心 | **可量化的性能提升** @@ -382,15 +379,20 @@ openpencil/ ## 脚本命令 ```bash -bun --bun run dev # 开发服务器(端口 3000) -bun --bun run build # 生产构建 -bun --bun run test # 运行测试(Vitest) -npx tsc --noEmit # 类型检查 -bun run bump # 同步所有 package.json 的版本号 -bun run electron:dev # Electron 开发模式 -bun run electron:build # Electron 打包 -bun run cli:dev # 从源码运行 CLI -bun run cli:compile # 编译 CLI 到 dist +# Product (Rust — run from the repo root) +cargo build --workspace # Build all crates (add --release for prod) +cargo test --workspace # Run all tests +cargo check --workspace # Type check +cargo clippy --workspace --all-targets -- -D warnings # Lint +cargo fmt --all # Format +bash scripts/start-web-rust.sh # Web dev server (wasm bundle + headless host) +cargo run -p op-host-desktop # Desktop app (binary: openpencil-desktop) +cargo run -p op-cli -- # CLI (binary: op) + +# Web SDK / JS tooling (run from packages/) +cd packages && bun run lint # Lint the web SDK (oxlint); also: bun run format +cd packages && bun run generate-iconify-catalog # Regenerate the Rust icon catalog assets +cd packages && bun run bump # Sync SDK package.json versions ``` ## 参与贡献 @@ -400,7 +402,7 @@ bun run cli:compile # 编译 CLI 到 dist 1. Fork 并克隆仓库 2. 设置版本同步:`git config core.hooksPath .githooks` 3. 创建分支:`git checkout -b feat/my-feature` -4. 运行检查:`npx tsc --noEmit && bun --bun run test` +4. 运行检查:`cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings` 5. 使用 [Conventional Commits](https://www.conventionalcommits.org/) 提交:`feat(canvas): add rotation snapping` 6. 向 `main` 分支发起 PR diff --git a/crates/op-host-web/tests/ci_workflow.rs b/crates/op-host-web/tests/ci_workflow.rs index 31e8e8a09..c878853c3 100644 --- a/crates/op-host-web/tests/ci_workflow.rs +++ b/crates/op-host-web/tests/ci_workflow.rs @@ -137,8 +137,6 @@ fn web_rust_publish_has_docker_and_start_script_entrypoints() { std::fs::read_to_string(repo.join("Dockerfile.web-rust")).expect("Dockerfile readable"); let start_script = std::fs::read_to_string(repo.join("scripts/start-web-rust.sh")) .expect("web rust start script is readable"); - let package = - std::fs::read_to_string(repo.join("package.json")).expect("package.json readable"); assert!( dockerfile.contains("op-host-web-server --serve-web"), @@ -156,8 +154,4 @@ fn web_rust_publish_has_docker_and_start_script_entrypoints() { start_script.contains("OPENPENCIL_WEB_BUNDLE_DIR"), "start script should point the daemon at the built web bundle explicitly" ); - assert!( - package.contains("\"shell:web:serve\""), - "package scripts should expose the web Rust start script" - ); } diff --git a/package.json b/package.json deleted file mode 100644 index 57be4ab5c..000000000 --- a/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "openpencil", - "version": "0.8.0", - "private": true, - "description": "The world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.", - "author": { - "name": "ZSeven-W", - "email": "xkayshen@gmail.com" - }, - "workspaces": [ - "packages/*", - "packages/agent-native/napi" - ], - "type": "module", - "scripts": { - "dev": "bash scripts/start-web-rust.sh", - "build": "cargo build --workspace --release", - "test": "cargo test --workspace", - "lint": "oxlint .", - "lint:fix": "oxlint --fix .", - "format": "oxfmt .", - "format:check": "oxfmt --check .", - "bump": "sh -c 'V=$0; [ -z \"$V\" ] && echo \"Usage: bun run bump \" && exit 1; for f in package.json packages/*/package.json; do [ -f \"$f\" ] && jq --arg v \"$V\" \".version=\\$v\" \"$f\" > \"$f.tmp\" && mv \"$f.tmp\" \"$f\" && echo \"$f → $V\"; done'", - "agent:build": "cd packages/agent-native && zig build napi -Doptimize=ReleaseFast", - "agent-native:bundle": "node -e \"const fs=require('fs'),p=require('path');const src=p.resolve('packages/agent-native/zig-out/napi/agent_napi.node');const dst=p.resolve('packages/agent-native/napi/agent_napi.node');if(!fs.existsSync(src)){console.error('Native binary missing at '+src+'. Run bun run agent:build first.');process.exit(1)}fs.copyFileSync(src,dst);console.log('[agent-native:bundle] copied to '+dst)\"", - "generate-iconify-catalog": "node scripts/generate-iconify-catalog.mjs", - "postinstall": "node scripts/ensure-agent-native.cjs || true", - "cargo:check": "cargo check --workspace", - "cargo:test": "cargo test --workspace", - "cargo:fmt": "cargo fmt --all", - "cargo:clippy": "cargo clippy --workspace --all-targets -- -D warnings", - "cargo:wasm-check": "cargo check --target wasm32-unknown-unknown -p op-host-web --no-default-features --features web", - "cargo:deny": "cargo deny check && cargo deny --target wasm32-unknown-unknown check bans", - "shell:wasm:dev": "echo 'Build the browser bundle: bash tools/check-wasm-bundle.sh (op-host-web --features canvaskit -> wasm-bindgen -> wasm-opt). Serve it: op start --web (raw form: openpencil-desktop --serve-web )'", - "shell:web:serve": "bash scripts/start-web-rust.sh" - }, - "dependencies": { - "@iconify-json/feather": "^1.2.1", - "@iconify-json/lucide": "^1.2.93", - "@iconify-json/simple-icons": "^1.2.71" - }, - "devDependencies": { - "oxfmt": "^0.42.0", - "oxlint": "^1.57.0" - } -} diff --git a/.oxfmtrc.json b/packages/.oxfmtrc.json similarity index 100% rename from .oxfmtrc.json rename to packages/.oxfmtrc.json diff --git a/oxlintrc.json b/packages/.oxlintrc.json similarity index 100% rename from oxlintrc.json rename to packages/.oxlintrc.json diff --git a/packages/CLAUDE.md b/packages/CLAUDE.md index ed209de1b..784683d64 100644 --- a/packages/CLAUDE.md +++ b/packages/CLAUDE.md @@ -1,15 +1,16 @@ # Packages -The JS/Zig packages that remain after the TypeScript retirement. +The web SDK packages that remain after the TypeScript retirement. This directory is the **npm/Bun workspace root** (`packages/package.json`); the repository root is a **pure Cargo workspace** with no `package.json`. -> The `pen-*` packages (pen-types, pen-core, pen-engine, pen-renderer, pen-figma, pen-mcp, pen-ai-skills, pen-sdk, pen-react, pen-acp) and pen-codegen were **retired** along with `apps/*`. Their functionality now lives in the Rust `crates/` (see `crates/CLAUDE.md`). Nothing here depends on them. +> The `pen-*` packages (pen-types, pen-core, pen-engine, pen-renderer, pen-figma, pen-mcp, pen-ai-skills, pen-sdk, pen-react, pen-acp) and pen-codegen were **retired** along with `apps/*`. Their functionality now lives in the Rust `crates/` (see `crates/CLAUDE.md`). Nothing here depends on them. The `agent-native` Zig runtime was also **removed** — the built-in agent runtime is now the Rust `agent` crate (`vendor/agent`, shared with Zode). -## agent-native (`agent-native/`) +## Workspace tooling -Native AI agent runtime written in **Zig**, exposed to JS via a NAPI addon (`napi/agent_napi.node`). Multi-provider, supports concurrent Agent Teams. Cross-product runtime (also consumed by Zode). +Run these from `packages/`: -- Build: `bun run agent:build` (`zig build napi -Doptimize=ReleaseFast`), then `bun run agent-native:bundle` to copy the `.node` into `napi/`. -- See `agent-native/CLAUDE.md` for the full runtime docs. +- **Lint / format the SDK:** `bun run lint` (oxlint) / `bun run format` (oxfmt). +- **Iconify catalog (Rust assets):** `bun run generate-iconify-catalog` — `scripts/generate-iconify-catalog.mjs` reads `@iconify-json/*` and writes `crates/op-editor-ui/assets/iconify-catalog-{core,brands}.json` (the icon catalog embedded in / served by the Rust web target). +- **Bump SDK versions:** `bun run bump ` (syncs the SDK `package.json`s; Rust versions live in Cargo.toml). ## op-web-sdk (`op-web-sdk/`) diff --git a/packages/agent-native b/packages/agent-native deleted file mode 160000 index 22f20e42c..000000000 --- a/packages/agent-native +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 22f20e42cdfbfba7623693ce3f8b17d59fac8ea7 diff --git a/bun.lock b/packages/bun.lock similarity index 68% rename from bun.lock rename to packages/bun.lock index 3586dd3b9..f66e8887f 100644 --- a/bun.lock +++ b/packages/bun.lock @@ -3,22 +3,16 @@ "configVersion": 1, "workspaces": { "": { - "name": "openpencil", - "dependencies": { + "name": "@zseven-w/openpencil-packages", + "devDependencies": { "@iconify-json/feather": "^1.2.1", "@iconify-json/lucide": "^1.2.93", "@iconify-json/simple-icons": "^1.2.71", - }, - "devDependencies": { "oxfmt": "^0.42.0", "oxlint": "^1.57.0", }, }, - "packages/agent-native/napi": { - "name": "@zseven-w/agent-native", - "version": "0.4.0", - }, - "packages/op-web-sdk": { + "op-web-sdk": { "name": "@zseven-w/op-web-sdk", "version": "0.8.0", "devDependencies": { @@ -28,7 +22,7 @@ "vitest": "^3.0.0", }, }, - "packages/op-web-sdk-react": { + "op-web-sdk-react": { "name": "@zseven-w/op-web-sdk-react", "version": "0.8.0", "dependencies": { @@ -48,7 +42,7 @@ "react-dom": "^19.0.0", }, }, - "packages/op-web-sdk-vue": { + "op-web-sdk-vue": { "name": "@zseven-w/op-web-sdk-vue", "version": "0.8.0", "dependencies": { @@ -71,15 +65,15 @@ "packages": { "@asamuzakjp/css-color": ["@asamuzakjp/css-color@3.2.0", "", { "dependencies": { "@csstools/css-calc": "^2.1.3", "@csstools/css-color-parser": "^3.0.9", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "lru-cache": "^10.4.3" } }, "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw=="], - "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], "@babel/parser": ["@babel/parser@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" }, "bin": "./bin/babel-parser.js" }, "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg=="], - "@babel/runtime": ["@babel/runtime@7.29.2", "", {}, "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g=="], + "@babel/runtime": ["@babel/runtime@7.29.7", "", {}, "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw=="], "@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], @@ -147,9 +141,9 @@ "@iconify-json/feather": ["@iconify-json/feather@1.2.1", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-gURNg2TJYuO1U7DoOGCylm9TwkMfzjOH2BHdWsE0IXLXj/MNkFIJu56Wu1xRws27M8hzDzUDt/biGUa/LfAjdg=="], - "@iconify-json/lucide": ["@iconify-json/lucide@1.2.101", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-JUN7uuSLRG3GK/9c5b8cK9e7sL6EAWDaASIwBOd0zUeKS0ACcokJubo2RMQHyVUVpd8mYkrR3Zd2mkH9ghhw1Q=="], + "@iconify-json/lucide": ["@iconify-json/lucide@1.2.115", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-plc4npdX0I2RpsE5FFIdkCjGtL9vG09FU/a2nZ+pJ0fFQV6mTqRlbUgZgUgSPDFswq0kaaNT229nW6AQRj5o9w=="], - "@iconify-json/simple-icons": ["@iconify-json/simple-icons@1.2.77", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-oaENvo6C3BkAEWMlcQA3XemxU9v2SFOTlApSUCODAkIu1haeLCjzrmH3HgmGqjRnJjM+LevO8sA+MgdMHBFBDA=="], + "@iconify-json/simple-icons": ["@iconify-json/simple-icons@1.2.88", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-+cvi1qCuvReL29ehi6t62L4fb7GDXe+UlGHFcsJcV7I2l9wtqn9XE2IBKcDr3CI5iGUGS5ISnXv699pSGpyx1Q=="], "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], @@ -203,95 +197,95 @@ "@oxfmt/binding-win32-x64-msvc": ["@oxfmt/binding-win32-x64-msvc@0.42.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Wg4TMAfQRL9J9AZevJ/ZNy3uyyDztDYQtGr4P8UyyzIhLhFrdSmz1J/9JT+rv0fiCDLaFOBQnj3f3K3+a5PzDQ=="], - "@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.59.0", "", { "os": "android", "cpu": "arm" }, "sha512-etYDw/UaEv936AQUd/CRMBVd+e+XuuU6wC+VzOv1STvsTyZenLChepLWqLtnyTTp4YMlM22ypzogDDwqYxv5cg=="], + "@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.72.0", "", { "os": "android", "cpu": "arm" }, "sha512-zhCmvn+1Mj3UchAc/90i99S0t7jJUsHmFVSPg4UWrjO8b8eaSGwscgO6QAUtvHBstkjQwBttQNswEnAF1mIQdA=="], - "@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.59.0", "", { "os": "android", "cpu": "arm64" }, "sha512-TgLc7XVLKH2a4h8j3vn1MDjfK33i9MY60f/bKhRGWyVzbk5LCZ4X01VZG7iHrMmi5vYbAp8//Ponigx03CLsdw=="], + "@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.72.0", "", { "os": "android", "cpu": "arm64" }, "sha512-mtH+aY/ozv1eZoCUC2owjFAtyNBKHpJHygKeEu9zXXnQGW1Q2/qOpvx+I+Lf23+TvTz66F4iiXUbl2cGvoLPCQ=="], - "@oxlint/binding-darwin-arm64": ["@oxlint/binding-darwin-arm64@1.59.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DXyFPf5ZKldMLloRHx/B9fsxsiTQomaw7cmEW3YIJko2HgCh+GUhp9gGYwHrqlLJPsEe3dYj9JebjX92D3j3AA=="], + "@oxlint/binding-darwin-arm64": ["@oxlint/binding-darwin-arm64@1.72.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-EvnajNPDtfknB3ZieeOOyDTwJn9QXDiwfnF4ZDQqART6RG6hjY4WigQcZdGoK2dkB3e1vrmEzN9aYbQCUkh/gQ=="], - "@oxlint/binding-darwin-x64": ["@oxlint/binding-darwin-x64@1.59.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-LgvrsdgVLX1qWqIEmNsSmMXJhpAWdtUQ0M+oR0CySwi+9IHWyOGuIL8w8+u/kbZNMyZr4WUyYB5i0+D+AKgkLg=="], + "@oxlint/binding-darwin-x64": ["@oxlint/binding-darwin-x64@1.72.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZkCdEa/G80A7vEHfeCDz/+L3m33DE73v32mDKhgOIgz8Uwf0DFcK7+uu6qC+7LEhmz5fpOe1osWKyjSNMydFIQ=="], - "@oxlint/binding-freebsd-x64": ["@oxlint/binding-freebsd-x64@1.59.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-bOJhqX/ny4hrFuTPlyk8foSRx/vLRpxJh0jOOKN2NWW6FScXHPAA5rQbrwdQPcgGB5V8Ua51RS03fke8ssBcug=="], + "@oxlint/binding-freebsd-x64": ["@oxlint/binding-freebsd-x64@1.72.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-NroXv2vh+sxVY1uya/rM5pjhx1hm8BzlYpx9q67QP0Xhw5MH2bf5GJylpvLEC+781p1Xli/317EoV9AlGwViag=="], - "@oxlint/binding-linux-arm-gnueabihf": ["@oxlint/binding-linux-arm-gnueabihf@1.59.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vVUXxYMF9trXCsz4m9H6U0IjehosVHxBzVgJUxly1uz4W1PdDyicaBnpC0KRXsHYretLVe+uS9pJy8iM57Kujw=="], + "@oxlint/binding-linux-arm-gnueabihf": ["@oxlint/binding-linux-arm-gnueabihf@1.72.0", "", { "os": "linux", "cpu": "arm" }, "sha512-0NDywYgfj279Ou/BcQuCYSj7NJwBfmWn5qc5uGO/Ny7fUWmXyIpvawqX/8acQlWG6IXelJsJhj+JAy6sjsKj0A=="], - "@oxlint/binding-linux-arm-musleabihf": ["@oxlint/binding-linux-arm-musleabihf@1.59.0", "", { "os": "linux", "cpu": "arm" }, "sha512-TULQW8YBPGRWg5yZpFPL54HLOnJ3/HiX6VenDPi6YfxB/jlItwSMFh3/hCeSNbh+DAMaE1Py0j5MOaivHkI/9Q=="], + "@oxlint/binding-linux-arm-musleabihf": ["@oxlint/binding-linux-arm-musleabihf@1.72.0", "", { "os": "linux", "cpu": "arm" }, "sha512-4vpXB06h65Ezsy4hRyrGjGrfa1SkVPii09yaajiYhmVpgsFiLD+KNxIx/BNAY+XiO+i1yqp9HHdwqM8VTqa5XQ=="], - "@oxlint/binding-linux-arm64-gnu": ["@oxlint/binding-linux-arm64-gnu@1.59.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-Gt54Y4eqSgYJ90xipm24xeyaPV854706o/kiT8oZvUt3VDY7qqxdqyGqchMaujd87ib+/MXvnl9WkK8Cc1BExg=="], + "@oxlint/binding-linux-arm64-gnu": ["@oxlint/binding-linux-arm64-gnu@1.72.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-immaN4g2ZGFiOkKrvRX9LvzZdd2GkQM5wR+UyzYyUuyhUTXGQ4HKUJH18xp4G8OfhCVaVAJfKZxwE1r8+4hhaQ=="], - "@oxlint/binding-linux-arm64-musl": ["@oxlint/binding-linux-arm64-musl@1.59.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-3CtsKp7NFB3OfqQzbuAecrY7GIZeiv7AD+xutU4tefVQzlfmTI7/ygWLrvkzsDEjTlMq41rYHxgsn6Yh8tybmA=="], + "@oxlint/binding-linux-arm64-musl": ["@oxlint/binding-linux-arm64-musl@1.72.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-JGHS9Mnr7iWyyLDxgCv1MhzVpAckgptg00F2gnxt/GD7lQ2SW1BRcxHqhSTaSdDpjWRrBkBxMMh4+Hn3aVtExg=="], - "@oxlint/binding-linux-ppc64-gnu": ["@oxlint/binding-linux-ppc64-gnu@1.59.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-K0diOpT3ncDmOfl9I1HuvpEsAuTxkts0VYwIv/w6Xiy9CdwyPBVX88Ga9l8VlGgMrwBMnSY4xIvVlVY/fkQk7Q=="], + "@oxlint/binding-linux-ppc64-gnu": ["@oxlint/binding-linux-ppc64-gnu@1.72.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-AOYgBZqxNshrg83P9v0RYv+m8s10Cqkj4/PxXFDhcS3k7FqsIG5+CxErshZCIN7G8iy4Y+VGfAsuEdar8AcbBg=="], - "@oxlint/binding-linux-riscv64-gnu": ["@oxlint/binding-linux-riscv64-gnu@1.59.0", "", { "os": "linux", "cpu": "none" }, "sha512-xAU7+QDU6kTJJ7mJLOGgo7oOjtAtkKyFZ0Yjdb5cEo3DiCCPFLvyr08rWiQh6evZ7RiUTf+o65NY/bqttzJiQQ=="], + "@oxlint/binding-linux-riscv64-gnu": ["@oxlint/binding-linux-riscv64-gnu@1.72.0", "", { "os": "linux", "cpu": "none" }, "sha512-QMybPS5ij3/vrKG67mqzHwW++91sYxK/PPUVi6SBtNCEzW4niS52fVBdXbQ6nou0wWbUPEpx8Sl/ZjtgE3clXA=="], - "@oxlint/binding-linux-riscv64-musl": ["@oxlint/binding-linux-riscv64-musl@1.59.0", "", { "os": "linux", "cpu": "none" }, "sha512-KUmZmKlTTyauOnvUNVxK7G40sSSx0+w5l1UhaGsC6KPpOYHenx2oqJTnabmpLJicok7IC+3Y6fXAUOMyexaeJQ=="], + "@oxlint/binding-linux-riscv64-musl": ["@oxlint/binding-linux-riscv64-musl@1.72.0", "", { "os": "linux", "cpu": "none" }, "sha512-gOc3W7JV0PXRpIL7stUlLe3Wa9Gp0Kdlup87IT3gHDvPKck2xNgMIl/Gs2lldYY2lyXZDC4rWi3hmoLUobkgbQ=="], - "@oxlint/binding-linux-s390x-gnu": ["@oxlint/binding-linux-s390x-gnu@1.59.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-4usRxC8gS0PGdkHnRmwJt/4zrQNZyk6vL0trCxwZSsAKM+OxhB8nKiR+mhjdBbl8lbMh2gc3bZpNN/ik8c4c2A=="], + "@oxlint/binding-linux-s390x-gnu": ["@oxlint/binding-linux-s390x-gnu@1.72.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-rpGxph+FjjHcYI5q6uxB3Az+tnfmEnDbSA8+PK9ZE/VzyUAkvBOMeuY7ZQMhu5mpZH7YQDsTdW6Cx4kV/msc6w=="], - "@oxlint/binding-linux-x64-gnu": ["@oxlint/binding-linux-x64-gnu@1.59.0", "", { "os": "linux", "cpu": "x64" }, "sha512-s/rNE2gDmbwAOOP493xk2X7M8LZfI1LJFSSW1+yanz3vuQCFPiHkx4GY+O1HuLUDtkzGlhtMrIcxxzyYLv308w=="], + "@oxlint/binding-linux-x64-gnu": ["@oxlint/binding-linux-x64-gnu@1.72.0", "", { "os": "linux", "cpu": "x64" }, "sha512-WND+uhf/Ko13SLqQMWQUgsZuLvYYEvL0ZKgg0tgGYfLqxG7l8Ju123fHDMJyYSDl5E3bUbpFUuii/OvMreFQzw=="], - "@oxlint/binding-linux-x64-musl": ["@oxlint/binding-linux-x64-musl@1.59.0", "", { "os": "linux", "cpu": "x64" }, "sha512-+yYj1udJa2UvvIUmEm0IcKgc0UlPMgz0nsSTvkPL2y6n0uU5LgIHSwVu4AHhrve6j9BpVSoRksnz8c9QcvITJA=="], + "@oxlint/binding-linux-x64-musl": ["@oxlint/binding-linux-x64-musl@1.72.0", "", { "os": "linux", "cpu": "x64" }, "sha512-SrpbrUL70nG9vh6zP4/oKHWgLuHquwsr7MW9XOn0olBVgh10Uqr8qscKhQoBGEn6olK/IUpn5GSKcdQ5AjUhGA=="], - "@oxlint/binding-openharmony-arm64": ["@oxlint/binding-openharmony-arm64@1.59.0", "", { "os": "none", "cpu": "arm64" }, "sha512-bUplUb48LYsB3hHlQXP2ZMOenpieWoOyppLAnnAhuPag3MGPnt+7caxE3w/Vl9wpQsTA3gzLntQi9rxWrs7Xqg=="], + "@oxlint/binding-openharmony-arm64": ["@oxlint/binding-openharmony-arm64@1.72.0", "", { "os": "none", "cpu": "arm64" }, "sha512-qkrsEn6NmgFKr7U/QnezQMb+q/vzAy0Dd9Y95gQGQTyjzDLN+HRZMuM5u70iyH4nBLCfKBzhjMsYCehKay2jyg=="], - "@oxlint/binding-win32-arm64-msvc": ["@oxlint/binding-win32-arm64-msvc@1.59.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-/HLsLuz42rWl7h7ePdmMTpHm2HIDmPtcEMYgm5BBEHiEiuNOrzMaUpd2z7UnNni5LGN9obJy2YoAYBLXQwazrA=="], + "@oxlint/binding-win32-arm64-msvc": ["@oxlint/binding-win32-arm64-msvc@1.72.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-LWR6ZlFZph+KPjXv8opgZsXRDCdrdQe8VL8Cg9zxCoBS73h6znzZpydVgmdnwj8mB9AuSM5jxEgDJDpQkjboeg=="], - "@oxlint/binding-win32-ia32-msvc": ["@oxlint/binding-win32-ia32-msvc@1.59.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-rUPy+JnanpPwV/aJCPnxAD1fW50+XPI0VkWr7f0vEbqcdsS8NpB24Rw6RsS7SdpFv8Dw+8ugCwao5nCFbqOUSg=="], + "@oxlint/binding-win32-ia32-msvc": ["@oxlint/binding-win32-ia32-msvc@1.72.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-yt6HEh7IsHvtjRWtmeZRX134eaXKHq5Gnqlf1xBJdJl1JtdoRUEJw3nAxpZoUDS860cX/foKbztO441anVBtVQ=="], - "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.59.0", "", { "os": "win32", "cpu": "x64" }, "sha512-xkE7puteDS/vUyRngLXW0t8WgdWoS/tfxXjhP/P7SMqPDx+hs44SpssO3h3qmTqECYEuXBUPzcAw5257Ka+ofA=="], + "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.72.0", "", { "os": "win32", "cpu": "x64" }, "sha512-b2eKFD2hX7tIwmo/cyH6TDq8vzWRZ2qNHrzoGntUTmq0h3zQh/uX3eTSHCwI8OB/ADQfJCRelLItK8BsxuucDA=="], "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.60.1", "", { "os": "android", "cpu": "arm" }, "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.62.2", "", { "os": "android", "cpu": "arm" }, "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg=="], - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.60.1", "", { "os": "android", "cpu": "arm64" }, "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA=="], + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.62.2", "", { "os": "android", "cpu": "arm64" }, "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw=="], - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.60.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw=="], + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.62.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A=="], - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.60.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew=="], + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.62.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA=="], - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.60.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w=="], + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.62.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw=="], - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.60.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g=="], + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.62.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg=="], - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.60.1", "", { "os": "linux", "cpu": "arm" }, "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g=="], + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.62.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg=="], - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.60.1", "", { "os": "linux", "cpu": "arm" }, "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg=="], + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.62.2", "", { "os": "linux", "cpu": "arm" }, "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA=="], - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.60.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ=="], + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.62.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA=="], - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.60.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA=="], + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.62.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ=="], - "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.60.1", "", { "os": "linux", "cpu": "none" }, "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ=="], + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg=="], - "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.60.1", "", { "os": "linux", "cpu": "none" }, "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw=="], + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ=="], - "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.60.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw=="], + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.62.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A=="], - "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.60.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg=="], + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.62.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w=="], - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.60.1", "", { "os": "linux", "cpu": "none" }, "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg=="], + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg=="], - "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.60.1", "", { "os": "linux", "cpu": "none" }, "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg=="], + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q=="], - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.60.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ=="], + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.62.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg=="], - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.60.1", "", { "os": "linux", "cpu": "x64" }, "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg=="], + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.62.2", "", { "os": "linux", "cpu": "x64" }, "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A=="], - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.60.1", "", { "os": "linux", "cpu": "x64" }, "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w=="], + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.62.2", "", { "os": "linux", "cpu": "x64" }, "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg=="], - "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.60.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw=="], + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.62.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg=="], - "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.60.1", "", { "os": "none", "cpu": "arm64" }, "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA=="], + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.62.2", "", { "os": "none", "cpu": "arm64" }, "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA=="], - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.60.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g=="], + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.62.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg=="], - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.60.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg=="], + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.62.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q=="], - "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.60.1", "", { "os": "win32", "cpu": "x64" }, "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg=="], + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.62.2", "", { "os": "win32", "cpu": "x64" }, "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg=="], - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.60.1", "", { "os": "win32", "cpu": "x64" }, "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ=="], + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.62.2", "", { "os": "win32", "cpu": "x64" }, "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA=="], "@testing-library/dom": ["@testing-library/dom@10.4.1", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "picocolors": "1.1.1", "pretty-format": "^27.0.2" } }, "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg=="], @@ -301,67 +295,55 @@ "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], - "@types/debug": ["@types/debug@4.1.13", "", { "dependencies": { "@types/ms": "*" } }, "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw=="], - "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], - "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], - - "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - - "@types/node": ["@types/node@22.19.17", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q=="], - - "@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="], - - "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], + "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], "@vitejs/plugin-vue": ["@vitejs/plugin-vue@5.2.4", "", { "peerDependencies": { "vite": "^5.0.0 || ^6.0.0", "vue": "^3.2.25" } }, "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA=="], - "@vitest/expect": ["@vitest/expect@3.2.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig=="], + "@vitest/expect": ["@vitest/expect@3.2.6", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/spy": "3.2.6", "@vitest/utils": "3.2.6", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "sha512-1+7q9BtaKzEmO+fmNT3kYvoNn5Y71XWAx2Q5HRim4tTVRQVRv4uJFAQ5FbK0OPUeNP/WmVCpxYxoJdvuHVjzBQ=="], - "@vitest/mocker": ["@vitest/mocker@3.2.4", "", { "dependencies": { "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "optionalPeers": ["msw", "vite"] }, "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ=="], + "@vitest/mocker": ["@vitest/mocker@3.2.6", "", { "dependencies": { "@vitest/spy": "3.2.6", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "optionalPeers": ["msw", "vite"] }, "sha512-EZOrpDbkKotFAP7wPAQV1UIyoGOk4oX7ynWhBhLB7v+meMHbQhU16oPpIYGTTe4oFlhpryGpgpcZP/sin3hYuw=="], - "@vitest/pretty-format": ["@vitest/pretty-format@3.2.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA=="], + "@vitest/pretty-format": ["@vitest/pretty-format@3.2.6", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-lb7XXXzmm2h2ASzFnRvQpDo6onT1NmMJA3tkGTWiBFtRJ9lxGY3d3mm/Apt36gej2bkkOVLL/yTOtufDaFa/jA=="], - "@vitest/runner": ["@vitest/runner@3.2.4", "", { "dependencies": { "@vitest/utils": "3.2.4", "pathe": "^2.0.3", "strip-literal": "^3.0.0" } }, "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ=="], + "@vitest/runner": ["@vitest/runner@3.2.6", "", { "dependencies": { "@vitest/utils": "3.2.6", "pathe": "^2.0.3", "strip-literal": "^3.0.0" } }, "sha512-HYcoSj1w5tcgUnzoF0HcyaAQjpA1gj9ftUJ7iSJSuipc02jW9gKkigwZbjFldAfYHA1fa8UZVRftdMY5msWM9Q=="], - "@vitest/snapshot": ["@vitest/snapshot@3.2.4", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" } }, "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ=="], + "@vitest/snapshot": ["@vitest/snapshot@3.2.6", "", { "dependencies": { "@vitest/pretty-format": "3.2.6", "magic-string": "^0.30.17", "pathe": "^2.0.3" } }, "sha512-H+ZjNTWGpObenh0YnlBctAPnJSI20P81PL8BPzWpx54YXLLTm8hEsWawtcYLMrwvpK48hGxLLbCS+1KRXhsKhw=="], - "@vitest/spy": ["@vitest/spy@3.2.4", "", { "dependencies": { "tinyspy": "^4.0.3" } }, "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw=="], + "@vitest/spy": ["@vitest/spy@3.2.6", "", { "dependencies": { "tinyspy": "^4.0.3" } }, "sha512-oq6BbH68WzcWmwtBrU9nqLeaXTR4XwJF7FSLkKEZo4i6eoXcrxjcwSuTvWBIRUTC6VC72nXYunzqgZA+IKdtxg=="], - "@vitest/utils": ["@vitest/utils@3.2.4", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA=="], + "@vitest/utils": ["@vitest/utils@3.2.6", "", { "dependencies": { "@vitest/pretty-format": "3.2.6", "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, "sha512-lI23nIs4bnT3T8NIoh+vFaz5s2/DdP0Jgt2jxwgWljvwn82cLJtyi/If+fjFyoLMGIOz0U/fKvWE0d4jsNQEfg=="], - "@vue/compiler-core": ["@vue/compiler-core@3.5.38", "", { "dependencies": { "@babel/parser": "^7.29.7", "@vue/shared": "3.5.38", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-s99aGxWYig9ErHbct27KXEGhrBYlRI6c4MwAgXErOAbX9xiW37/uMa+XUDO69zLz83dng8UUZ70CTOJrLrYrEQ=="], + "@vue/compiler-core": ["@vue/compiler-core@3.5.39", "", { "dependencies": { "@babel/parser": "^7.29.7", "@vue/shared": "3.5.39", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-16KBTEXAJCpDr0mwlw+AZyhu8iyC7R3S2vBwsI7QnWJU6X3WKc9VKeNEZpiMdZ569qWhz9574L3vV55qRL0Vtw=="], - "@vue/compiler-dom": ["@vue/compiler-dom@3.5.38", "", { "dependencies": { "@vue/compiler-core": "3.5.38", "@vue/shared": "3.5.38" } }, "sha512-JTqp25l8aFfJYF7/KmsXZjAxJz7T+SjmTJLoXVjHtc2BrSgSiW2n9Aem/cWq1OPe68A8JL06B3eVdhlP0H4TVw=="], + "@vue/compiler-dom": ["@vue/compiler-dom@3.5.39", "", { "dependencies": { "@vue/compiler-core": "3.5.39", "@vue/shared": "3.5.39" } }, "sha512-oQPigALqYbNxTNPvNgSOe+czwVExfbVF02lz8jP0S3AXJiu3jxYDygNUiqSep4ezzW8XgnubqH63My2A7JR/vg=="], - "@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.38", "", { "dependencies": { "@babel/parser": "^7.29.7", "@vue/compiler-core": "3.5.38", "@vue/compiler-dom": "3.5.38", "@vue/compiler-ssr": "3.5.38", "@vue/shared": "3.5.38", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.15", "source-map-js": "^1.2.1" } }, "sha512-DuA2GiZawSEW442iw/9+Fkol8hTgb4Ke5KkhmSry65QA7YuyMbIdy8p0XZRMvNwJdgRz307W8g1CSzdvS4nuNg=="], + "@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.39", "", { "dependencies": { "@babel/parser": "^7.29.7", "@vue/compiler-core": "3.5.39", "@vue/compiler-dom": "3.5.39", "@vue/compiler-ssr": "3.5.39", "@vue/shared": "3.5.39", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.15", "source-map-js": "^1.2.1" } }, "sha512-d0ki86iOyN8LoZPBmk5SJWNwHP19CnDDCfuo//+2WJa2g5Ke0Jay983PIBIcSSzldC68I8DrD5GrHV3OSDfodg=="], - "@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.38", "", { "dependencies": { "@vue/compiler-dom": "3.5.38", "@vue/shared": "3.5.38" } }, "sha512-7s+W5Gc42FGxZMcuwl8H5B29T8BJPMdBT7KHFE+BbAuZ/iTEdTtv7z2XiMjiaUUw4w3ZcCEdHs36RuYJ2VA7bA=="], + "@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.39", "", { "dependencies": { "@vue/compiler-dom": "3.5.39", "@vue/shared": "3.5.39" } }, "sha512-Ce7/wvwMHai74bdszfXExdazFigYnlF9zgCmEQUcM1j0fOymlouZ7XilTYNo8oUjhlnjYOZbGrcYKuqjz89Ucw=="], - "@vue/reactivity": ["@vue/reactivity@3.5.38", "", { "dependencies": { "@vue/shared": "3.5.38" } }, "sha512-pG6LV/NDNRbKizcUjFFLAfjaL8mcv4DmR9avNcUw2gDHBzZneuS2TWCmp633ynzxz9YYKNeEPK2I8Wraqy2HUQ=="], + "@vue/reactivity": ["@vue/reactivity@3.5.39", "", { "dependencies": { "@vue/shared": "3.5.39" } }, "sha512-TpsuBJ9gGlZa5d23XcM2y8EXanz9dZeVDQBXRwzy46ItgvM+rWpzs+UVM0wcRLxGvcav0HE5jz2gNL53xlRAog=="], - "@vue/runtime-core": ["@vue/runtime-core@3.5.38", "", { "dependencies": { "@vue/reactivity": "3.5.38", "@vue/shared": "3.5.38" } }, "sha512-iyW8WVfF1CpCXxncZY5Ei6rSd6oZr5DgEom//fUjRBRl56AXPD+s9ATvukRt77ZFTuYlnVA1bxY+dJB94tWVYw=="], + "@vue/runtime-core": ["@vue/runtime-core@3.5.39", "", { "dependencies": { "@vue/reactivity": "3.5.39", "@vue/shared": "3.5.39" } }, "sha512-9GLtNyRvPAUMbX+7ono0RC2j0guo2LXVi8LvcmAooImACUKm0oFf0jjwbX8/H0AE/t1nxhAkn8RSl9PMCzzxZw=="], - "@vue/runtime-dom": ["@vue/runtime-dom@3.5.38", "", { "dependencies": { "@vue/reactivity": "3.5.38", "@vue/runtime-core": "3.5.38", "@vue/shared": "3.5.38", "csstype": "^3.2.3" } }, "sha512-apX2wt9sdfDshS+a2xueFZLVpt0GkRJZSoPmrW/SA4yzXTznhfcMVW59gr7h4YQeY0vJhdJkk2rsIDwgfFgC5A=="], + "@vue/runtime-dom": ["@vue/runtime-dom@3.5.39", "", { "dependencies": { "@vue/reactivity": "3.5.39", "@vue/runtime-core": "3.5.39", "@vue/shared": "3.5.39", "csstype": "^3.2.3" } }, "sha512-7Y6aAGboKcXAZ3ECuUy7RrS5yy2r47dhTp2SKaJmYxjopImaVFaNa5Ne66NwGovsrxVAl5S5rwc7m22UG7Lmww=="], - "@vue/server-renderer": ["@vue/server-renderer@3.5.38", "", { "dependencies": { "@vue/compiler-ssr": "3.5.38", "@vue/shared": "3.5.38" }, "peerDependencies": { "vue": "3.5.38" } }, "sha512-vue8vbf2QlV4quHqzwmJy6dWfmRhP1J8l4wtZg60CL6VoKqcPY2oe7may3+1d9qfpedjK5PRLFqd5k3Isj9mUw=="], + "@vue/server-renderer": ["@vue/server-renderer@3.5.39", "", { "dependencies": { "@vue/compiler-ssr": "3.5.39", "@vue/shared": "3.5.39" }, "peerDependencies": { "vue": "3.5.39" } }, "sha512-yZSakiAGw85rZfG7UM8akMnIF+FmeiNk47uvHf2nVBBSe+dIKUhZuZq9+XgJhbV3nS5Z4ALH23/MpXofW+mbcw=="], - "@vue/shared": ["@vue/shared@3.5.38", "", {}, "sha512-FTW0AFZNaK5/mOqvGBwVfUlNLU38TiQn4+DQgIFUnrBBJQ1crMJ82yeGQLV5jyKFsO8yRukpbuP7x+nRbH6aug=="], + "@vue/shared": ["@vue/shared@3.5.39", "", {}, "sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA=="], "@vue/test-utils": ["@vue/test-utils@2.4.11", "", { "dependencies": { "js-beautify": "^1.14.9", "vue-component-type-helpers": "^3.0.0" }, "peerDependencies": { "@vue/compiler-dom": "3.x", "@vue/server-renderer": "3.x", "vue": "3.x" }, "optionalPeers": ["@vue/server-renderer"] }, "sha512-GDqaqZsA6m2E5vNzej0aYiIb6BX8xV9pNSbbbXKOfEYwg7ZNblVX8suyqmUBThq8VIrgAJNxn+z72hVtUeiWHA=="], - "@zseven-w/agent-native": ["@zseven-w/agent-native@workspace:packages/agent-native/napi"], + "@zseven-w/op-web-sdk": ["@zseven-w/op-web-sdk@workspace:op-web-sdk"], - "@zseven-w/op-web-sdk": ["@zseven-w/op-web-sdk@workspace:packages/op-web-sdk"], + "@zseven-w/op-web-sdk-react": ["@zseven-w/op-web-sdk-react@workspace:op-web-sdk-react"], - "@zseven-w/op-web-sdk-react": ["@zseven-w/op-web-sdk-react@workspace:packages/op-web-sdk-react"], - - "@zseven-w/op-web-sdk-vue": ["@zseven-w/op-web-sdk-vue@workspace:packages/op-web-sdk-vue"], + "@zseven-w/op-web-sdk-vue": ["@zseven-w/op-web-sdk-vue@workspace:op-web-sdk-vue"], "abbrev": ["abbrev@2.0.0", "", {}, "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ=="], - "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], + "acorn": ["acorn@8.17.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg=="], "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], @@ -379,7 +361,7 @@ "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "brace-expansion": ["brace-expansion@2.0.3", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA=="], + "brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], "bundle-require": ["bundle-require@5.1.0", "", { "dependencies": { "load-tsconfig": "^0.2.3" }, "peerDependencies": { "esbuild": ">=0.18" } }, "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA=="], @@ -425,8 +407,6 @@ "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], - "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], - "dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="], "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], @@ -445,7 +425,7 @@ "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], - "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="], "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], @@ -453,7 +433,7 @@ "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], - "expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="], + "expect-type": ["expect-type@1.4.0", "", {}, "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA=="], "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], @@ -461,7 +441,7 @@ "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], - "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], + "form-data": ["form-data@4.0.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35" } }, "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ=="], "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], @@ -471,8 +451,6 @@ "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], - "get-tsconfig": ["get-tsconfig@4.13.7", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q=="], - "glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], @@ -481,7 +459,7 @@ "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="], "html-encoding-sniffer": ["html-encoding-sniffer@4.0.0", "", { "dependencies": { "whatwg-encoding": "^3.1.1" } }, "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ=="], @@ -501,11 +479,9 @@ "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], - "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="], - "js-beautify": ["js-beautify@1.15.4", "", { "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.4", "glob": "^10.4.2", "js-cookie": "^3.0.5", "nopt": "^7.2.1" }, "bin": { "css-beautify": "js/bin/css-beautify.js", "html-beautify": "js/bin/html-beautify.js", "js-beautify": "js/bin/js-beautify.js" } }, "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA=="], + "js-beautify": ["js-beautify@1.15.4", "", { "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.4", "glob": "^10.4.2", "js-cookie": "^3.0.5", "nopt": "^7.2.1" }, "bin": { "js-beautify": "js/bin/js-beautify.js", "css-beautify": "js/bin/css-beautify.js", "html-beautify": "js/bin/html-beautify.js" } }, "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA=="], "js-cookie": ["js-cookie@3.0.8", "", {}, "sha512-yeJd4aNAdYZQjaon2bpD/Gb0B/omw7HQOsynXXcOiWVCacbBcPlgn8S/d1X6blFSaHao7ozqtW7NZW19xpCtIw=="], @@ -513,30 +489,6 @@ "jsdom": ["jsdom@25.0.1", "", { "dependencies": { "cssstyle": "^4.1.0", "data-urls": "^5.0.0", "decimal.js": "^10.4.3", "form-data": "^4.0.0", "html-encoding-sniffer": "^4.0.0", "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.12", "parse5": "^7.1.2", "rrweb-cssom": "^0.7.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^5.0.0", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", "ws": "^8.18.0", "xml-name-validator": "^5.0.0" }, "peerDependencies": { "canvas": "^2.11.2" }, "optionalPeers": ["canvas"] }, "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw=="], - "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], - - "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], - - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], - - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], - - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], - - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], - - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], - - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], - - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], - - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], - - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], - - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], - "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], @@ -567,7 +519,7 @@ "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], - "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "nanoid": ["nanoid@3.3.15", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA=="], "nopt": ["nopt@7.2.1", "", { "dependencies": { "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w=="], @@ -577,7 +529,7 @@ "oxfmt": ["oxfmt@0.42.0", "", { "dependencies": { "tinypool": "2.1.0" }, "optionalDependencies": { "@oxfmt/binding-android-arm-eabi": "0.42.0", "@oxfmt/binding-android-arm64": "0.42.0", "@oxfmt/binding-darwin-arm64": "0.42.0", "@oxfmt/binding-darwin-x64": "0.42.0", "@oxfmt/binding-freebsd-x64": "0.42.0", "@oxfmt/binding-linux-arm-gnueabihf": "0.42.0", "@oxfmt/binding-linux-arm-musleabihf": "0.42.0", "@oxfmt/binding-linux-arm64-gnu": "0.42.0", "@oxfmt/binding-linux-arm64-musl": "0.42.0", "@oxfmt/binding-linux-ppc64-gnu": "0.42.0", "@oxfmt/binding-linux-riscv64-gnu": "0.42.0", "@oxfmt/binding-linux-riscv64-musl": "0.42.0", "@oxfmt/binding-linux-s390x-gnu": "0.42.0", "@oxfmt/binding-linux-x64-gnu": "0.42.0", "@oxfmt/binding-linux-x64-musl": "0.42.0", "@oxfmt/binding-openharmony-arm64": "0.42.0", "@oxfmt/binding-win32-arm64-msvc": "0.42.0", "@oxfmt/binding-win32-ia32-msvc": "0.42.0", "@oxfmt/binding-win32-x64-msvc": "0.42.0" }, "bin": { "oxfmt": "bin/oxfmt" } }, "sha512-QhejGErLSMReNuZ6vxgFHDyGoPbjTRNi6uGHjy0cvIjOQFqD6xmr/T+3L41ixR3NIgzcNiJ6ylQKpvShTgDfqg=="], - "oxlint": ["oxlint@1.59.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.59.0", "@oxlint/binding-android-arm64": "1.59.0", "@oxlint/binding-darwin-arm64": "1.59.0", "@oxlint/binding-darwin-x64": "1.59.0", "@oxlint/binding-freebsd-x64": "1.59.0", "@oxlint/binding-linux-arm-gnueabihf": "1.59.0", "@oxlint/binding-linux-arm-musleabihf": "1.59.0", "@oxlint/binding-linux-arm64-gnu": "1.59.0", "@oxlint/binding-linux-arm64-musl": "1.59.0", "@oxlint/binding-linux-ppc64-gnu": "1.59.0", "@oxlint/binding-linux-riscv64-gnu": "1.59.0", "@oxlint/binding-linux-riscv64-musl": "1.59.0", "@oxlint/binding-linux-s390x-gnu": "1.59.0", "@oxlint/binding-linux-x64-gnu": "1.59.0", "@oxlint/binding-linux-x64-musl": "1.59.0", "@oxlint/binding-openharmony-arm64": "1.59.0", "@oxlint/binding-win32-arm64-msvc": "1.59.0", "@oxlint/binding-win32-ia32-msvc": "1.59.0", "@oxlint/binding-win32-x64-msvc": "1.59.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.18.0" }, "optionalPeers": ["oxlint-tsgolint"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-0xBLeGGjP4vD9pygRo8iuOkOzEU1MqOnfiOl7KYezL/QvWL8NUg6n03zXc7ZVqltiOpUxBk2zgHI3PnRIEdAvw=="], + "oxlint": ["oxlint@1.72.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.72.0", "@oxlint/binding-android-arm64": "1.72.0", "@oxlint/binding-darwin-arm64": "1.72.0", "@oxlint/binding-darwin-x64": "1.72.0", "@oxlint/binding-freebsd-x64": "1.72.0", "@oxlint/binding-linux-arm-gnueabihf": "1.72.0", "@oxlint/binding-linux-arm-musleabihf": "1.72.0", "@oxlint/binding-linux-arm64-gnu": "1.72.0", "@oxlint/binding-linux-arm64-musl": "1.72.0", "@oxlint/binding-linux-ppc64-gnu": "1.72.0", "@oxlint/binding-linux-riscv64-gnu": "1.72.0", "@oxlint/binding-linux-riscv64-musl": "1.72.0", "@oxlint/binding-linux-s390x-gnu": "1.72.0", "@oxlint/binding-linux-x64-gnu": "1.72.0", "@oxlint/binding-linux-x64-musl": "1.72.0", "@oxlint/binding-openharmony-arm64": "1.72.0", "@oxlint/binding-win32-arm64-msvc": "1.72.0", "@oxlint/binding-win32-ia32-msvc": "1.72.0", "@oxlint/binding-win32-x64-msvc": "1.72.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.22.1", "vite-plus": "*" }, "optionalPeers": ["oxlint-tsgolint", "vite-plus"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-1rhdZIP/EvoI91ABIwNU5Q8+bWf8mjrS5UzIOZld4d4bXxJvtlUhlQvaoTogIGin/qdErMOrwaIJvCSIAKTLhA=="], "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], @@ -599,7 +551,7 @@ "pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], - "postcss": ["postcss@8.5.9", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw=="], + "postcss": ["postcss@8.5.16", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg=="], "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], @@ -609,9 +561,9 @@ "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - "react": ["react@19.2.5", "", {}, "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA=="], + "react": ["react@19.2.7", "", {}, "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ=="], - "react-dom": ["react-dom@19.2.5", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.5" } }, "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag=="], + "react-dom": ["react-dom@19.2.7", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.7" } }, "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ=="], "react-is": ["react-is@17.0.2", "", {}, "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="], @@ -619,9 +571,7 @@ "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], - "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], - - "rollup": ["rollup@4.60.1", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.60.1", "@rollup/rollup-android-arm64": "4.60.1", "@rollup/rollup-darwin-arm64": "4.60.1", "@rollup/rollup-darwin-x64": "4.60.1", "@rollup/rollup-freebsd-arm64": "4.60.1", "@rollup/rollup-freebsd-x64": "4.60.1", "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", "@rollup/rollup-linux-arm-musleabihf": "4.60.1", "@rollup/rollup-linux-arm64-gnu": "4.60.1", "@rollup/rollup-linux-arm64-musl": "4.60.1", "@rollup/rollup-linux-loong64-gnu": "4.60.1", "@rollup/rollup-linux-loong64-musl": "4.60.1", "@rollup/rollup-linux-ppc64-gnu": "4.60.1", "@rollup/rollup-linux-ppc64-musl": "4.60.1", "@rollup/rollup-linux-riscv64-gnu": "4.60.1", "@rollup/rollup-linux-riscv64-musl": "4.60.1", "@rollup/rollup-linux-s390x-gnu": "4.60.1", "@rollup/rollup-linux-x64-gnu": "4.60.1", "@rollup/rollup-linux-x64-musl": "4.60.1", "@rollup/rollup-openbsd-x64": "4.60.1", "@rollup/rollup-openharmony-arm64": "4.60.1", "@rollup/rollup-win32-arm64-msvc": "4.60.1", "@rollup/rollup-win32-ia32-msvc": "4.60.1", "@rollup/rollup-win32-x64-gnu": "4.60.1", "@rollup/rollup-win32-x64-msvc": "4.60.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w=="], + "rollup": ["rollup@4.62.2", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.62.2", "@rollup/rollup-android-arm64": "4.62.2", "@rollup/rollup-darwin-arm64": "4.62.2", "@rollup/rollup-darwin-x64": "4.62.2", "@rollup/rollup-freebsd-arm64": "4.62.2", "@rollup/rollup-freebsd-x64": "4.62.2", "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", "@rollup/rollup-linux-arm-musleabihf": "4.62.2", "@rollup/rollup-linux-arm64-gnu": "4.62.2", "@rollup/rollup-linux-arm64-musl": "4.62.2", "@rollup/rollup-linux-loong64-gnu": "4.62.2", "@rollup/rollup-linux-loong64-musl": "4.62.2", "@rollup/rollup-linux-ppc64-gnu": "4.62.2", "@rollup/rollup-linux-ppc64-musl": "4.62.2", "@rollup/rollup-linux-riscv64-gnu": "4.62.2", "@rollup/rollup-linux-riscv64-musl": "4.62.2", "@rollup/rollup-linux-s390x-gnu": "4.62.2", "@rollup/rollup-linux-x64-gnu": "4.62.2", "@rollup/rollup-linux-x64-musl": "4.62.2", "@rollup/rollup-openbsd-x64": "4.62.2", "@rollup/rollup-openharmony-arm64": "4.62.2", "@rollup/rollup-win32-arm64-msvc": "4.62.2", "@rollup/rollup-win32-ia32-msvc": "4.62.2", "@rollup/rollup-win32-x64-gnu": "4.62.2", "@rollup/rollup-win32-x64-msvc": "4.62.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA=="], "rrweb-cssom": ["rrweb-cssom@0.7.1", "", {}, "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg=="], @@ -631,7 +581,7 @@ "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], - "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + "semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], @@ -671,7 +621,7 @@ "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], - "tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="], + "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], "tinypool": ["tinypool@2.1.0", "", {}, "sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw=="], @@ -693,23 +643,19 @@ "tsup": ["tsup@8.5.1", "", { "dependencies": { "bundle-require": "^5.1.0", "cac": "^6.7.14", "chokidar": "^4.0.3", "consola": "^3.4.0", "debug": "^4.4.0", "esbuild": "^0.27.0", "fix-dts-default-cjs-exports": "^1.0.0", "joycon": "^3.1.1", "picocolors": "^1.1.1", "postcss-load-config": "^6.0.1", "resolve-from": "^5.0.0", "rollup": "^4.34.8", "source-map": "^0.7.6", "sucrase": "^3.35.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.11", "tree-kill": "^1.2.2" }, "peerDependencies": { "@microsoft/api-extractor": "^7.36.0", "@swc/core": "^1", "postcss": "^8.4.12", "typescript": ">=4.5.0" }, "optionalPeers": ["@microsoft/api-extractor", "@swc/core", "postcss", "typescript"], "bin": { "tsup": "dist/cli-default.js", "tsup-node": "dist/cli-node.js" } }, "sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing=="], - "tsx": ["tsx@4.21.0", "", { "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw=="], - "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="], + "ufo": ["ufo@1.6.4", "", {}, "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA=="], - "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - - "vite": ["vite@7.3.2", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg=="], + "vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="], "vite-node": ["vite-node@3.2.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg=="], - "vitest": ["vitest@3.2.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", "@vitest/mocker": "3.2.4", "@vitest/pretty-format": "^3.2.4", "@vitest/runner": "3.2.4", "@vitest/snapshot": "3.2.4", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.2.4", "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A=="], + "vitest": ["vitest@3.2.6", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.6", "@vitest/mocker": "3.2.6", "@vitest/pretty-format": "^3.2.6", "@vitest/runner": "3.2.6", "@vitest/snapshot": "3.2.6", "@vitest/spy": "3.2.6", "@vitest/utils": "3.2.6", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.2.6", "@vitest/ui": "3.2.6", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-xejya+bT/j/+R/AGa1XOfRxLmNUlLtlwjRsFUILF+xHfzElmGcmFydy2gqqIrd62ptIEfwVMofd19uNWD9L7Nw=="], - "vue": ["vue@3.5.38", "", { "dependencies": { "@vue/compiler-dom": "3.5.38", "@vue/compiler-sfc": "3.5.38", "@vue/runtime-dom": "3.5.38", "@vue/server-renderer": "3.5.38", "@vue/shared": "3.5.38" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-vAMKHfImQlYSy0C+PBue4s3ERZ2xGKfgZg5GXAsLInq1dyh2H78ILVP5sK0KPFPVW4kv+OGCIvBEondcjpZp7A=="], + "vue": ["vue@3.5.39", "", { "dependencies": { "@vue/compiler-dom": "3.5.39", "@vue/compiler-sfc": "3.5.39", "@vue/runtime-dom": "3.5.39", "@vue/server-renderer": "3.5.39", "@vue/shared": "3.5.39" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-xmZCYabFGcirU8r0fTuvl/LICc1OU620rnqepaJDL/a141ZigkG7AyaxQLdqJ02ZRYzWe6YPaDHeQx7MfknQfA=="], - "vue-component-type-helpers": ["vue-component-type-helpers@3.3.5", "", {}, "sha512-Fe1jyPJoUGpJOYKOri44jduR7My4yYINOMJISuMAbmrs+L5LbIDUc8NTWZYY3EJLK0yPLuCmcd5zoCsE4k2/KA=="], + "vue-component-type-helpers": ["vue-component-type-helpers@3.3.6", "", {}, "sha512-FkljacAwJ9BUoSUdpFe3VDy0sGigNlTH9+2zcXUWmZOjN8swiCkl3t48wOJun0OsUd2cEIda1l04tsxMiKIIrQ=="], "w3c-xmlserializer": ["w3c-xmlserializer@5.0.0", "", { "dependencies": { "xml-name-validator": "^5.0.0" } }, "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA=="], @@ -729,7 +675,7 @@ "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - "ws": ["ws@8.20.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], + "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], "xml-name-validator": ["xml-name-validator@5.0.0", "", {}, "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="], @@ -737,16 +683,12 @@ "@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], - "@vue/compiler-core/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], "@vue/compiler-core/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], - "@vue/compiler-sfc/postcss": ["postcss@8.5.15", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A=="], - "cssstyle/rrweb-cssom": ["rrweb-cssom@0.8.0", "", {}, "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw=="], "editorconfig/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], @@ -767,8 +709,6 @@ "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "@vue/compiler-sfc/postcss/nanoid": ["nanoid@3.3.13", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-sPdqC6ByMVVGvF1ynvvMo0/o+oD1VX7DaHhijt1bFgjvBkHBib4t49GoNDhf2NDta4oeUNlaGbSt5K7qjZ955Q=="], - "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], } } diff --git a/packages/package.json b/packages/package.json new file mode 100644 index 000000000..629800920 --- /dev/null +++ b/packages/package.json @@ -0,0 +1,31 @@ +{ + "name": "@zseven-w/openpencil-packages", + "version": "0.8.0", + "private": true, + "description": "Web SDK workspace for OpenPencil (the Rust product lives in ../crates). Hosts the wasm-backed op-web-sdk viewer family plus the JS build glue that feeds the Rust web target.", + "author": { + "name": "ZSeven-W", + "email": "xkayshen@gmail.com" + }, + "type": "module", + "workspaces": [ + "op-web-sdk", + "op-web-sdk-react", + "op-web-sdk-vue" + ], + "scripts": { + "lint": "oxlint .", + "lint:fix": "oxlint --fix .", + "format": "oxfmt .", + "format:check": "oxfmt --check .", + "generate-iconify-catalog": "node scripts/generate-iconify-catalog.mjs", + "bump": "sh -c 'V=$0; [ -z \"$V\" ] && echo \"Usage: bun run bump \" && exit 1; for f in package.json */package.json; do [ -f \"$f\" ] && jq --arg v \"$V\" \".version=\\$v\" \"$f\" > \"$f.tmp\" && mv \"$f.tmp\" \"$f\" && echo \"$f → $V\"; done'" + }, + "devDependencies": { + "@iconify-json/feather": "^1.2.1", + "@iconify-json/lucide": "^1.2.93", + "@iconify-json/simple-icons": "^1.2.71", + "oxfmt": "^0.42.0", + "oxlint": "^1.57.0" + } +} diff --git a/scripts/generate-iconify-catalog.mjs b/packages/scripts/generate-iconify-catalog.mjs similarity index 94% rename from scripts/generate-iconify-catalog.mjs rename to packages/scripts/generate-iconify-catalog.mjs index bedf7cbb7..2fab056b7 100644 --- a/scripts/generate-iconify-catalog.mjs +++ b/packages/scripts/generate-iconify-catalog.mjs @@ -1,5 +1,6 @@ import fs from 'node:fs'; import path from 'node:path'; +import { fileURLToPath } from 'node:url'; import { createRequire } from 'node:module'; const require = createRequire(import.meta.url); @@ -10,7 +11,10 @@ const SETS = ['lucide', 'feather', 'simple-icons']; // runtime (desktop: include_str at startup; web: fetched from the daemon) so // they never bloat the wasm first-load. const CORE_SETS = new Set(['lucide', 'feather']); -const OUT_DIR = path.resolve('crates/op-editor-ui/assets'); +// Anchored to this script's location (packages/scripts/), not the CWD, so the +// catalog always lands in crates/op-editor-ui/assets regardless of where the +// `generate-iconify-catalog` script is invoked from. +const OUT_DIR = fileURLToPath(new URL('../../crates/op-editor-ui/assets', import.meta.url)); const OUT_CORE = path.join(OUT_DIR, 'iconify-catalog-core.json'); const OUT_BRANDS = path.join(OUT_DIR, 'iconify-catalog-brands.json'); diff --git a/scripts/ensure-agent-native.cjs b/scripts/ensure-agent-native.cjs deleted file mode 100644 index 9553331e9..000000000 --- a/scripts/ensure-agent-native.cjs +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env node -// Provisions the Zig NAPI addon binary by building it from source. -// -// We always build from source on the host so the resulting `agent_napi.node` -// matches the runner's platform/arch. Earlier revisions also tried to download -// a prebuilt from a sibling release repo, but that path was racy: when the -// prebuilt was missing for the current submodule SHA the build fell through -// to source compilation, deposited the binary at `zig-out/napi/...`, and -// electron-builder (which only ships `packages/agent-native/napi/`) silently -// shipped without the addon — every chat request then died at the dynamic -// `@zseven-w/agent-native` import. -// -// Build prerequisite: Zig 0.15+ on PATH. CI workflows install it via -// `mlugg/setup-zig`; local devs install once via their package manager. -// -// Set OPENPENCIL_REQUIRE_AGENT_NATIVE=1 to fail the install when the build -// can't run (electron CI uses this to surface missing prerequisites early). -// -// Set OPENPENCIL_SKIP_AGENT_NATIVE=1 to no-op the script entirely. Useful for -// workflows (npm publish, lint-only CI) that never load the addon at runtime -// and would otherwise pay for a Zig build on every install. -// -// Set ZIG_TARGET to cross-compile for a non-host triple (e.g. on a macOS arm64 -// runner build for x86_64-macos with `ZIG_TARGET=x86_64-macos`). Without it -// the build follows the host arch — fine for native runs, wrong when the -// runner doesn't match the artifact you intend to ship. - -const fs = require('fs'); -const path = require('path'); -const { execSync } = require('child_process'); - -const AGENT_DIR = path.join(__dirname, '..', 'packages', 'agent-native'); -const NAPI_DIR = path.join(AGENT_DIR, 'napi'); -const ZIG_OUT = path.join(AGENT_DIR, 'zig-out', 'napi', 'agent_napi.node'); -const BUNDLED = path.join(NAPI_DIR, 'agent_napi.node'); -const STRICT = process.env.OPENPENCIL_REQUIRE_AGENT_NATIVE === '1'; - -function log(msg) { - console.log(`[agent-native] ${msg}`); -} - -function fail(msg) { - log(msg); - return STRICT ? 1 : 0; -} - -function bundleBinary() { - fs.mkdirSync(NAPI_DIR, { recursive: true }); - fs.copyFileSync(ZIG_OUT, BUNDLED); - log(`Bundled binary at ${BUNDLED}.`); -} - -function buildFromSource() { - try { - execSync('zig version', { stdio: 'ignore' }); - } catch { - return fail( - 'Zig not installed (need 0.15+). Skipping. Install Zig and re-run `bun run agent:build`.', - ); - } - const target = process.env.ZIG_TARGET?.trim(); - const targetFlag = target ? ` -Dtarget=${target}` : ''; - log(`Building NAPI addon (zig build napi -Doptimize=ReleaseFast${targetFlag})…`); - try { - execSync(`zig build napi -Doptimize=ReleaseFast${targetFlag}`, { - cwd: AGENT_DIR, - stdio: 'inherit', - }); - } catch (err) { - return fail(`Zig build failed: ${err.message}`); - } - if (!fs.existsSync(ZIG_OUT)) { - return fail(`Zig build produced no output at ${ZIG_OUT}.`); - } - bundleBinary(); - return 0; -} - -function main() { - if (process.env.OPENPENCIL_SKIP_AGENT_NATIVE === '1') { - log('OPENPENCIL_SKIP_AGENT_NATIVE=1, skipping native binary provisioning.'); - return 0; - } - - if (!fs.existsSync(path.join(NAPI_DIR, 'package.json'))) { - return fail('Submodule not initialized; run `git submodule update --init`. Skipping.'); - } - - // Fast path: binary already in place. Make sure both lookup locations are - // populated so electron-builder (`napi/`) and the runtime loader (which - // checks `zig-out/` first) both find it without re-running the build. - if (fs.existsSync(BUNDLED)) { - log('Binary already present, skipping rebuild.'); - return 0; - } - if (fs.existsSync(ZIG_OUT)) { - log('Binary already built; copying into napi/ for electron-builder.'); - bundleBinary(); - return 0; - } - - return buildFromSource(); -} - -process.exit(main());