{ "name": "orgii", "version": "2.0.8", "description": "Self-evolving agentic development framework — ORG2 desktop app", "main": "src/index.tsx", "scripts": { "prepare": "husky install", "postinstall": "node scripts/setup/postinstall.mjs", "dev:frontend": "node scripts/dev/webpack-server.js", "dev:mobile-native": "ORGII_MOBILE_REMOTE_NATIVE=true node scripts/dev/webpack-server.js", "dev:frontend:rspack": "node scripts/dev/rspack-server.js", "dev:frontend:light": "ORGII_LIGHT_DEV=true FAST_DEV=true DEV_SOURCEMAPS=false node scripts/dev/webpack-server.js", "dev:web": "WEBPACK_DEV_SERVER_PORT=1999 webpack serve --config webpack.web.config.js --mode development", "dev:cpu-monitor": "bash scripts/dev/cpu-monitor.sh", "diag:process": "node tools/org2-diagnostics/cli.mjs process", "diag:memory": "node tools/org2-diagnostics/cli.mjs memory", "diag:test": "node --test tools/org2-diagnostics/test/*.test.mjs", "build": "webpack --config config/webpack.config.js --mode production", "build:web": "webpack --config webpack.web.config.js --mode production", "build:mobile-native": "ORGII_MOBILE_REMOTE_NATIVE=true webpack --config config/webpack.config.js --mode production", "download": "python3 scripts/tools/download.py", "download:sidecars": "python3 scripts/tools/download_sidecars.py", "tauri:dev": "node scripts/dev/tauri-launcher.cjs", "tauri:dev:light": "node scripts/dev/tauri-launcher.cjs --light", "tauri:dev:rspack": "node scripts/dev/tauri-launcher.cjs --rspack", "tauri:dev:webpack": "node scripts/dev/tauri-launcher.cjs --webpack", "tauri:dev:only": "node scripts/tauri/run-with-features.cjs dev", "build:release": "rm -rf build node_modules/.cache && webpack --config config/webpack.config.js --mode production", "tauri:build": "node scripts/tauri/run-with-features.cjs build", "tauri:build:fast": "node scripts/tauri/build-fast-parallel.cjs", "tauri:build:fast:dual": "node scripts/tauri/build-fast-dual.cjs", "tauri:open:instance": "node scripts/tauri/open-instance.cjs", "tauri:build:fast:serial": "node scripts/tauri/run-with-features.cjs build -- --profile dev-build", "tauri:build:fast:local": "node scripts/tauri/build-fast-local.cjs", "tauri:build:fast:open": "node scripts/tauri/build-fast-open.cjs", "tauri:build:release": "node scripts/tauri/run-with-features.cjs build", "tauri:ios:icons": "node scripts/tauri/ios-icons.mjs", "tauri:ios:init": "cd apps/remote-ios && ../../node_modules/.bin/tauri ios init --ci && cd ../.. && pnpm tauri:ios:icons", "tauri:ios:dev": "cd apps/remote-ios && ../../node_modules/.bin/tauri ios dev", "tauri:ios:build": "cd apps/remote-ios && ../../node_modules/.bin/tauri ios build", "clean:cache": "node scripts/dev/clean-cache-if-large.js --node-cache", "clean:auto": "node scripts/dev/clean-cache-if-large.js", "clean:report": "node scripts/dev/clean-cache-if-large.js --report", "clean:stale": "node scripts/dev/clean-cache-if-large.js --stale", "clean:worktrees": "node scripts/dev/clean-cache-if-large.js --worktrees", "clean:full": "node scripts/dev/clean-cache-if-large.js --full", "scripts:test": "node --test scripts/dev/*.test.cjs", "build:stats": "webpack --config config/webpack.config.js --mode production --json build/stats.json", "check:bundle-budget": "node scripts/quality/check-bundle-budget.mjs", "analyze": "webpack --config config/webpack.config.js --mode production --profile --json > build/stats.json && webpack-bundle-analyzer build/stats.json", "typecheck": "tsc --noEmit --pretty false", "typecheck:fast": "tsgo --noEmit --pretty false", "lint": "pnpm lint:fast && eslint src/ --ext .ts,.tsx,.js,.jsx --max-warnings 0 --report-unused-disable-directives", "lint:fast": "oxlint -c src/.oxlintrc.json --max-warnings 0 src", "lint:fix": "eslint src/ --ext .ts,.tsx,.js,.jsx --fix --report-unused-disable-directives", "lint:file": "eslint", "lint:file:fix": "eslint --fix", "cargo:check": "cd src-tauri && cargo check", "cargo:clippy": "cd src-tauri && cargo clippy", "cargo:test": "cd src-tauri && cargo test --workspace --no-fail-fast", "cargo:test:lib": "cd src-tauri && cargo test --lib --no-fail-fast", "cargo:test:agent_core": "cd src-tauri && cargo test -p agent_core", "cargo:test:agent_sessions": "cd src-tauri && cargo test --lib agent_sessions::", "cargo:test:api": "cd src-tauri && cargo test --lib api::", "check:circular": "node scripts/quality/check-circular-dependencies.mjs", "check:test-placement": "node scripts/quality/check-test-placement.mjs", "test": "vitest run --config config/vitest.config.ts", "test:coverage": "vitest run --config config/vitest.config.ts --coverage", "test:watch": "vitest --config config/vitest.config.ts", "check:unused-exports": "knip --config config/knip.json", "check:unused-exports:all": "knip --config config/knip.json --include files,dependencies,devDependencies,exports,types,nsExports,nsTypes", "check:e2e-oauth-guards": "node scripts/quality/check-e2e-oauth-guards.mjs", "check:i18n:cloud": "node scripts/quality/check-missing-i18n-keys.mjs --namespace navigation --prefix cloud && node scripts/quality/check-missing-i18n-keys.mjs --namespace navigation --prefix collaboration.forkImported", "check:i18n:quality": "node scripts/quality/check-i18n-resource-quality.mjs", "check:i18n:contracts": "pnpm check:i18n-keys && pnpm check:i18n:quality", "check:i18n-keys": "node scripts/quality/i18n-keys/check.mjs", "check:i18n-keys:report": "node scripts/quality/i18n-keys/check.mjs --report", "test:i18n-keys": "node --test scripts/quality/i18n-keys/*.test.mjs", "check:typed-lint": "node scripts/quality/typed-lint/check.mjs", "test:typed-lint": "node --test scripts/quality/typed-lint/*.test.mjs", "check:boundaries": "node scripts/quality/dependency-boundaries/check.mjs", "test:boundaries": "node --test scripts/quality/dependency-boundaries/*.test.mjs", "check:queue-authority": "node scripts/quality/queue-authority/check.mjs", "test:queue-authority": "node --test scripts/quality/queue-authority/*.test.mjs", "test:mutation": "stryker run config/stryker.config.mjs" }, "keywords": [ "orgii", "agent", "tauri", "desktop" ], "author": "YORG-AI", "license": "AGPL-3.0-or-later", "dependencies": { "@a2ui/react": "^0.10.0", "@a2ui/web_core": "^0.10.0", "@codemirror/autocomplete": "^6.20.0", "@codemirror/commands": "6.10.0", "@codemirror/lang-cpp": "^6.0.3", "@codemirror/lang-css": "^6.3.1", "@codemirror/lang-html": "^6.4.11", "@codemirror/lang-java": "^6.0.2", "@codemirror/lang-javascript": "^6.2.4", "@codemirror/lang-json": "^6.0.2", "@codemirror/lang-markdown": "^6.5.0", "@codemirror/lang-python": "^6.2.1", "@codemirror/lang-rust": "^6.0.2", "@codemirror/language": "6.12.2", "@codemirror/legacy-modes": "^6.5.3", "@codemirror/merge": "^6.11.2", "@codemirror/search": "^6.6.0", "@codemirror/state": "6.6.0", "@codemirror/view": "^6.39.11", "@crabnebula/tauri-plugin-drag": "^2.1.0", "@dnd-kit/core": "^6.3.1", "@dnd-kit/modifiers": "^9.0.0", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@emotion/is-prop-valid": "^1.4.0", "@fabianlars/tauri-plugin-oauth": "^2.0.0", "@hugeicons/core-free-icons": "4.3.0", "@hugeicons/react": "1.1.10", "@lezer/highlight": "^1.2.3", "@libsql/client": "^0.17.0", "@replit/codemirror-indentation-markers": "^6.5.3", "@supabase/supabase-js": "^2.106.2", "@tanstack/react-table": "^8.21.3", "@tanstack/react-virtual": "^3.13.13", "@tauri-apps/api": "~2.11.0", "@tauri-apps/plugin-deep-link": "^2.4.5", "@tauri-apps/plugin-dialog": "2.6.0", "@tauri-apps/plugin-fs": "2.4.5", "@tauri-apps/plugin-notification": "^2.3.3", "@tauri-apps/plugin-opener": "^2.5.2", "@tauri-apps/plugin-process": "^2.3.1", "@tauri-apps/plugin-shell": "^2.3.3", "@tauri-apps/plugin-store": "^2.4.1", "@tauri-apps/plugin-updater": "2.9.0", "@types/react": "^19.2.15", "@types/react-dom": "^19.2.3", "@uiw/codemirror-themes": "^4.25.4", "@uiw/react-codemirror": "^4.25.4", "@xterm/addon-fit": "^0.11.0", "@xterm/addon-search": "^0.16.0", "@xterm/addon-serialize": "^0.14.0", "@xterm/addon-unicode11": "^0.9.0", "@xterm/addon-web-links": "^0.12.0", "@xterm/addon-webgl": "^0.19.0", "@xterm/xterm": "^6.0.0", "ansi-to-react": "^6.1.6", "classnames": "^2.5.1", "clsx": "^2.1.1", "codemirror": "^6.0.2", "dayjs": "^1.11.10", "dompurify": "^3.4.13", "framer-motion": "^12.23.24", "i18next": "^25.8.1", "ignore": "^7.0.5", "jotai": "^2.8.2", "jotai-family": "^1.0.2", "jsqr": "1.4.0", "jszip": "^3.10.1", "lodash": "^4.18.1", "mammoth": "^1.12.0", "mermaid": "^10.9.8", "papaparse": "^5.5.3", "process": "^0.11.10", "react": "^19.2.6", "react-artifact-runtime": "npm:react@18.3.1", "react-dom": "^19.2.6", "react-dom-artifact-runtime": "npm:react-dom@18.3.1", "react-i18next": "^16.5.4", "react-is": "^19.2.4", "react-markdown": "^9.0.1", "react-router-dom": "^7.18.3", "react-syntax-highlighter": "^15.5.0", "react-virtuoso": "^4.17.0", "recharts": "^3.6.0", "refractor": "3.6.0", "remark-gfm": "^4.0.0", "sucrase": "^3.35.0", "uuid": "^14.0.2", "yaml": "^2.9.0", "zod": "^4.3.6" }, "devDependencies": { "@babel/core": "^7.29.6", "@commitlint/cli": "^19", "@commitlint/config-conventional": "^19", "@pmmmwh/react-refresh-webpack-plugin": "^0.6.2", "@rspack/core": "^2.2.1", "@rspack/dev-server": "^2.2.1", "@rspack/plugin-react-refresh": "^2.0.2", "@svgr/webpack": "^8.1.0", "@swc/core": "^1.15.5", "@tailwindcss/postcss": "^4.3.3", "@tauri-apps/cli": "2", "@trivago/prettier-plugin-sort-imports": "^6.0.2", "@types/lodash": "^4.17.25", "@types/node": "^20.10.5", "@types/papaparse": "^5.5.2", "@types/react-syntax-highlighter": "^15.5.13", "@typescript-eslint/eslint-plugin": "^6.16.0", "@typescript-eslint/parser": "^6.16.0", "@typescript/native-preview": "7.0.0-dev.20260707.2", "@vitest/coverage-v8": "^4.1.11", "autoprefixer": "^10.4.16", "babel-loader": "^10.1.1", "babel-plugin-react-compiler": "^1.0.0", "clean-webpack-plugin": "^4.0.0", "copy-webpack-plugin": "^12.0.2", "css-loader": "^6.8.1", "css-minimizer-webpack-plugin": "^7.0.2", "dotenv": "^17.4.2", "dotenv-webpack": "^8.0.1", "dugite": "^3.2.2", "esbuild-loader": "^4.4.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-unused-imports": "^4.3.0", "html-webpack-plugin": "^5.6.6", "husky": "^8.0.3", "knip": "^6.34.0", "jsdom": "^29.1.1", "lint-staged": "^15.2.0", "madge": "8.0.0", "oxlint": "^1.80.0", "mini-css-extract-plugin": "^2.9.2", "postcss": "^8.5.23", "postcss-loader": "^8.2.1", "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.8.1", "raw-loader": "^4.0.2", "react-refresh": "^0.18.0", "sass": "^1.69.5", "sass-embedded": "^1.103.1", "sass-loader": "^16.0.8", "style-loader": "^3.3.3", "swc-loader": "^0.2.6", "tailwindcss": "^4.3.3", "terser-webpack-plugin": "^5.3.10", "typescript": "^5.3.3", "vitest": "^4.1.11", "webpack": "^5.91.0", "webpack-bundle-analyzer": "^5.1.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.2.6", "dependency-cruiser": "16.10.4", "@stryker-mutator/core": "9.6.1", "@stryker-mutator/vitest-runner": "9.6.1", "vite": "^6.4.3" }, "eslintConfig": { "root": true, "parser": "@typescript-eslint/parser", "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:react/recommended", "plugin:react-hooks/recommended", "plugin:prettier/recommended" ], "plugins": [ "@typescript-eslint", "react", "react-hooks", "prettier", "unused-imports" ], "parserOptions": { "ecmaVersion": 2020, "sourceType": "module", "ecmaFeatures": { "jsx": true } }, "settings": { "react": { "version": "detect" } }, "ignorePatterns": [ "src/util/qr/qrcodeGeneratorVendor.js", "/*", "!/src", "*.css", "*.scss" ], "rules": { "react/react-in-jsx-scope": "off", "react/prop-types": "off", "@typescript-eslint/no-unused-vars": "off", "unused-imports/no-unused-imports": "error", "unused-imports/no-unused-vars": [ "warn", { "vars": "all", "varsIgnorePattern": "^_", "args": "after-used", "argsIgnorePattern": "^_" } ], "no-console": [ "warn", { "allow": [ "warn", "error" ] } ], "no-restricted-syntax": [ "error", { "selector": "ImportDeclaration[source.value='@src/icons'] ImportNamespaceSpecifier", "message": "Do not namespace-import the icon barrel; import each glyph by name so webpack links deep icon modules individually." }, { "selector": "TSAsExpression[typeAnnotation.typeName.name=\"IconSvgElement\"]", "message": "Never cast to hugeicons glyph-data types — a non-array value crashes HugeiconsIcon's [...icon] spread at runtime. Type mixed icon values as RenderableIcon (@src/components/AnyIcon) and render via AnyIcon." }, { "selector": "TSAsExpression[typeAnnotation.typeName.name=\"IconSvgObject\"]", "message": "Never cast to hugeicons glyph-data types — a non-array value crashes HugeiconsIcon's [...icon] spread at runtime. Type mixed icon values as RenderableIcon (@src/components/AnyIcon) and render via AnyIcon." } ], "no-restricted-imports": [ "error", { "paths": [ { "name": "lucide-react", "message": "lucide-react has been removed. Use hugeicons via @src/icons — see docs/hugeicons-migration/icon-mapping.md for the lucide -> hugeicons name map." } ], "patterns": [ { "group": [ "@hugeicons/*" ], "message": "Import icons from @src/icons (it re-exports HugeiconsIcon and every used glyph). To add a glyph, add one re-export line to src/icons.ts." }, { "group": [ "@src/hooks/workStation", "@src/hooks/workStation/*" ], "message": "hooks/workStation was dissolved. Tab-host hooks: @src/hooks/tabHost/*; editor hooks: @src/modules/WorkStation/CodeEditor/hooks/*; browser hooks: @src/modules/WorkStation/Browser/hooks/*; session capture: @src/features/SessionSetup/hooks/*; context menu: @src/scaffold/ContextMenu/*." }, { "group": [ "@src/hooks/dependencies", "@src/hooks/dependencies/*" ], "message": "Moved to @src/modules/MainApp/Integrations/hooks/* (usePostPaintGitProbe -> @src/app/root/usePostPaintGitProbe)." }, { "group": [ "@src/hooks/git/sourceControl", "@src/hooks/git/sourceControl/*" ], "message": "Moved to @src/modules/WorkStation/CodeEditor/hooks/sourceControl/* (generateCommitMessage -> @src/api/tauri/git/commitMessage)." }, { "group": [ "@src/hooks/testRunner", "@src/hooks/testRunner/*" ], "message": "Moved to @src/modules/WorkStation/CodeEditor/hooks/useTestRunner." }, { "group": [ "@src/hooks/benchmark", "@src/hooks/benchmark/*" ], "message": "Moved to @src/features/BenchmarkPanel/hooks/*." } ] } ] }, "overrides": [ { "files": [ "src/icons.ts" ], "rules": { "no-restricted-imports": "off" } }, { "files": [ "**/*.test.ts", "**/*.test.tsx" ], "rules": { "no-restricted-syntax": [ "error", { "selector": "MemberExpression[object.name=/^(describe|it|test|suite|bench)$/][property.name='only']", "message": "Focused test committed: `.only` makes the rest of this file silently not run. Remove it before committing." }, { "selector": "MemberExpression[object.object.name=/^(describe|it|test)$/][object.property.name='only']", "message": "Focused test committed: `.only.each` makes the rest of this file silently not run. Remove it before committing." }, { "selector": "TSAsExpression[typeAnnotation.typeName.name=\"IconSvgElement\"]", "message": "Never cast to hugeicons glyph-data types — a non-array value crashes HugeiconsIcon's [...icon] spread at runtime. Type mixed icon values as RenderableIcon (@src/components/AnyIcon) and render via AnyIcon." }, { "selector": "TSAsExpression[typeAnnotation.typeName.name=\"IconSvgObject\"]", "message": "Never cast to hugeicons glyph-data types — a non-array value crashes HugeiconsIcon's [...icon] spread at runtime. Type mixed icon values as RenderableIcon (@src/components/AnyIcon) and render via AnyIcon." } ] } } ] }, "prettier": { "tailwindStylesheet": "./src/tailwind.css", "endOfLine": "auto", "singleQuote": false, "semi": true, "trailingComma": "es5", "importOrder": [ "", "^@src/(.*)$", "^@common/(.*)$", "^@api/(.*)$", "^@page/(.*)$", "^[./]", "^(.*).scss" ], "importOrderSeparation": true, "importOrderSortSpecifiers": true, "plugins": [ "@trivago/prettier-plugin-sort-imports", "prettier-plugin-tailwindcss" ] }, "unimported": { "entry": [ "src/index.tsx" ], "extensions": [ ".ts", ".tsx", ".js", ".jsx" ], "ignorePatterns": [ "**/node_modules/**", "**/*.d.ts", "**/types.ts", "**/config.ts", "**/exports.ts", "**/*.test.ts", "**/*.test.tsx", "**/scripts/**" ], "ignoreUnresolved": [ "@src/*", "@/*" ], "moduleDirectory": [ "node_modules", "src" ], "aliases": { "@src/*": [ "src/*" ], "@/*": [ "src/*" ] } }, "lint-staged": { "src/**/*.{ts,tsx,js,jsx}": [ "oxlint -c src/.oxlintrc.json --max-warnings 0" ], "*.{ts,tsx,js,jsx}": [ "eslint --fix", "prettier --write" ], "*.{css,scss,md,json}": [ "prettier --write" ] }, "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0", "pnpm": { "overrides": { "sass-loader>node-sass": "-" }, "patchedDependencies": { "@hugeicons/core-free-icons@4.3.0": "patches/@hugeicons__core-free-icons@4.3.0.patch" } } }