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.
This commit is contained in:
parent
77dca8c01b
commit
22da4eed3c
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
|
|
@ -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
|
||||
|
|
|
|||
4
.github/pull_request_template.md
vendored
4
.github/pull_request_template.md
vendored
|
|
@ -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/)
|
||||
|
|
|
|||
3
.gitmodules
vendored
3
.gitmodules
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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/
|
||||
|
|
|
|||
16
AGENTS.md
16
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 <crate>`
|
||||
- **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 <crate>`
|
||||
- **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
|
||||
|
||||
|
|
|
|||
23
CLAUDE.md
23
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 <crate>`
|
||||
- **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 <crate>`
|
||||
- **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:<port>/mcp`)
|
||||
- **CLI:** `cargo build -p op-cli` → binary `op`
|
||||
- **MCP server:** built into the desktop/web host (`--mcp <path>`); 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 <version>` (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 <version>` (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
|
||||
|
|
|
|||
|
|
@ -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 .
|
||||
|
|
|
|||
40
README.de.md
40
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> # 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 -- <args> # 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 <version> # 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
|
||||
|
||||
|
|
|
|||
40
README.es.md
40
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 <version> # 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 -- <args> # 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 <version> # 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`
|
||||
|
||||
|
|
|
|||
40
README.fr.md
40
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 <version> # 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 -- <args> # 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 <version> # 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`
|
||||
|
||||
|
|
|
|||
40
README.hi.md
40
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 <version> # सभी 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 -- <args> # 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 <version> # 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 खोलें
|
||||
|
||||
|
|
|
|||
40
README.id.md
40
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 <version> # 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 -- <args> # 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 <version> # 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`
|
||||
|
||||
|
|
|
|||
40
README.ja.md
40
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 <version> # すべての 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 -- <args> # 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 <version> # 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 を作成
|
||||
|
||||
|
|
|
|||
40
README.ko.md
40
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 <version> # 모든 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 -- <args> # 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 <version> # 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 생성
|
||||
|
||||
|
|
|
|||
60
README.md
60
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 <version> # 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 -- <args> # 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 <version> # 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+.
|
||||
|
|
|
|||
40
README.pt.md
40
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 <version> # 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 -- <args> # 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 <version> # 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`
|
||||
|
||||
|
|
|
|||
40
README.ru.md
40
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 <version> # Синхронизация версий во всех 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 -- <args> # 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 <version> # 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`
|
||||
|
||||
|
|
|
|||
40
README.th.md
40
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 <version> # 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 -- <args> # 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 <version> # 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`
|
||||
|
||||
|
|
|
|||
40
README.tr.md
40
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 <version> # 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 -- <args> # 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 <version> # 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
|
||||
|
||||
|
|
|
|||
40
README.vi.md
40
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 <version> # Đồ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 -- <args> # 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 <version> # 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`
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <version> # 在所有 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 -- <args> # 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 <version> # 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
|
||||
|
||||
|
|
|
|||
40
README.zh.md
40
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 <version> # 同步所有 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 -- <args> # 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 <version> # 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
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
);
|
||||
}
|
||||
|
|
|
|||
46
package.json
46
package.json
|
|
@ -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 <version>\" && 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 <port>)'",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
|
|
@ -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 <version>` (syncs the SDK `package.json`s; Rust versions live in Cargo.toml).
|
||||
|
||||
## op-web-sdk (`op-web-sdk/`)
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 22f20e42cdfbfba7623693ce3f8b17d59fac8ea7
|
||||
|
|
@ -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=="],
|
||||
}
|
||||
}
|
||||
31
packages/package.json
Normal file
31
packages/package.json
Normal file
|
|
@ -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 <version>\" && 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"
|
||||
}
|
||||
}
|
||||
|
|
@ -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');
|
||||
|
||||
|
|
@ -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());
|
||||
Loading…
Reference in a new issue