{
  "name": "skykoi",
  "version": "2026.3.378",
  "description": "SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.",
  "keywords": [
    "cli",
    "gateway",
    "koi",
    "runtime",
    "skykoi"
  ],
  "license": "BUSL-1.1",
  "author": "Ricardo Martinez",
  "repository": {
    "type": "git",
    "url": "https://github.com/ricardoamartinez/skykoi-runtime.git"
  },
  "bin": {
    "koi": "skykoi.mjs",
    "skykoi": "skykoi.mjs"
  },
  "files": [
    "assets/",
    "CHANGELOG.md",
    "dist/",
    "docs/",
    "extensions/",
    "LICENSE",
    "THIRD_PARTY_LICENSES.txt",
    "skykoi.mjs",
    "README-header.png",
    "README.md",
    "skills/"
  ],
  "type": "module",
  "main": "dist/index.js",
  "exports": {
    ".": "./dist/index.js",
    "./plugin-sdk": "./dist/plugin-sdk/index.js",
    "./gateway-client": "./dist/gateway-client.js",
    "./cli-entry": "./skykoi.mjs"
  },
  "scripts": {
    "android:assemble": "cd apps/android && ./gradlew :app:assembleDebug",
    "android:install": "cd apps/android && ./gradlew :app:installDebug",
    "android:run": "cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity",
    "android:test": "cd apps/android && ./gradlew :app:testDebugUnitTest",
    "build": "pnpm canvas:a2ui:bundle && tsdown && node --import tsx scripts/fix-playwright-bundle.ts && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts",
    "build:plugin-sdk:dts": "tsc -p config/tsconfig.plugin-sdk.dts.json",
    "canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh",
    "check": "pnpm tsgo && pnpm lint && pnpm format",
    "check:docs": "pnpm format:docs && pnpm lint:docs && pnpm docs:build",
    "check:loc": "node --import tsx scripts/check-ts-max-loc.ts --max 500",
    "dev": "node scripts/run-node.mjs",
    "docs:bin": "node scripts/build-docs-list.mjs",
    "docs:build": "cd docs && pnpm dlx --reporter append-only mint broken-links",
    "docs:check-links": "node scripts/docs-link-audit.mjs",
    "docs:dev": "cd docs && mint dev",
    "docs:list": "node scripts/docs-list.js",
    "format": "oxfmt --check",
    "format:all": "pnpm format && pnpm format:swift",
    "format:docs": "git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check",
    "format:docs:fix": "git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write",
    "format:fix": "oxfmt --write",
    "format:swift": "swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources",
    "gateway:dev": "SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway",
    "gateway:dev:reset": "SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset",
    "gateway:watch": "node scripts/watch-node.mjs gateway --force",
    "ios:build": "bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project skykoi.xcodeproj -scheme skykoi -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'",
    "ios:gen": "cd apps/ios && xcodegen generate",
    "ios:open": "cd apps/ios && xcodegen generate && open skykoi.xcodeproj",
    "ios:run": "bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project skykoi.xcodeproj -scheme skykoi -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.skykoi.ios'",
    "lint": "oxlint --type-aware",
    "lint:all": "pnpm lint && pnpm lint:swift",
    "lint:docs": "pnpm dlx markdownlint-cli2",
    "lint:docs:fix": "pnpm dlx markdownlint-cli2 --fix",
    "lint:fix": "oxlint --type-aware --fix && pnpm format:fix",
    "lint:swift": "swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)",
    "mac:open": "open dist/skykoi.app",
    "mac:package": "bash scripts/package-mac-app.sh",
    "mac:restart": "bash scripts/restart-mac.sh",
    "moltbot:rpc": "node scripts/run-node.mjs koi --mode rpc --json",
    "skykoi": "node scripts/run-node.mjs",
    "skykoi:rpc": "node scripts/run-node.mjs koi --mode rpc --json",
    "plugins:sync": "node --import tsx scripts/sync-plugin-versions.ts",
    "playwright:install": "npx playwright install chromium",
    "prepack": "pnpm build && pnpm ui:build",
    "protocol:check": "pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift apps/shared/SkyKoiKit/Sources/SkyKoiProtocol/GatewayModels.swift",
    "protocol:gen": "node --import tsx scripts/protocol-gen.ts",
    "protocol:gen:swift": "node --import tsx scripts/protocol-gen-swift.ts",
    "release:check": "node --import tsx scripts/release-check.ts",
    "start": "node scripts/run-node.mjs",
    "test": "node scripts/test-parallel.mjs",
    "test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all",
    "test:coverage": "vitest run --coverage",
    "test:docker:all": "pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup",
    "test:docker:cleanup": "bash scripts/test-cleanup-docker.sh",
    "test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh",
    "test:docker:gateway-network": "bash scripts/e2e/gateway-network-docker.sh",
    "test:docker:live-gateway": "bash scripts/test-live-gateway-models-docker.sh",
    "test:docker:live-models": "bash scripts/test-live-models-docker.sh",
    "test:docker:onboard": "bash scripts/e2e/onboard-docker.sh",
    "test:docker:plugins": "bash scripts/e2e/plugins-docker.sh",
    "test:docker:qr": "bash scripts/e2e/qr-import-docker.sh",
    "test:e2e": "vitest run --config config/vitest.e2e.config.ts",
    "test:force": "node --import tsx scripts/test-force.ts",
    "test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh",
    "test:install:e2e:anthropic": "SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh",
    "test:install:e2e:openai": "SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh",
    "test:install:smoke": "bash scripts/test-install-sh-docker.sh",
    "test:live": "SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts",
    "test:ui": "pnpm --dir ui test",
    "test:watch": "vitest",
    "tui": "node scripts/run-node.mjs tui",
    "tui:dev": "SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui",
    "ui:build": "node scripts/ui.js build",
    "ui:dev": "node scripts/ui.js dev",
    "ui:install": "node scripts/ui.js install"
  },
  "dependencies": {
    "@clack/prompts": "^1.0.0",
    "@sinclair/typebox": "0.34.48",
    "ajv": "^8.17.1",
    "chalk": "^5.6.2",
    "chokidar": "^5.0.0",
    "commander": "^14.0.3",
    "croner": "^10.0.1",
    "dotenv": "^17.2.4",
    "express": "^5.2.1",
    "hono": "4.12.18",
    "jiti": "^2.6.1",
    "json5": "^2.2.3",
    "long": "^5.3.2",
    "proper-lockfile": "^4.1.2",
    "strip-ansi": "^7.1.0",
    "tar": "7.5.15",
    "tslog": "^4.10.2",
    "undici": "^7.21.0",
    "ws": "^8.19.0",
    "yaml": "^2.8.2",
    "zod": "^4.3.6"
  },
  "devDependencies": {
    "@grammyjs/types": "^3.23.0",
    "@lit-labs/signals": "^0.2.0",
    "@lit/context": "^1.1.6",
    "@types/express": "^5.0.6",
    "@types/markdown-it": "^14.1.2",
    "@types/node": "^25.2.1",
    "@types/proper-lockfile": "^4.1.4",
    "@types/qrcode-terminal": "^0.12.2",
    "@types/ws": "^8.18.1",
    "@typescript/native-preview": "7.0.0-dev.20260206.1",
    "@vitest/coverage-v8": "^4.0.18",
    "lit": "^3.3.2",
    "ollama": "^0.6.3",
    "oxfmt": "0.28.0",
    "oxlint": "^1.43.0",
    "oxlint-tsgolint": "^0.11.4",
    "rolldown": "1.0.0-rc.3",
    "signal-utils": "0.21.1",
    "tsdown": "^0.20.3",
    "tsx": "^4.21.0",
    "typescript": "^5.9.3",
    "vitest": "^4.0.18"
  },
  "peerDependencies": {
    "@napi-rs/canvas": "^0.1.89",
    "node-llama-cpp": "3.18.1"
  },
  "optionalDependencies": {
    "@agentclientprotocol/sdk": "0.14.1",
    "@aws-sdk/client-bedrock": "^3.985.0",
    "@buape/carbon": "0.16.0",
    "@grammyjs/runner": "^2.0.3",
    "@grammyjs/transformer-throttler": "^1.2.1",
    "@homebridge/ciao": "^1.3.4",
    "@line/bot-sdk": "^10.6.0",
    "@lydell/node-pty": "1.2.0-beta.3",
    "@mariozechner/pi-agent-core": "0.52.8",
    "@mariozechner/pi-ai": "0.52.8",
    "@mariozechner/pi-coding-agent": "0.52.8",
    "@mariozechner/pi-tui": "0.52.8",
    "@mozilla/readability": "^0.6.0",
    "@slack/bolt": "^4.6.0",
    "@slack/web-api": "^7.13.0",
    "@whiskeysockets/baileys": "7.0.0-rc.9",
    "cli-highlight": "^2.1.11",
    "discord-api-types": "^0.38.38",
    "file-type": "^21.3.0",
    "grammy": "^1.39.3",
    "jszip": "^3.10.1",
    "linkedom": "^0.18.12",
    "markdown-it": "^14.1.0",
    "node-edge-tts": "^1.2.10",
    "osc-progress": "^0.3.0",
    "pdfjs-dist": "^5.4.624",
    "playwright": "1.58.2",
    "playwright-core": "1.58.2",
    "qrcode-terminal": "^0.12.0",
    "sharp": "^0.34.5",
    "sqlite-vec": "0.1.7-alpha.2"
  },
  "overrides": {
    "@whiskeysockets/baileys": {
      "libsignal": "2.0.1"
    },
    "tar": "7.5.15"
  },
  "engines": {
    "node": ">=22.12.0"
  },
  "packageManager": "pnpm@10.23.0",
  "pnpm": {
    "minimumReleaseAge": 2880,
    "overrides": {
      "fast-xml-parser": "5.3.4",
      "form-data": "2.5.4",
      "@hono/node-server>hono": "4.12.18",
      "@hono/node-server": "2.0.2",
      "hono": "4.12.18",
      "qs": "6.14.1",
      "@sinclair/typebox": "0.34.48",
      "tar": "7.5.15",
      "tough-cookie": "4.1.3"
    },
    "onlyBuiltDependencies": [
      "@lydell/node-pty",
      "@matrix-org/matrix-sdk-crypto-nodejs",
      "@napi-rs/canvas",
      "@whiskeysockets/baileys",
      "authenticate-pam",
      "esbuild",
      "node-llama-cpp",
      "protobufjs",
      "sharp"
    ],
    "patchedDependencies": {
      "qrcode-terminal@0.12.0": "patches/qrcode-terminal@0.12.0.patch",
      "@mariozechner/pi-ai@0.52.8": "patches/@mariozechner__pi-ai@0.52.8.patch"
    }
  },
  "vitest": {
    "coverage": {
      "provider": "v8",
      "reporter": [
        "text",
        "lcov"
      ],
      "thresholds": {
        "lines": 70,
        "functions": 70,
        "branches": 70,
        "statements": 70
      },
      "include": [
        "src/**/*.ts"
      ],
      "exclude": [
        "src/**/*.test.ts"
      ]
    },
    "include": [
      "src/**/*.test.ts"
    ],
    "exclude": [
      "dist/**",
      "apps/macos/**",
      "apps/macos/.build/**",
      "**/vendor/**",
      "apps/macos/.build/**",
      "dist/skykoi.app/**"
    ]
  }
}
