{ "name": "jan-app", "private": true, "type": "module", "workspaces": { "packages": [ "core", "web-app", "extensions/*", "packages/*", "extensions-samples/*" ] }, "scripts": { "lint": "yarn workspace @janhq/web-app lint", "dev": "yarn dev:tauri", "ios": "yarn tauri ios dev", "android": "yarn tauri android dev", "build": "yarn build:tauri", "test": "yarn test:core && yarn test:web && yarn test:ext && yarn test:packages", "test:core": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vitest run --project @janhq/core", "test:web": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vitest run --project @janhq/web-app", "test:ext": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vitest run --project '@janhq/*-extension' --project @janhq/extensions", "test:packages": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vitest run --project @janhq/extension-api --project @janhq/extension-runtime --project @janhq/sample-hello-provider", "test:all": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vitest run", "test:watch": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vitest", "test:ui": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vitest --ui", "test:coverage": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vitest run --coverage", "test:prepare": "yarn build:icon && yarn copy:assets:tauri && yarn build --no-bundle ", "dev:web": "yarn workspace @janhq/web-app dev", "dev:tauri": "yarn build:icon && yarn copy:assets:tauri && cross-env IS_CLEAN=true tauri dev", "dev:ios": "yarn copy:assets:mobile && RUSTC_WRAPPER= cross-env IS_IOS=true yarn tauri ios dev --features mobile", "dev:android": "yarn copy:assets:mobile && cross-env IS_ANDROID=true yarn tauri android dev --features mobile", "build:android": "yarn build:icon && yarn copy:assets:mobile && cross-env IS_CLEAN=true yarn tauri android build -- --no-default-features --features mobile", "build:ios": "yarn build:icon && yarn copy:assets:mobile && cross-env IS_IOS=true yarn tauri ios build -- --no-default-features --features mobile", "build:ios:device": "yarn build:icon && yarn copy:assets:mobile && cross-env IS_IOS=true yarn tauri ios build -- --no-default-features --features mobile --export-method debugging", "copy:assets:tauri": "cpx \"LICENSE\" \"src-tauri/resources/\"", "copy:assets:mobile": "cpx \"LICENSE\" \"src-tauri/resources/\"", "download:lib": "node ./scripts/download-lib.mjs", "download:bin": "node ./scripts/download-bin.mjs", "build:mlx-server": "make build-mlx-server", "build:tauri:win32": "yarn download:bin && yarn tauri build", "build:tauri:linux": "yarn download:bin && NO_STRIP=1 ./src-tauri/build-utils/shim-linuxdeploy.sh yarn tauri build && ./src-tauri/build-utils/buildAppImage.sh", "build:tauri:darwin": "yarn download:bin && yarn build:mlx-server && yarn tauri build --target universal-apple-darwin", "build:tauri": "yarn build:icon && yarn copy:assets:tauri && run-script-os", "build:tauri:plugin:api": "cd src-tauri/plugins && yarn install && cd ../.. && run-script-os", "build:tauri:plugin:api:darwin": "cd src-tauri/plugins && yarn workspaces foreach -Apt run build", "build:tauri:plugin:api:win32": "cd src-tauri/plugins && yarn workspaces foreach -Apt --exclude @janhq/tauri-plugin-mlx-api run build", "build:tauri:plugin:api:linux": "cd src-tauri/plugins && yarn workspaces foreach -Apt --exclude @janhq/tauri-plugin-mlx-api run build", "build:icon": "tauri icon ./src-tauri/icons-macos/icon.png -o ./src-tauri/icons-macos && tauri icon ./src-tauri/icons/icon.png && node ./scripts/build-windows-icon.mjs", "build:core": "yarn build:extension-api && yarn build:extension-runtime && cd core && yarn build && yarn pack", "build:web": "yarn workspace @janhq/web-app build", "build:extension-api": "yarn workspace @janhq/extension-api build", "build:extension-runtime": "yarn workspace @janhq/extension-runtime build", "build:samples": "yarn workspaces foreach -Apt --include '@janhq/sample-*' run build", "build:extensions": "yarn build:extension-api && yarn build:extension-runtime && yarn workspace @janhq/core build && yarn workspaces foreach -Apt --include '@janhq/*-extension' run build && yarn build:samples", "prepare": "husky", "e2e": "yarn build:e2e:app && cd e2e && yarn install --immutable && yarn test", "build:e2e:app": "yarn build:icon && node ./scripts/stub-tauri-resources.mjs && yarn build:e2e:deps && cross-env IS_TAURI=true yarn build:web && cargo build --locked --manifest-path src-tauri/Cargo.toml --features e2e --bin Jan-Desktop", "build:e2e:deps": "yarn install && yarn build:tauri:plugin:api && yarn build:core && yarn build:extensions" }, "devDependencies": { "@tauri-apps/cli": "^2.7.0", "@vitest/coverage-v8": "^3.2.7", "cpx": "^1.5.0", "cross-env": "^7.0.3", "husky": "^9.1.5", "jsdom": "^26.1.0", "rimraf": "^3.0.2", "run-script-os": "^1.1.6", "tar": "^7.5.22", "unzipper": "^0.12.3", "vitest": "^3.2.7" }, "version": "0.0.0", "installConfig": { "hoistingLimits": "workspaces" }, "resolutions": { "lru-cache/yallist": "4.0.0", "compression": "^1.8.2", "tinypool": "^2.1.2", "lodash-es": "^4.18.1", "serve-handler": "6.1.7", "@ai-sdk/provider-utils@npm:3.0.18": "3.0.28", "@ai-sdk/provider-utils@npm:4.0.27": "4.0.33", "@types/react": "19.1.2", "@types/react-dom": "19.1.2" }, "packageManager": "yarn@4.5.3" }