{"_id":"skykoi","_rev":"553-1e0042bdb17aeaa3ef1a3786f48e13bb","name":"skykoi","dist-tags":{"latest":"2026.3.623"},"versions":{"2026.3.3-14":{"name":"skykoi","version":"2026.3.3-14","keywords":["SKYKOI","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.3-14","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/SKYKOI-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/SKYKOI-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"d0e77a744f841b19236eb47389130e41ed1e8328","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.3-14.tgz","fileCount":1944,"integrity":"sha512-Lsd10Uo1MiO5DFleoGZptoDizjDixDjGgtDsrSjxQkmt2/R3T2wi5/1sbJ+/myKCoysp9jQnJAF4VuvyCsQyBw==","signatures":[{"sig":"MEUCIHjH/lPg/b+tkkAql6cap8wdyJw28/YLFIwevyddJST+AiEA0bQ0dq6S/iZFD3Qh0KKHNbzVI2TcEk+HsOJeYiqm/dg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35939383},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/SKYKOI.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./SKYKOI.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"68cd3d2d76c31ca7728d7fdee9ba0b215069b83f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","SKYKOI":"node scripts/run-node.mjs","format":"oxfmt --check","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open SKYKOI.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/SKYKOI.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config vitest.live.config.ts","SKYKOI:rpc":"node scripts/run-node.mjs agent --mode rpc --json","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.SKYKOI.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SKYKOIKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SKYKOIProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/SKYKOI-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.3-14_1772737490533_0.8188937623109165","host":"s3://npm-registry-packages-npm-production"}},"2026.3.5-1":{"name":"skykoi","version":"2026.3.5-1","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.5-1","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"086ed140f0ec737a437b72b486e0d941114360e5","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.5-1.tgz","fileCount":1686,"integrity":"sha512-0LtNAUUQB9lRyxGSGZweZaJgSh5V+n0IztILOe6nBiISZyAcBQmydqWTUHKXSQM1p+j6qKFx2ws+YmISAmledA==","signatures":[{"sig":"MEQCIEt9I+5GZc7zCO46vV/J7/IHeHkb3rtn87W3O12VHKWRAiBQRPGZcj/La617fFkiOOjNOm0bFwwLUUIUbrkjqcvbXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35636277},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"68cd3d2d76c31ca7728d7fdee9ba0b215069b83f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.5-1_1772745235549_0.4773855868648331","host":"s3://npm-registry-packages-npm-production"}},"2026.3.5-2":{"name":"skykoi","version":"2026.3.5-2","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.5-2","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"f32a4eb18f1bc4ff162ace2cc768581ee12d62a0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.5-2.tgz","fileCount":1686,"integrity":"sha512-3nc2wP2fVnXxRwU3PXsUNj+tjthPiduMk9zOaaJfI73ki/k6tQqrV6xH1oc5IH2oHtLlc4gPUBZAcwQGrkOPyA==","signatures":[{"sig":"MEUCIQCkrYa9EWNkVQGRxrXsbXqw0l5bj+YCWUHOsd5Ap5Yo7QIgQaiOkSSVyU2MDnlYWP+DBClyRVZZKaTwEw2uzGGjfPU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35636425},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"3b339734ac0c7405d5a8e010205b383ef4ce27d7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.5-2_1772745884266_0.0008869038272014684","host":"s3://npm-registry-packages-npm-production"}},"2026.3.3":{"name":"skykoi","version":"2026.3.3","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.3","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"a54ba58218b8db232e9083a797ed9d84ad6eba06","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.3.tgz","fileCount":1776,"integrity":"sha512-sUvJltHW8uidJ3phKl+ff1Qis3LDnCwCAK9ZTryLk+GEFyVfomHJnR7RyeLQrPR9fRW4AvpLmdpH8xFgZhWyxQ==","signatures":[{"sig":"MEUCIQDgYigKjI93/9XfgYWA5SQLp+XLVTJ1f/+AhLvpO+lAmwIgc+Gw9vL2zgVmLJHSzh7ZLBknxNhHrFECN9pbR871XxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35728645},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/SkyKoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./SkyKoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e9e6db641c5dc33f4a2c9c1ff90a95f4a712aea9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","SkyKoi":"node scripts/run-node.mjs","format":"oxfmt --check","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open SkyKoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/SkyKoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config vitest.live.config.ts","SkyKoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.3_1773016016631_0.5528292260558614","host":"s3://npm-registry-packages-npm-production"}},"2026.3.9":{"name":"skykoi","version":"2026.3.9","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.9","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"9e18f3de7ad62ac08aaf77ea02c08a1805841607","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.9.tgz","fileCount":1776,"integrity":"sha512-yaPUOGmxrztAUwzTB/XtVIsfF2TNk8ta2bhETuQwoCIP/dMsF9DwRYkHJQGf4yds7dJmI463WNii7Ki6OEhh+Q==","signatures":[{"sig":"MEQCIATvr910lQjUSIvqU0fek18A9vFZmri0+tzzs8cbzgfXAiAUKLAkPRHQGI+sR9z3qLBvzXWSoE9lwGF6KuGqnJqWnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35728977},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/SkyKoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./SkyKoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e9e6db641c5dc33f4a2c9c1ff90a95f4a712aea9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","SkyKoi":"node scripts/run-node.mjs","format":"oxfmt --check","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open SkyKoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/SkyKoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config vitest.live.config.ts","SkyKoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.9_1773018350191_0.20357328657026286","host":"s3://npm-registry-packages-npm-production"}},"2026.3.10":{"name":"skykoi","version":"2026.3.10","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.10","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"c6f7ad40a860ecc68d386690f818afae9761976d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.10.tgz","fileCount":1776,"integrity":"sha512-OTdk+li+KrXtl/pF15nKHvoiEUfI3yBFN8iaY9stWieBiRqPS8byKV7l17f+NONEQWcfn8BKoE2lYItrMIzLZw==","signatures":[{"sig":"MEYCIQDcPtFHFYrPQqjs5kL2pd4paR2cI6z9zEZvqVhZOaX8LgIhAOHD76PNFgZ5h7hEQqNNYbWK4Hl4TkD6VL0Ly0uqGpFC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35728974},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/SkyKoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./SkyKoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"a05f4e2badd4eb05f857e25690f4b26452d994b7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","SkyKoi":"node scripts/run-node.mjs","format":"oxfmt --check","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open SkyKoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/SkyKoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config vitest.live.config.ts","SkyKoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.10_1773021092017_0.9617025961171666","host":"s3://npm-registry-packages-npm-production"}},"2026.3.11":{"name":"skykoi","version":"2026.3.11","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.11","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8f4cc7adc5ec4926627f3496fc99b0199319fbfe","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.11.tgz","fileCount":1776,"integrity":"sha512-tyNd343SVCHE50vf7uDdGtfesNSWAVXC7Ke/kmYUA1fRcQfTj6pgq9cs/oitAytkgXlIOVwlG3QouZxX2qfHiQ==","signatures":[{"sig":"MEQCIAc6bJhd226TvpNXLDs5A0uOm0cX0CUlOhmh/V/re5FxAiAycc9AlIIcbmDFyB54M+q2ijc40qkVpdkbHciwaz9DOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35728979},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/SkyKoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./SkyKoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f0fd4ecea1eaa72879d5b87e42e6d53337875dbf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","SkyKoi":"node scripts/run-node.mjs","format":"oxfmt --check","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open SkyKoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/SkyKoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config vitest.live.config.ts","SkyKoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.11_1773022330354_0.39142767472339157","host":"s3://npm-registry-packages-npm-production"}},"2026.3.12":{"name":"skykoi","version":"2026.3.12","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.12","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8706badfaa220cee18b0d8e94879b159bd314178","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.12.tgz","fileCount":1692,"integrity":"sha512-g4WO7Fwm/Zx90Xx2a5cVQt3YkaOS6g4JrMOzpMkVRP0RogDrsve6gaOwg2BcJiaa8FaQLcoKukwvlyNcCuLmNw==","signatures":[{"sig":"MEQCIBQ8wuNsW4g9n/ZurQBZ+CqkJZFJ0AI7WsyqxStge5XZAiA5pCrCdqJGBQWhuMegvCigNfsXGWLyel4K2h7S6WuiMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35645842},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"9bfcff3e36966fc76028113bf2f19842295f73b8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.12_1773695734671_0.27464323995272233","host":"s3://npm-registry-packages-npm-production"}},"2026.3.13":{"name":"skykoi","version":"2026.3.13","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.13","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"4d4886d3f8ea2412bedfc3f52ead884ed2717948","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.13.tgz","fileCount":1692,"integrity":"sha512-m0nEedt+ORqLL8pgcSDz9S7J0Fty225evueTg6bb5DH9dytd/rttRNSl7zXzdJ1SB4vYXLAtTNOYNxru8vWtcw==","signatures":[{"sig":"MEYCIQDSGE0UKz7quRD/XxjFcLnLNWbyVdv+ev4Ah6F7WxQsQwIhAMW+RPc/zgLwnTGgqv/fL9it1Z7L7Yp3av4FKQAelI1H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35645909},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"9bfcff3e36966fc76028113bf2f19842295f73b8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.13_1773701247900_0.4451108982115717","host":"s3://npm-registry-packages-npm-production"}},"2026.3.17":{"name":"skykoi","version":"2026.3.17","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.17","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"354ef25a84ea9cea7fdf2083c54770de7ec3db89","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.17.tgz","fileCount":1776,"integrity":"sha512-A9YSgUBqoLhu+yofaWytRDrA1DBHsbz/xVmP8kB84M9Ny7icFjmA5ecZPFtne5wa+ivQPDOuG3gOO8EtQgr6Yg==","signatures":[{"sig":"MEYCIQDl5vgjqc7vmZmAZpQezJbvypjUQ32UjiLZbKOn0O4u+QIhAN7/cX1Ipd1jNjQ7X64jCGTazIqq1czinyaosDjhf1sn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35732011},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/SkyKoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./SkyKoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4c3f103dd1ffcc3c9a22fb7f4545dc4bfaac3ed9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","SkyKoi":"node scripts/run-node.mjs","format":"oxfmt --check","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open SkyKoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/SkyKoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config vitest.live.config.ts","SkyKoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.17_1773799638360_0.8758394638698521","host":"s3://npm-registry-packages-npm-production"}},"2026.3.18":{"name":"skykoi","version":"2026.3.18","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.18","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"7268666fbc143ee803ae9059ffe7d74c80e9b666","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.18.tgz","fileCount":1669,"integrity":"sha512-rDsfb5p441grO2t3ug7/BUExeNHPhZ6/u1sV++cajf2GNu0LawMrxDe7bq05WnQLhdQYiwUbGa4d2nEh11UAVg==","signatures":[{"sig":"MEQCIC0k02NvD1Y0gfiss10sJwVfDmSCJHrBt9/fzV0nOGJjAiAe23i1CpLC8EkzqPiyk9HcFkcNRm9wqG5ocMmLiBx/pQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34204877},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"2c50ac7a8f96d87807e5a15452807c3eec002b52","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7"},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.18_1773809185051_0.9102474536827216","host":"s3://npm-registry-packages-npm-production"}},"2026.3.20":{"name":"skykoi","version":"2026.3.20","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.20","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"ffeace598c68261ebbf342dd09070411afdedecd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.20.tgz","fileCount":1796,"integrity":"sha512-HJfN1ucGfBm/Bsn7tiW4Lo/V29ERegnON8qXYy5uBW8EQbFN/BF2sreQMTMdkmwwbk3s7oYKKjjLvDpp+C5yWA==","signatures":[{"sig":"MEUCIFkvvq1v6D60Zm9Twhev3aKVdvnXJUcc75P4J/TcUWBdAiEAhUu9LQP8s2e+M2FfTp1+2ROfK1ogfnjBSi6ADlFk/0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69906337},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"2c50ac7a8f96d87807e5a15452807c3eec002b52","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.20_1773813104633_0.966668616872838","host":"s3://npm-registry-packages-npm-production"}},"2026.3.21":{"name":"skykoi","version":"2026.3.21","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.21","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"e5d7e8f036f4fa4bced440b868617cbfbf1f4009","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.21.tgz","fileCount":1796,"integrity":"sha512-Im3zXMdckHyDHrY0zYZLPlDyW5ATls67PPYq+jV9v8sYNyDRPncZCK96cktNOz+0JMu6z6oMj8aRDFRApGjlZA==","signatures":[{"sig":"MEUCIQDMc42leFlPisEm03l2rDj0+NSnqaJ/Qc9kasHI6XeDmAIgc5/XmnZ55az0rXxG6/husfhz8BKlkgnkvF302CTJQKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69907474},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"2c50ac7a8f96d87807e5a15452807c3eec002b52","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.21_1773814486620_0.49363454784636285","host":"s3://npm-registry-packages-npm-production"}},"2026.3.22":{"name":"skykoi","version":"2026.3.22","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.22","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"802db7ec1da81d29930444441d7add92b51775de","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.22.tgz","fileCount":1796,"integrity":"sha512-smo3458Aaw6KEnvgBaVxdH2NPklzU4OEuDLA4z0mObBLlJczKd+Jv6BznR38HKb20NKPWrTqawDUT6Jdbs/Byw==","signatures":[{"sig":"MEYCIQCuHEb740lt1A60fjZrC5JBYvl/gnc7wlbAStze2WK0lgIhAI4Ov9Ialj8MmeVppTLaeS401SrJNEdnZUR0oLH71mKs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69907484},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"2c50ac7a8f96d87807e5a15452807c3eec002b52","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.22_1773815417057_0.8318584278098418","host":"s3://npm-registry-packages-npm-production"}},"2026.3.23":{"name":"skykoi","version":"2026.3.23","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.23","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"7c78f5bd128f5e2a4336c29c39fe49f3764172ea","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.23.tgz","fileCount":2960,"integrity":"sha512-x5qAr9HOkLUh0yvnECd3xbEG9Vsst3+4WcJDppsslEWJ9ZTDz7wlMMcw2heqSEJGe/j0NwtMFCvzXUQgGREy5g==","signatures":[{"sig":"MEUCIQD8rvSS9yMXX+NBVJLoboLN4V/wcfGTVPh+bnfIKMv8cAIge/zaHkyGtoVdxKebI7Mwvq0ATyV0xbPMvfrjvO01Rec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74539949},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"1584afc5d0a87108684cd285a7605ad298816e3a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.23_1773815637028_0.9340901481935373","host":"s3://npm-registry-packages-npm-production"}},"2026.3.24":{"name":"skykoi","version":"2026.3.24","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.24","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"c2076d0a91487c3692dafb56a682bf1bd8ad9062","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.24.tgz","fileCount":2960,"integrity":"sha512-n7c1lvaEtmvyalnuRYiP0boYG2/7WCMpwqh9XiV3P+DELY8Y2Z0L0rAbMWx5SlgHMCBKqjjgtF1+oIyywD54EQ==","signatures":[{"sig":"MEUCIQDAX7xTgd2TWwjkySNXofVQ94Neg3s2CqcXfirvVUAlVAIgXrVyYs+23919MHJec2k/52B8Jw6FIKkcoU/FlkEYPH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74540057},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"a6995d98055640269fb50cb1e83f5d718870e911","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.24_1773816393025_0.7881411460265138","host":"s3://npm-registry-packages-npm-production"}},"2026.3.25":{"name":"skykoi","version":"2026.3.25","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.25","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"5c196c6801b08ca6ed126ce9325a395e5faa1ce1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.25.tgz","fileCount":2960,"integrity":"sha512-gIXPyM7zQz8kryuqSA5qTuUrYBTac2NenwFg2YSEvmzqV2Z2QpWKSiQ+EZo6k157HzXTMljyIrU8hI8JSRRncQ==","signatures":[{"sig":"MEQCIBZZ4BYwT6qKh656l7tELOsHncDe8crhIWyXZdNhvKq1AiBstoY/oDXwCZKkTbm1ZYbzfGcH8lFJ8NcalfkkPW/g/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74541729},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e6d13f60f5faf9c880e09615dbac2c5fee9edd28","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.25_1773821928666_0.6947883622959043","host":"s3://npm-registry-packages-npm-production"}},"2026.3.26":{"name":"skykoi","version":"2026.3.26","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.26","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"f28ab3207fd78773f145613516c20a983f231043","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.26.tgz","fileCount":2952,"integrity":"sha512-IVUhq10pe/CteT3t0gR5MiQ84D9n7gDSovpIE7Lh8RBKivZpuHXNE0bDEDW7Q6rCVfluA3a5QGsjfckYq3sqxQ==","signatures":[{"sig":"MEUCIQCZLRxXCmuXXkyXdkkBGLEjJU6gXN+SqSg38KRbuipZJAIgalUWTb98bLHqJVPjrkxQ4p0GuPei1YX5MWANr/6Drus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72326406},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e5dd87a50ce9315067889b9a506365fe951bba83","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.26_1773823715365_0.4386031438957949","host":"s3://npm-registry-packages-npm-production"}},"2026.3.27":{"name":"skykoi","version":"2026.3.27","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.27","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"a76a16a60a69d5fc095f146c654380749f517146","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.27.tgz","fileCount":2952,"integrity":"sha512-M+rBYDyy+EtNlMWQ5buH0bbrzGMSKd5txf3o5JvgLowDUnRwDHtPuqCQ3YnrVfhzhd9zG+H8o4Sr4UL4OuP0Rg==","signatures":[{"sig":"MEUCIQCsYxYvrJ4EbwYljNJDyBURm2eEjb5A8ReoA9zllDUmMAIgFDJr7t0ras/0O59spfVc8+n3JbBKpPuZh+fkl9FHe0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72326413},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e5dd87a50ce9315067889b9a506365fe951bba83","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.27_1773824468551_0.11867708651068365","host":"s3://npm-registry-packages-npm-production"}},"2026.3.28":{"name":"skykoi","version":"2026.3.28","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.28","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"6a56b7c20e196fcf9b82c733712c3ad8d8522ea7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.28.tgz","fileCount":2960,"integrity":"sha512-4VmYTMyux85oVKcQtCE5SCt1+xztB/cbmvBl7lLEgUCVzN2WWgnK86VRBi/QYU71ehhqh7uOjATTnHRibbUvnw==","signatures":[{"sig":"MEYCIQCkgMn1nl8LjMmjugnHmwdvz/PnPuwkGWFjYGbH6aT3swIhANB3W8z/CA877wOhIfd6gZTQhHS0F378uhOU1+MmPQ1U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74541346},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e5dd87a50ce9315067889b9a506365fe951bba83","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.28_1773825963625_0.8345347163990617","host":"s3://npm-registry-packages-npm-production"}},"2026.3.29":{"name":"skykoi","version":"2026.3.29","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.29","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"3d714bb7f88c2bfb4dc05224e8e781dd8948b934","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.29.tgz","fileCount":2960,"integrity":"sha512-zUxVJSOAXdTdpwL6LgR4JjOL5qJXQQbd1VTUn6GzNz5eu0XImseByYuGIKfCQymLog+M1e56jk7ECh+UZ4sAcQ==","signatures":[{"sig":"MEUCIQCLVrY3PRZ4qE/I/8JqWXROJQN23LczJMFopU2BwHjLOwIgVkZDuQzUXIznKy8bke71GFLiW5/zVZeYPorBpC99r1I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74544818},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e5dd87a50ce9315067889b9a506365fe951bba83","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.29_1773827210756_0.33238117423792946","host":"s3://npm-registry-packages-npm-production"}},"2026.3.30":{"name":"skykoi","version":"2026.3.30","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.30","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"4e11390559b0d753d73f766f4dcec462e6687ecf","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.30.tgz","fileCount":2960,"integrity":"sha512-bb9/eQzQVitBHDm89m5gNADprVzIfBtlM2W558MbDidogcV5K3XinZwmgPg5H+vChJRFoFk+XS19Ro3dXNdfiw==","signatures":[{"sig":"MEYCIQDbuKsagQ4sR0XB+UVQ2bAeCgoRewP5KgWVx5r2gJKFWwIhAN2EECff69dPpfiaczKAAFGBDiak65vzGBhHmHc+LhVj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74544361},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e5dd87a50ce9315067889b9a506365fe951bba83","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.30_1773827882502_0.3150015196840985","host":"s3://npm-registry-packages-npm-production"}},"2026.3.31":{"name":"skykoi","version":"2026.3.31","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.31","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"5b902c30c7af4ad2b3ea4ff49d6022fea3f751c2","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.31.tgz","fileCount":2960,"integrity":"sha512-duJ4o8E7/TJox127NnuSSWM+hwx/L2dSaWrmYuMfdwiX3oKB2eeQwTU8eiJ2UjMrInZi539fBkVeQSb1A+GEgg==","signatures":[{"sig":"MEUCIQCQp19bz6Dw19vtu13xfllKXi5FVV46A9hD3bD6FIQAnAIgbJtvPsRsC5irJBXKXPxutzUsqHhx0yGAtJmbZJWImdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74546283},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e5dd87a50ce9315067889b9a506365fe951bba83","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.31_1773828865178_0.3896930802372147","host":"s3://npm-registry-packages-npm-production"}},"2026.3.32":{"name":"skykoi","version":"2026.3.32","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.32","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"fd4279d80473bef8a6ea39167f29760de5cf612a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.32.tgz","fileCount":2960,"integrity":"sha512-na29XpX7y9+PrCMIlt4nKJWB7MwmoA/JSfhIoZwqBGtWohCr2PdZetJq8SNlKlao0LctbLKGMY1KV5F2mfqlkg==","signatures":[{"sig":"MEQCICy9PZIeKhcdJdvokNxA2p0aUvjMh5pPJc920FnEO/DJAiB7151Q4KdWUbl566cppUrQ8hQCNOLjXKjRcemBHeQrrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74546283},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e5dd87a50ce9315067889b9a506365fe951bba83","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.32_1773828923870_0.13993017792647433","host":"s3://npm-registry-packages-npm-production"}},"2026.3.33":{"name":"skykoi","version":"2026.3.33","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.33","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"ee68fce913f79aea1f1e9d90c279cb811fb34c1a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.33.tgz","fileCount":2960,"integrity":"sha512-2OdbvK5fFLIjXFGST4gL6P3499JvvOuizhaPG35Rxx0UhL9UrLkO3KhTZLxoZk3eTUFff4PnlYy3fzTf5S/NmQ==","signatures":[{"sig":"MEYCIQCfjBdeZP91ChE+NEuEc+KZvEKFCj/Ix5mVK7zLjRECMwIhAKFuoYfAB0BBSaxznxDM+gwqB29wqHfv7UsdTyL9LmZi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74547883},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"5fbcd086c33c81f370f0ab3c4f8745b139975fef","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.33_1773829279406_0.9647751240818678","host":"s3://npm-registry-packages-npm-production"}},"2026.3.34":{"name":"skykoi","version":"2026.3.34","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.34","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"6b54cb20974a1b222a416f1d5be8b2bca6bbc17a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.34.tgz","fileCount":2960,"integrity":"sha512-oQQjoms42Zu2KJbpDfij64TQYaFqyeSCUsul5pd1L0vZTsx4Mql0myNXtyP5hFNPmgaa5Pj0B7LS3v5SnQKx7w==","signatures":[{"sig":"MEUCIQDPJKIaXqMJX139Q18PYJo7uJvDqLeK1vXG9RBoxjM2swIgCaZJXWeCRNqiLX3AnqVh8MLn7H/vN60Wni5f4y2ei1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74547887},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"a95342253903bce1e3794c9f4cd619e8a40312bb","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.34_1773829523607_0.5325163467561695","host":"s3://npm-registry-packages-npm-production"}},"2026.3.35":{"name":"skykoi","version":"2026.3.35","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.35","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"49924337453f36a205c8a9c43b08c011e24c9004","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.35.tgz","fileCount":2960,"integrity":"sha512-UcuTsRl4AMwmaru0wXuqKYfiVdUK2HFoHbXlH8jAI5ErU5b4Zrnr3c63hke252an+lxaKCxmhT+nRvA3Lj0V5A==","signatures":[{"sig":"MEQCIG2EVGrXmp238EjXXvF64lKL4RV5uXBPBETmdi9nYla4AiBQPi5tGRtBjuJRst4fNGamQVjHSQQCNpk5nFGvAAB/pQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74553305},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"b52f7894de479a72bf623e82377cb17c2e17f6cb","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.35_1773830315853_0.4663750139811602","host":"s3://npm-registry-packages-npm-production"}},"2026.3.36":{"name":"skykoi","version":"2026.3.36","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.36","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"e7052a30fabd182606402df59eb2cb965c7399d2","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.36.tgz","fileCount":2962,"integrity":"sha512-IiVbzKt+s13uROY35bFpsAtFawfWTo0g5/E9IB75zvE5LOL17QjPIJTvJTr5d9Jstyf07MLY34u93FqATFDzag==","signatures":[{"sig":"MEQCIBTAU2JwCemKmQZuCVflH26sVhs30a+bOKZ5Z8LnsLJDAiBeHkVedI6MJKUgjZpm5zj8J+NE6VvMS0j6e9IOb52N0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74549930},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"619c3a2103333aed40c5fd41ca0685f5022e51bf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.36_1773833449071_0.2762390469898104","host":"s3://npm-registry-packages-npm-production"}},"2026.3.37":{"name":"skykoi","version":"2026.3.37","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.37","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"f1d9507e53bf77ac7548ca894967781e454a5792","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.37.tgz","fileCount":2962,"integrity":"sha512-oiEF0aLPJjw2Wpv2Ls84U3ZFNo0+xeTzssepDYjuzEwYskJjEj1adG6JZ9e9p9XwZDsnLkBt0tsKbBCwJ2ypiQ==","signatures":[{"sig":"MEYCIQDjFpdhXEyysxFCTnY0W7jP/T4HZeW4LqpT93PiSiwXeQIhALRHQE0rx3EXmwOTLJbGvjrsMDe1egkhNbHDjpcYWg2Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74549860},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"619c3a2103333aed40c5fd41ca0685f5022e51bf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.37_1773835598648_0.08528729524168921","host":"s3://npm-registry-packages-npm-production"}},"2026.3.38":{"name":"skykoi","version":"2026.3.38","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.38","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"0119ff13212cca6a1930b8d024252430f6d999e3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.38.tgz","fileCount":2974,"integrity":"sha512-wBNCUostEcuOMuS3mJCkNwGQQKEcnPH3xeOU/CsrGtRWGRp5HoM0xuQ/XoBpR+Lcy1KIVLap238+YfnwOtVTuA==","signatures":[{"sig":"MEYCIQDVMzeGnsJ8CPPRH2fEkLCnHaElH2wpXwmDcr0ertZw5wIhAIGjqjTAP+JVjjE67SmTdsXOAtC8Jy5DXqzCwjUbMV6p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74614344},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"619c3a2103333aed40c5fd41ca0685f5022e51bf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.38_1773855739936_0.40284230858480896","host":"s3://npm-registry-packages-npm-production"}},"2026.3.39":{"name":"skykoi","version":"2026.3.39","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.39","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"a210f81309b939efc6a09534f5151551a1c78c44","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.39.tgz","fileCount":2974,"integrity":"sha512-aqL5Jxk9gVt0tFXk9zIQrWPptaHYB66dyr9GEFIxgAMzDtnN4veRAt7x2sQnUgaaBr9As43hF5H8m+DmLm9hgw==","signatures":[{"sig":"MEUCIQDiLUdKu/3HJGHBG+LHmKxQoKKj4eTf9wsVLMdJPalFygIgAO4vBnPHfJT3OjQX8ei6JCqiGdZ+7cpG4V93cUjSRtw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74614350},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"a5fe407580a020e451ac8d02c2a969d077865541","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.39_1773856448535_0.7520611757197708","host":"s3://npm-registry-packages-npm-production"}},"2026.3.40":{"name":"skykoi","version":"2026.3.40","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.40","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"d530a3ce6b5cdbf48168474db49633c5891cb0a7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.40.tgz","fileCount":2974,"integrity":"sha512-jm/mLG4JAX+v5lRpy3gxh+SJBj/Bu8cIccOsqVYRMppYubjDVLV954hsREq72J0PYKt9GrdQoKQI1UfLm0dkHg==","signatures":[{"sig":"MEUCIQCaCpZiH6GgPRDUn/WfUUEUfzNAbQFGjvG4/F/FdY8iYAIgZjfeUsu+1pPqElfQJw07fzwPaQRdf1uHjOoAMDkZhtk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74618786},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"a5fe407580a020e451ac8d02c2a969d077865541","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.40_1773856943136_0.05608960168199362","host":"s3://npm-registry-packages-npm-production"}},"2026.3.41":{"name":"skykoi","version":"2026.3.41","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.41","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"9e99d0aa6f3f148634665705c0a81f59ea1c684c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.41.tgz","fileCount":2974,"integrity":"sha512-2FZoFEHTwcmk0VHo+CqgUlO7rByL5kawiUJ9GCbdlVR9Gpu0c0eTMf0klfy4gqbc0frmlD8BzaOsbTPGD57h+Q==","signatures":[{"sig":"MEQCIFiYa5tyyLg1UvV7HknUf/raU6GM3NGYeX/lzZf+nNytAiAF4o1sb7XtmmjvYMc+3izbeige5SR8e5Em+Rjsi9sKIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74617324},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"868dc050498e591628943d45800a7701c43b7d86","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.41_1773858175326_0.15827822092665644","host":"s3://npm-registry-packages-npm-production"}},"2026.3.42":{"name":"skykoi","version":"2026.3.42","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.42","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"41ba4b0377008b722d8791dd69000a730d49bf40","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.42.tgz","fileCount":2974,"integrity":"sha512-ZeNtJZrdgPwEstcEnSchXl2yrtUPLbbT2ZkNg0973RBwBVTFaq9/28/7GC6tLeXU8zZR2x1PlffEjyQSwBgc5Q==","signatures":[{"sig":"MEYCIQCGjcspgTsL1yErMk8XB3l8nxKpSoguo9sXbTzTbz3dLAIhALYazvoUuvAieANzDZQgUKmitNRHpAnLRrEk0moOTW7G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74617343},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d00d4e100caafb515fa272db564bf546f2064b55","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.42_1773858418993_0.22094535305780516","host":"s3://npm-registry-packages-npm-production"}},"2026.3.43":{"name":"skykoi","version":"2026.3.43","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.43","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8df069a5c0176033f5c85fa9dbabf7ca67cd4886","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.43.tgz","fileCount":2974,"integrity":"sha512-6oCCtqpYZ8fdAstmoCeGk73LbkOPNNlFYvtZBlKSHMY1TAfh0vxjLIUiFPp8aroR/u/H7T+VXeT5tNYnea9WBQ==","signatures":[{"sig":"MEUCIEnvhhHdVCFl8LmLNUema+kqIfIx9O84mcpfzWIfM2VeAiEA9/KHAtyVM2U92TfRjWFIJ7XhKk8hjOfCPoaebxLcp6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74617339},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"db5134de0684bcae17b9c1e2665d1ba0af6978d7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.43_1773859762161_0.005418314610799335","host":"s3://npm-registry-packages-npm-production"}},"2026.3.44":{"name":"skykoi","version":"2026.3.44","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.44","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"b55fd189c9afaa0c0f11e8eeaadad2b7b40cdb8d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.44.tgz","fileCount":2974,"integrity":"sha512-T1k39tsREldVS15Y+rX+WQaUiPiD5/VQfry3h8NRKI/YMY2NJ5r0nUEkYH/EcESTnc97RtfvLeNpWhleJzrPhw==","signatures":[{"sig":"MEUCICF8Q9/18uJlNzdXdNdf9ln69ToONiMm1eECd7OOmY1KAiEA4WPQLuMEEcBhIBOuESk+MwSWw+aF+cKWdyBvvBeaEgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74619251},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ed95f2668df34f31e2411bc6e59447f05cea5062","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.44_1773860547019_0.9337713799744856","host":"s3://npm-registry-packages-npm-production"}},"2026.3.45":{"name":"skykoi","version":"2026.3.45","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.45","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"f9c8783bd0de89eb91311b7808103e273bac8aa6","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.45.tgz","fileCount":2974,"integrity":"sha512-F/wP74ldo7fxCDSpV8IqdV28eR1I1PlV/pcfrNL8PqBOezvL2W8MDxj/3CIuLnRQro8LlpaoD55T0vJ6jNTN7w==","signatures":[{"sig":"MEYCIQDzc2Pt22WK7zi+ZiaUUER6yx87uhCd88lymqbZ8b3FhwIhALiqCSSDIdr/Sru7UMgKg4o/oJSRAr16emVt+cH0Ud65","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74623650},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"60b53a88e9b1b48d13846276a11d22c214dd4ea7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.45_1773872760882_0.5863691440842764","host":"s3://npm-registry-packages-npm-production"}},"2026.3.46":{"name":"skykoi","version":"2026.3.46","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.46","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"d9c8a212a42ca4867671dd052265746c9991c0a9","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.46.tgz","fileCount":2978,"integrity":"sha512-6WVrKwo5ND8o3N/NraOZOVlEnEQBZSpKzfrWRo3wADb8Fa1nmGKU8YDm31cMgrhsAmIPmkMikfuq2yfgDtgRxQ==","signatures":[{"sig":"MEUCIQCW9R5IHmDbIm93mcMAZNb0oHXVtLu54HAGz+bmiTr7IAIgegoaHedNYQ7wW1drqn+AcD9zUjmOBHhUI3D+B1SH71A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74635039},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"60b53a88e9b1b48d13846276a11d22c214dd4ea7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.46_1773880884779_0.10377770028019273","host":"s3://npm-registry-packages-npm-production"}},"2026.3.47":{"name":"skykoi","version":"2026.3.47","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.47","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"80d156dff24a6871b86fc794e5e0029dcd1af899","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.47.tgz","fileCount":2978,"integrity":"sha512-0c7gXC1Xd1+N+2DZqZxGBAOttgbyuK6SsO+PCDNh6GMmx8Jrvheo1KctDkOADt1Dy0Qah/c5XSZuyzUbOZzoxA==","signatures":[{"sig":"MEUCIBeZxfOdWA7AKmnFDvwX4tFEticRVI7p27Yi9GJsE2HuAiEA+iiP3Xik/LnZIF5m/iYDEVsooTib7edeDpDXdB4vldQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74635468},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"60b53a88e9b1b48d13846276a11d22c214dd4ea7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.47_1774036320717_0.667308541120355","host":"s3://npm-registry-packages-npm-production"}},"2026.3.48":{"name":"skykoi","version":"2026.3.48","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.48","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"26d5b9eff66a76456c32875c93aa5448704f28be","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.48.tgz","fileCount":2978,"integrity":"sha512-zz6ow+NH1Gb+S/8pTVYfb0hJtZ85vHMPgQZjiDKE07iB4zwZPouLY1wbkKxjMHxcOvE+lbJhAidqaleJVsscAw==","signatures":[{"sig":"MEUCIQD3z4gslIM++gdesLo1ezRJJCK8fpxE65sX4c2iDwmJngIgASEVDJMgdy5vUWgD2Sr/NRCR1PR8xkMlXc45iU0SbgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74636900},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"87ad2e34b18b8630248995f761f100944787e4b2","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.48_1774228301833_0.9989695776666321","host":"s3://npm-registry-packages-npm-production"}},"2026.3.49":{"name":"skykoi","version":"2026.3.49","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.49","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"de5fa3be9041b4384f0765deead627971ebc6718","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.49.tgz","fileCount":2978,"integrity":"sha512-+uHK7v8thM8odqsWMUNCEIsTyGHghNvaaQGGwd0NudWCBROjJSQ3MS7eo936im7LEDelQDtW+f4ppEYL+M3Hqg==","signatures":[{"sig":"MEYCIQCnPpEnxI8hdBumrVCmbXJQhhhfKAxk/VK4KlpE2SanbQIhAMmMgGhcX+0YmrOGNa5LwTty4Y3DymvGm428H+10WDjR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74637079},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"39f43e72e0363f9fdf5ea70071683659ad0fcd43","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.49_1774378025289_0.9017661802295531","host":"s3://npm-registry-packages-npm-production"}},"2026.3.50":{"name":"skykoi","version":"2026.3.50","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.50","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"24dd6e6d61c366fa9d1a59de0d5add7b7929cb52","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.50.tgz","fileCount":2978,"integrity":"sha512-LqNX/Z50diDEXUb0IS4AZ/CplQtwvsMtvTSEStTQqrY1IEJc9OqWgWcHQhNJ3zvP+nvR+l6fAZyYCYX8qqYO6w==","signatures":[{"sig":"MEUCICd13XCgbehzosuDKVlAvJ6M3Rw2DsChrQS/zOl02nTRAiEAt5VAO76EAv42PeIp7w+6hpD1bznQKNAEy0B0B1hjCSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74644213},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"208aa57eea8f1e8f019b41116d682780b6193afa","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.50_1774378657596_0.11036980179359346","host":"s3://npm-registry-packages-npm-production"}},"2026.3.51":{"name":"skykoi","version":"2026.3.51","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.51","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"27925bb58faa69f43f0657e6d9d735ce4694543b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.51.tgz","fileCount":2978,"integrity":"sha512-K0c1K9P3PXokwxrHrQiLkU2PlfAAyyChxxjPx0ORfBX7s31FPxwoGcbSiWvTW1LBtCcC42RVTpoROcf8kYj4Cw==","signatures":[{"sig":"MEQCIGIJ3WE1X9Wcw0KaSXNPpKuVC1uqlv7dVqhkKXw9a7CUAiAVl1wUE1TAr8q25mcqPewlQWvFuZfw8Al3A07rOH0blg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74644791},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"af41ffacc1dd0151578212998fe039c4345b1e7b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.51_1774384199862_0.24439718190934334","host":"s3://npm-registry-packages-npm-production"}},"2026.3.52":{"name":"skykoi","version":"2026.3.52","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.52","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8268a294ba2af41d583539a9bc80c10e2a3b03c9","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.52.tgz","fileCount":2978,"integrity":"sha512-+EAF7Pw+sy/wbg4Xr431JUcNJ6t7LfzmsvsTQI1gjjwtsf2BXY1ckDYYMsLeBUP33YAALJTeE0FGlSlhWo36iA==","signatures":[{"sig":"MEQCIHJDKj80Ym2/QbfBrAnsGoZ8ZLHWFCa3imW7GwhFyRJcAiAypGPtZARcVOzxiGwDS6MTT1iMZGvLqFW4r7b2NTpqHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74645097},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"717049c95f7cab669831bf61f74a79beff9d664a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.52_1774384778646_0.5173443018237456","host":"s3://npm-registry-packages-npm-production"}},"2026.3.53":{"name":"skykoi","version":"2026.3.53","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.53","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"4a21350bfff8e2abdd2f994f8e8753f2e12a511e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.53.tgz","fileCount":2978,"integrity":"sha512-fL1TPdDe90mNyOuWU+2iArJt6YgCtPqsCEBHD/ei2WMQ6K9KIxyRrkPlfKz0fCYY8J8dFKtg0sBit0S5XZSBmQ==","signatures":[{"sig":"MEUCIQCGNL54Zf7kVGjnK1KeH6wAo7kyMebvJQ080qCM7Nq3WwIgNWjswLUf7SIFbvqqT7bHSCuTcZCg1y9k12sMMHqIlWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74645745},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"317eccd7160ff7913d62cc9eacbaab182879dfc7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.53_1774385271148_0.8594727498310681","host":"s3://npm-registry-packages-npm-production"}},"2026.3.54":{"name":"skykoi","version":"2026.3.54","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.54","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"e81987ed8a79ed72a20319be55e7723964c5a82d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.54.tgz","fileCount":2978,"integrity":"sha512-JT28/uJiOG7z88nrOnTjt1WiPC3f/Ald7nm4ebyhi3TRhCJFv8dD4Hy+rx1n4iOLEJGut2VI4RToWRsomC0ESQ==","signatures":[{"sig":"MEYCIQCIYg5DRW3mh3R6JngBFRmdveH+AqG7f3/cVuPH/W1eEwIhAILtgrxE5ib4MeIYPvJYMeN4UYK61fYVMw6RVhSyCic0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74647233},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"bc665c75262e5864ee998ee5534af5b6ba69c955","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.54_1774385510622_0.3673253297505017","host":"s3://npm-registry-packages-npm-production"}},"2026.3.55":{"name":"skykoi","version":"2026.3.55","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.55","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"84ed34d63190d8656c7695d48014308c5faa03ae","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.55.tgz","fileCount":2978,"integrity":"sha512-S+FpCoiikhAORx3wuf6N98zDEsjwi12qUKGhlPCoOtbkDFaLl/wp6y52z2rQK+Zv6PBkOaQm5YHRdU6oEACv5Q==","signatures":[{"sig":"MEUCIFAliUCs3EeibNH82MQLXY5ci2el/E2v7cfKprI1LfZ+AiEA9xu+EGTAPhAHiQdibQBPlQBd1fUWB5ntyDOEaBkQRzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74650618},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"5fa4287edad86a9f8436181f4d5a86ac83c85d17","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.55_1774386097757_0.7280092300037941","host":"s3://npm-registry-packages-npm-production"}},"2026.3.56":{"name":"skykoi","version":"2026.3.56","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.56","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8e40ae75566872aba75945885627cd6d1ebb2699","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.56.tgz","fileCount":2978,"integrity":"sha512-aCM+z4xy9jQ1BkNvyafQju+UXV1oyZubp8pQomA1IaqgeqfKGFxZCjl0ZWCF0rpjfCTAEg5p8F7PGXDZrd5orA==","signatures":[{"sig":"MEYCIQClqbmO3uQfKPANz+3SogcdJxkUKFRB/zVKaEREs8rflAIhAJCQc0uTGxrFuVaG7PnkP24VOtw5sGxwSTX5JhR8quZ4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74650675},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"bfdc2cf5be658dc88c0095277d29b6b0a2d4b88d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.56_1774386235405_0.10383896792076364","host":"s3://npm-registry-packages-npm-production"}},"2026.3.57":{"name":"skykoi","version":"2026.3.57","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.57","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"6bf8f4fb7eb30b9264d95f3c2da8063797c2c529","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.57.tgz","fileCount":2978,"integrity":"sha512-CPwFw9h04PlOxum0cUV3U05SvfFnfBAel/QTEaWnG71DkwZGODa0eYnGu+tE9a2UTZP6ti4jy4oQDg9cLrGuWQ==","signatures":[{"sig":"MEUCIQDXrTf1FUfB9jv9vHZ2r+IqTNS+MChOt3bcIKMO8moNcQIgEP1iWWLK5xeWvsw+A4fE6fBcj6tuu/wiiZgzqyfD0SA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74648985},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"991a70bed2ca4fc6a929cde44386139b5023cb85","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.57_1774390609861_0.9733158497148096","host":"s3://npm-registry-packages-npm-production"}},"2026.3.58":{"name":"skykoi","version":"2026.3.58","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.58","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"3270d03f9708d9c284e4a9ae09b8196d83cd6c0b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.58.tgz","fileCount":2978,"integrity":"sha512-K1Vp8LVCzN3eZH7598IdAPuPLZMhS+Wv3fKgXc+OwwO677XON2dtXWxQv5VpDgg7hwtT8yqJHqspYI9vCRmkZA==","signatures":[{"sig":"MEYCIQCQXQREHuijFWgoUECa2pt80/PLk7AjHHdeN/NxDTL3mQIhAMWKRIWq7rjqpBWcttv67EUUBZ8ak+bnj3I5Sxc9TGcB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74653997},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"9178dafddbb458f037eb843531f5674737db3892","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.58_1774391103361_0.9699104011417892","host":"s3://npm-registry-packages-npm-production"}},"2026.3.59":{"name":"skykoi","version":"2026.3.59","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.59","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"b743985e08e08534b30ce0a7588150a062b2b842","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.59.tgz","fileCount":2978,"integrity":"sha512-gvcFhXH5Hq4q2NCIkbTtlJqWWLByz3IqWNjpUFeHPdZBfs9W23WYnPxHGRgTtJG4MmYJ7TD/7M+3LgVI9tzFJQ==","signatures":[{"sig":"MEUCIQCZZr46k+N3u6iqWayBOHUnpqjkVWEsnROQSP/cXF2dQwIgEnj1x6B98zYWDzXreGpVO+JNm3ydNF1ZUSYVq0yxbmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74654645},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"1c2b2536d775b19af35342121dff13eb8069a965","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.59_1774393443003_0.6220582051094967","host":"s3://npm-registry-packages-npm-production"}},"2026.3.60":{"name":"skykoi","version":"2026.3.60","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.60","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"392a2ae5eb6ebce3270a2ff0b57603e92cd2c9df","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.60.tgz","fileCount":2979,"integrity":"sha512-2yYl9BY4SNynbMr1k3T3KC1O+slBP/eWniC2DxOClgMb4kFbHELsNwWQ0ZMU7uKr0hkoWiUd2otLwkkzFhCojg==","signatures":[{"sig":"MEUCIQC4FdPxJXhNL7mb9zqSo6AqPUHciQDbdi5fBVIsxoLmjQIgV6pduFzFgOq1Bp32XUaAiVLXyddwKHOdxrRMVqjSK7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74668806},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"c624592bc8feee75ba459c89f423f4b9523d5664","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.60_1774395614286_0.7663902363356698","host":"s3://npm-registry-packages-npm-production"}},"2026.3.61":{"name":"skykoi","version":"2026.3.61","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.61","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"565784c7a8a85fe20e15214620bf4745cc78ab06","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.61.tgz","fileCount":2979,"integrity":"sha512-LLyM8Mt8rPn2Or1fsw8wdCz0x8XOBCwDgIf1z1MA8qJ25Oj3cxi0i5Oag9o/5c265PArwkst0m1mHZ6DfFCH3g==","signatures":[{"sig":"MEUCIQDbdZtL09QIbafKCwVdxHjF1s++zjE9oHq+V1X26n9POgIgDwJfusl0KQovsxNiV+JeRIvDff21EWKpeYuaTSaiel4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74677691},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"b07c674c9256af96df83442c3a2702d35d935f13","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.61_1774396979578_0.08639300065305311","host":"s3://npm-registry-packages-npm-production"}},"2026.3.62":{"name":"skykoi","version":"2026.3.62","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.62","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"6c6639723c479ad1dc05d9472d9f0d7aaa1df514","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.62.tgz","fileCount":2979,"integrity":"sha512-yJf7zwW9cSP/EsNiKj+/hrg6/YWQw+w+8MkmxBEDV9HFNqrQIirsjodhPuiazeLbM+5UetRIPd5ebAonOXLy3w==","signatures":[{"sig":"MEUCIQDGnU8dVsky1N68uwTchN2przOnielp611FY6qg3v8fAgIgPpj2ApHQzUggGyK1QEYyHOxqOI5dB2glHUnWD78hM44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74678427},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"da3f50377712cba73ab5c612d37f22a5a1f8373b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.62_1774398155304_0.26805953203143074","host":"s3://npm-registry-packages-npm-production"}},"2026.3.63":{"name":"skykoi","version":"2026.3.63","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.63","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"6708ed5cd744dd8d5e6f5bca38e04e2abb699202","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.63.tgz","fileCount":2979,"integrity":"sha512-6XQkSPRjyZ/4LSciAxa6MGhFqbM/7AGX3Mqipkv5gTYE6Y6/vdh7RIzlYI8PbZUrRddgcm2l7lfH3XDlazzlFw==","signatures":[{"sig":"MEUCIQCVrXPNznsKbrAyQPsqxkhf5H1WdiMD40ZuItReYnvjzQIgHCNXYh3CRYMruKxHtwoXmCjfbby4tPzPF8gXu8x3rtA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74682828},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"52e6d376c73d67e609a30bbd41cd2571bf353a51","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.63_1774400287247_0.25321624637044193","host":"s3://npm-registry-packages-npm-production"}},"2026.3.64":{"name":"skykoi","version":"2026.3.64","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.64","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"0f168aa58c701e1f1b0ba33a5fc7542247b1066b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.64.tgz","fileCount":2979,"integrity":"sha512-ki6czszAnwBN1irieIeZN9V2JR4IV5MkND3mhp77NAH/tR4z2khkS0luWB0yPMt8FVdOkuW5GGZx/Wu7+NJLOQ==","signatures":[{"sig":"MEQCIEhd3GBMUFU77fKLlhTFm2sXuDcv0yoY8UX2f5VOnni1AiATqk600zHRrJKJ6iiPKUOssjBNGjGyRJzjwD9P19iCSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74682946},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"9b8f74b32f54d2360e178d74a288a93271b1c14a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@larksuiteoapi/node-sdk":"^1.58.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.64_1774401468548_0.8873737688348586","host":"s3://npm-registry-packages-npm-production"}},"2026.3.65":{"name":"skykoi","version":"2026.3.65","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.65","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"431b0a4112bff1a940094e345feee1a156bb49b3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.65.tgz","fileCount":2759,"integrity":"sha512-OgpYvB4EyeTdccGRx9sMcBqIw4RdrWjZbMG9f+UbtjE7sy2R74KnVRhHgpoKmllEHqKmv2+0EmWSDY6b3KRAEA==","signatures":[{"sig":"MEQCIDdN2RBHr/talvR7JIq7AHn/WAeVd+pmMlrDQSWuKePNAiBCZwgVpZ2c2MBTgvYET3E/llk+ED2tXUUu0335evoa/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47207305},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"3cda8d203b9371b8d546d6ec553c7751c26d8a40","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.65_1774414288993_0.22867598213989226","host":"s3://npm-registry-packages-npm-production"}},"2026.3.66":{"name":"skykoi","version":"2026.3.66","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.66","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"a0f3b7f925e41352353071a3fb1d48e8bf956199","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.66.tgz","fileCount":2759,"integrity":"sha512-V7Bkkmwah9jVEcrT9lPk3n1PefqeoKwp7JaHf+s/HP9gMXIE4Wx9rLd0Pw95A/35Mnm9PwNdJsq2VH64p0pwcw==","signatures":[{"sig":"MEUCICN20/KhOOzRGdRkQZjWWC35uJARapY3ixZZUAsraXnRAiEA+23QYKh9/jCLsPyphnjSYPG+NXqqWwIBM/6c+zDKl+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47212783},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e9170db4d5b2f445c794a9b75979ef4d685ce5e8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.66_1774415755903_0.4930372436514032","host":"s3://npm-registry-packages-npm-production"}},"2026.3.67":{"name":"skykoi","version":"2026.3.67","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.67","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"0bf2830d45387b242a0f54430164753c1a50223b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.67.tgz","fileCount":2759,"integrity":"sha512-M62ceV8a0F206H8oPZgdF2xkRrTKt+xc49Q+ZijiaMDYmC6t9LEa0mZaXgJO7pSGNusyRq2uqkPDRv5Sqr7jUw==","signatures":[{"sig":"MEUCIB9Jnl+CcHoN6B6I68rpKxm96ka6T7PlUFlJPJgU45Y9AiEAwZxMlSxyVwe6eZbfHw6Di0vhkjCpj69WcIosMpzuAos=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47215487},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"43e1dea0ef36cab5b7834d79233e3d5e1bad0a98","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.67_1774420056713_0.45458930625225324","host":"s3://npm-registry-packages-npm-production"}},"2026.3.68":{"name":"skykoi","version":"2026.3.68","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.68","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"eaf3d8fdf7879aecc2a1bad411b24444afdbd234","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.68.tgz","fileCount":2759,"integrity":"sha512-oywMQoZ9S13eprY4x669nUixNYxxJnlrgoWG145Oz6JzG713uAYeQGQsDyLq5hH8Ybr/SkkNfR/WXtspHrjZkA==","signatures":[{"sig":"MEQCIDMAYdoFCPeMAtpiGK+knyAULzsKy/LVmUd0LsR9XzyaAiBop1nxoUNrJcW0jDCXbfDO8RkbkVu1J5Gk+fcfzpY1nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47215901},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"26bcd77472a0e559302c72fa0cb4685c0c2ab26f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.68_1774421235903_0.6005036518644882","host":"s3://npm-registry-packages-npm-production"}},"2026.3.69":{"name":"skykoi","version":"2026.3.69","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.69","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"f2a8df529d54c213a1598a9e7dd6ba318787457c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.69.tgz","fileCount":2759,"integrity":"sha512-L4irADNYmjsB6Paqr5amKP1dmKZ+qX49gtxo9OD+GjrF9gSWqbdMjgeDDyp4UMJVqQogUG0AK04HdatabZ7AMA==","signatures":[{"sig":"MEUCICczp5/BRNtvWH5cAUD1ekkZOg04XuXQb6ZrxZ8OUIQLAiEA2wK72ReDoKbihb/5rDXB1+slAPyAICOPDJ2f2SuetgA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47215905},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"efce87c2f9d0f70638598f5e2738aa0178257927","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.69_1774426161421_0.5518896923309538","host":"s3://npm-registry-packages-npm-production"}},"2026.3.70":{"name":"skykoi","version":"2026.3.70","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.70","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"f3416515ab19a0b5ed4d7ad8b76a00d652a90239","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.70.tgz","fileCount":2759,"integrity":"sha512-gcz6EpPHEmqeyIga5J+xu+YMxhycJFKnsccac6/pp3ZOJFPjMlXJ6u0K0I10RCIklnI6GDxmC46/DXVd7nT6GA==","signatures":[{"sig":"MEUCIQDKsMwAqotF9dM516TOa6pbgcAy36Slp9rcU4x0PxSpUAIgYjZNaKQF92YCWm/42HFEigTfzsk8EeE/6YM4ds8SWZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47217354},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ce8ead606bb7626d40120a9f77caf42123e45f75","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","postinstall":"npx playwright install chromium 2>/dev/null || true","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.39.3","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.1.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@whiskeysockets/baileys":"7.0.0-rc.9"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.70_1774470205731_0.5238090490045317","host":"s3://npm-registry-packages-npm-production"}},"2026.3.71":{"name":"skykoi","version":"2026.3.71","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.71","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"b7c4155c166aedbec1c63c6d6524cfaaab6e198e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.71.tgz","fileCount":1471,"integrity":"sha512-usS8swWUTXepheXsz14Qzm8r8j5RTXdLOX4/idDYUEKliPj33qUjlQDxhc5T4dTxYUYBh995maQv/pAZ1lvRsQ==","signatures":[{"sig":"MEYCIQDjXTAIbmoj/WCb7OGQSSckgm8y4SLFt/SeqDrHJduacAIhAK9NDi0uiRs8CycAUDFGgbgfB23jENV93m6KMBrZfZD/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17824254},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"cee554524de047bfdaaf2d9bb943ac32dbd24395","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.71_1774482216379_0.015376298234965668","host":"s3://npm-registry-packages-npm-production"}},"2026.3.72":{"name":"skykoi","version":"2026.3.72","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.72","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"984246e4bdcf4e511ce54d0bd129d9075d20ec76","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.72.tgz","fileCount":1471,"integrity":"sha512-0UadvypPo/5hJvMJiZdfzK7iI1TlRHtnhIXvCACj6Ajqnw/p8ot1oLjCIYSAqit5uiDKWMGX7qs55yCyLU9/zg==","signatures":[{"sig":"MEUCIQCEPoqn2VEMvPgYYafrSGcL0GlCVk8YEI9985yTTrFckgIgJf1IY4Pvom9ZZRPmRUyMX36a+LiLvur53TFoufpH2NA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17824361},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"22caa0f3f0dda3b0a351572f924c863a51acae6b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.72_1774483001714_0.2794981363153588","host":"s3://npm-registry-packages-npm-production"}},"2026.3.73":{"name":"skykoi","version":"2026.3.73","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.73","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"67ac9b1fe0af844e19c250ad1fcb5da6c276fb56","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.73.tgz","fileCount":2839,"integrity":"sha512-RXmNaLVaTLcV6bUc36wY/1PplGAZ3Y6G5ynjIhRYrfBTujWEk2ibHZCze6aepas9tU7TaUO34j8399+6nyE0gA==","signatures":[{"sig":"MEQCIHltWkYrR+5v0POwhuvaEkhpKo6k1d17uV6NDPR/G9JYAiAJADHsRPVMQE8cdZG2LMCSoErMD8okCeDGkvQw9hwhNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77376140},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"70e502fc02c56eab984e8ab90aebebf3c7b67607","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.73_1774490747802_0.5735994228160173","host":"s3://npm-registry-packages-npm-production"}},"2026.3.74":{"name":"skykoi","version":"2026.3.74","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.74","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"9fee7ad275a637f94da14de7df4913f016d87df2","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.74.tgz","fileCount":2853,"integrity":"sha512-74rFO8jLj3yWCarlro+ey4EZb3UQqLl1X35izwKsIWZvPuD+D3iCgn1BxXT90KLg4VMmvkatdO6snse01WJfEA==","signatures":[{"sig":"MEUCIQCyOx263MLzX/PhOWhyXgQ7OTjZHDwBFJ32b/ODvwk+cAIgFTImFng9FLLjDY4qU6+LEH1juh3acUOquE8jpMYbEog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79595071},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d2a9582db4027e05d9b01ccbe43c402449514d77","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.74_1774554095531_0.5418865118578253","host":"s3://npm-registry-packages-npm-production"}},"2026.3.75":{"name":"skykoi","version":"2026.3.75","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.75","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"53eb068ed5ba4c9580a8926fdb8af1e5a89650fc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.75.tgz","fileCount":2854,"integrity":"sha512-+tMzm2cSpJyJ+o2cX0lW6F2suQCv/YN5zcyKoWBrkv0Yrw8ZPOsAf6TYCkH1mh97GDVmkK1koToBqPa8fB8DcA==","signatures":[{"sig":"MEUCIEOMOYesVRpHxlxsQ7IGWRrStsqQ6vdKKGQLroUUcCB+AiEA4ORvlHz2laxj3I9V9wVoemxXKxUTUlYfc5qRGs8NA+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79603172},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"90b338baad8fcd1f6b956931937f0ab6bfa414cf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.75_1774720464869_0.25138380265003324","host":"s3://npm-registry-packages-npm-production"}},"2026.3.76":{"name":"skykoi","version":"2026.3.76","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.76","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"645f79e8789be90295ced00ce24762982d5c0111","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.76.tgz","fileCount":2854,"integrity":"sha512-kMz6bKAKip4zDXiaXKrkZ47q9u1J7Gn8+hk+avBpHDjFHU8iuQHK5yNFs+8CAj6o7oDby3QeBIG/zoZaa1IL3A==","signatures":[{"sig":"MEUCIBYNxD+cL3avzhcC9uARrF+d/S6ARK8Fs+w5vMLxJzt6AiEAtYqgXuxbBP96jqfHZQax4Z9zWmjSP0BZsqPA/3z3NfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79618030},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"238d31d86f71930b50c3e7728fae29aa84ac0e32","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.76_1774888392155_0.8366298056534442","host":"s3://npm-registry-packages-npm-production"}},"2026.3.77":{"name":"skykoi","version":"2026.3.77","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.77","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"eb57dcc6b1d212eba7fd364444c67a8b1c605392","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.77.tgz","fileCount":2853,"integrity":"sha512-kRClRNEZh3CESPl4ipsQXUggxnefay3iqBR4toWMjG9Y3J7Y3DEt5r2yrnvhYBUyN5jT7YiH0KY3FHrGDCp2iA==","signatures":[{"sig":"MEYCIQDaAOZ2+vLEhMrBnKr0AeUYsxg2mZH+LpaAM38m3jgF8QIhAJdEVbcocVy73XtAgNNYQ1Eh/+pssHKHy8yE37ltbwgf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79615859},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"fd3678b742aed8750fc941363b6b428c5d2aec84","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.77_1774900410419_0.4162906791714984","host":"s3://npm-registry-packages-npm-production"}},"2026.3.78":{"name":"skykoi","version":"2026.3.78","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.78","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"eb7b145f3da4481c84359e3ac0d8c478b9b2e36b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.78.tgz","fileCount":2853,"integrity":"sha512-rIP3Mmf0Q3trOJCSvnuAFeQNrM/6/1dXhjjjRWiO0ohAqON6Lkkb2sR5OIn1toK+0VXulzuF1vrVXFnS66+sig==","signatures":[{"sig":"MEQCIBeVGnOZ/nN+lxxUZE0PmrRQi+/Ajtr65CmCJFfhqMZpAiAvJSz95QMrwG87Usz4YYyYCgQRKPXesursszY+Q4iyjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79616839},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"1ca0441901977727c40e532c363b08aeb1ab4bf5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.78_1774997565533_0.346719796107976","host":"s3://npm-registry-packages-npm-production"}},"2026.3.79":{"name":"skykoi","version":"2026.3.79","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.79","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"17ff2b76ff73fc013649b228c31cc407d8be9cf7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.79.tgz","fileCount":2853,"integrity":"sha512-KTtCOxzXVsp+mK4ZUMw61tbqr8BgscrqcLLdl04XEvdCHRTbrJKmhOiTvOeCR35EgY9gsVeXjULv2b2RO+YNcw==","signatures":[{"sig":"MEUCIAcwd/DjHpAjwvzZv2Z2BZ2tIWdedlltXxs92z7BxfPrAiEAhLXXMGor9Bz++axxt7O71J0aUFH0w5KHt3Y9v0bpcvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79619765},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"7451396b8e92b3802ed4b3a9e9a824f58922c227","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.79_1775448194511_0.10926357927218633","host":"s3://npm-registry-packages-npm-production"}},"2026.3.80":{"name":"skykoi","version":"2026.3.80","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.80","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"d8ae8cd89822e5b9948d0851b7ca95790af92386","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.80.tgz","fileCount":2853,"integrity":"sha512-VB4szjVmxSZBTTrsH4LE+CnWtenihulQNjfI8+yS//laJEpnalNUd3N57SJpw+iA9GKAAqRA+h0Vm3/n4f2wAw==","signatures":[{"sig":"MEUCIQCFdIIl74x5kCg9CUJcit9aLpbAONCgV19geJ5zWe29RAIgVoaHNRBZ1UlgeuUP2y8a4j5Ff8RnAncM4HNUemvikgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79620563},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"429d9f59c33e6946f495d2a8728a0bda1d8e7632","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.80_1775453757070_0.26905310896923007","host":"s3://npm-registry-packages-npm-production"}},"2026.3.81":{"name":"skykoi","version":"2026.3.81","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.81","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"542ccf2dfbcac49898d94af82025f4c51308ea78","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.81.tgz","fileCount":2853,"integrity":"sha512-/3OnLzc7VH3dHa2iRYEl6njp4NzFavFEu5FC8mKwITYzhlRmrxBgDd89wxDe4KGjYzi3AMuiCR5LdWofkRB6EA==","signatures":[{"sig":"MEYCIQD5OvA5J7Bh8GL3M7WacpYe3XpmK+Jfi7GDI0910yaloAIhAKw55xD49iiSnFT3MAy5j43WivpUiiTP9+779VOV/B28","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79620701},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"57bda76871e0a34453e70efaa093645193dc6ab9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.81_1775457334182_0.3299932438783244","host":"s3://npm-registry-packages-npm-production"}},"2026.3.82":{"name":"skykoi","version":"2026.3.82","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.82","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"928131fa006cd454c7869c674307bc6d6c8687c1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.82.tgz","fileCount":2855,"integrity":"sha512-nYi59UzACwV/aNlKgnRlS62D+kGcpYBoxur7RjCUylXlvO4/0VGJiDF/dsfscyMjK1MP53SnSgeiSIc9fOWSTA==","signatures":[{"sig":"MEYCIQDUSZvSzMVYHQR5blwiZOM5ufwjY6eax6SqO12LZlKxSAIhAPSlryw0pqcAXDQlfY0IH6L5N1aUrrqr5A/JIAb5RARF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79620869},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"a678bf0ec86b7647f3c598060996f1e75d61072c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.82_1775458577595_0.04137193639568704","host":"s3://npm-registry-packages-npm-production"}},"2026.3.83":{"name":"skykoi","version":"2026.3.83","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"MIT","_id":"skykoi@2026.3.83","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"5457e24bd6b50ccac9d6e5d5a5f623774c3f4e86","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.83.tgz","fileCount":2855,"integrity":"sha512-qLmFNXtNix0NTMjU3GVE7aBxqLwH4W8LXpZ1xfnBuelF5BpoQVF7F/jfDm4PNyQOYjc+7RNvgdd9iUKd3JOL3A==","signatures":[{"sig":"MEYCIQC6L2QIBKJfi69Ex1MJw5qXe30V3ERB+sDoCzTLu0IYdwIhAI5vGfrHuj3tXKWYRAaHWYq3LU0aIEWZcQl+BHgCZtHc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79621029},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ec9225ae62da0886c2f7d6c93a5f49d546463d6f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && 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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.83_1775459417829_0.5827533452227798","host":"s3://npm-registry-packages-npm-production"}},"2026.3.84":{"name":"skykoi","version":"2026.3.84","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.84","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"fddf8a456e483e6e4c42f6bd108b3068c00d86b8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.84.tgz","fileCount":2859,"integrity":"sha512-5Qe87NFSyvtmQvOJyGC8UnubA+UCmYpcrlbhq+Bfr6255THeCQ34rBWokX9PJinXsTZ4yYRP2jF9y4NUYZhalg==","signatures":[{"sig":"MEUCIFHFZ0eWiACto7qXumN9ZLOBzMzFcUqdINXDIFD4zex9AiEAu0Cf0Q4VDexIAJNBP3U702VABzG/8hwJNqd3Kll6Foo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79558429},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"0abf2fcf885a9ceab076751e93862a46287865e1","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.84_1775614070412_0.8014919432127914","host":"s3://npm-registry-packages-npm-production"}},"2026.3.85":{"name":"skykoi","version":"2026.3.85","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.85","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"89c8ed87b3bd34c3d7a0e6de5da191c71f21a011","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.85.tgz","fileCount":2859,"integrity":"sha512-BCipP76sG886SzqcMYY2bhW+USZUuMYizSrjQPTmDkHOz6M8e+p8dbgI6u44+kiuxYb27vyAfU5Jv9P1id5Zgg==","signatures":[{"sig":"MEYCIQD9+p5yNqzkneO590DLVvuubO42ENcW9+0bmDvko6FPiAIhAL7I0TYtnI3hBLo2a/r+lFyi2/PSKL/O0q9O0Z4jAYdb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79558943},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"96caf751382a18f27c0ef3f43a24b2d1f1ffbd9a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.85_1775614527441_0.5956458356684013","host":"s3://npm-registry-packages-npm-production"}},"2026.3.86":{"name":"skykoi","version":"2026.3.86","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.86","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"43a5fedc5459019e1e579cc94c6f4f6866c6e36b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.86.tgz","fileCount":2857,"integrity":"sha512-OJlsejfm0JK2EqY1RwnhdU1zOYhH7KA1NbmrrU5X+bF1ihhRo2pUaJwM1cPTYtmNiAsRoQYDqoKPutTxjaMvkw==","signatures":[{"sig":"MEQCICAljUH7j1z0NGvmCF0clU1HmoHegrtXGMzGmTbRNMrmAiAZcX225B5BBJzL0OXi+iu4JZ52CtpJwEWzs1uvoq1kwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79556907},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"1178a2c824fc2313647eb01138137caf519449dc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.86_1775691376418_0.20059232843623986","host":"s3://npm-registry-packages-npm-production"}},"2026.3.87":{"name":"skykoi","version":"2026.3.87","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.87","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"c71f7a8326cf5d05f9b168959696d4e64bda1818","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.87.tgz","fileCount":2857,"integrity":"sha512-slbj6VFB2Aw0oe2vzoZl0HfBwUWSB88jjWcX+6Du/nUD8tsAgadaej7NLZuzrnx5AZRwA84x6eLx48H2sk2p/g==","signatures":[{"sig":"MEQCIHQ1UR1E1P+HyscEP9JAD+j5trxPjk8HyKk/CiqGQpTbAiA6JvRDkoDXbB36ErapbX0V81otCFyJ2Bne+Xsh6gYUIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79563202},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"5506f8c816eb1f9209359fb975c8a568850e5b98","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.87_1775711707468_0.9385415968123019","host":"s3://npm-registry-packages-npm-production"}},"2026.3.88":{"name":"skykoi","version":"2026.3.88","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.88","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"eaf79df945ab0d06d54f3644a25e97e47d3269ca","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.88.tgz","fileCount":2857,"integrity":"sha512-BnfoM5owLk8hyJqNhXO3/cLvzaOB/DUoavNCrVD28EPRuf7uN6ju1s8bi2wGT3RHGFzbwGOutFfZBO4YHF5eeg==","signatures":[{"sig":"MEUCIErM7Sr0g1hJPTxl1smTeIjQGUfBpJ4FfIaLST/ks1FcAiEA7JROTq9Ns4Cn+1c8VjhLevSLN/RycT9FMXTaizCBvwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79564384},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"5506f8c816eb1f9209359fb975c8a568850e5b98","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.88_1775712327650_0.33110243800466144","host":"s3://npm-registry-packages-npm-production"}},"2026.3.89":{"name":"skykoi","version":"2026.3.89","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.89","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"755fbc5c2d2d9e0b84b32b8051552fd754f14ff5","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.89.tgz","fileCount":2857,"integrity":"sha512-IpgnDeyQSXyH6HHPdD0vSddIlnYYGxE2q5FVuuKg9JdTW5thsewzl5UyJsfaNNTqM8WywVUgqn26/VS0goRLhg==","signatures":[{"sig":"MEUCIBLZfg9XMRWK0NCbLQlSNFJB1xpiitOf/1alFv5iNV7VAiEA7cOdfnSdeCcQyCg5GZ2QLo7zHZ72P/z710Eldsv3TZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79566165},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"3c130022c9f0b2c51f5d5434494516753dabf374","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.89_1775718740251_0.9776213603169677","host":"s3://npm-registry-packages-npm-production"}},"2026.3.90":{"name":"skykoi","version":"2026.3.90","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.90","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"b0e42062c0acfc5733c731e89e907dc172bc5f04","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.90.tgz","fileCount":2858,"integrity":"sha512-yRnViQFiA40PWSebnCLmzOkBPj6705Co39c1mI9gqpz81IYe0LBrOFanWBFFASsAnFJcbEzvQ8uL8oBjvFzJXw==","signatures":[{"sig":"MEYCIQCTEDMdO3H8p9pDv2Oqt8bokMn3J8aeFZuvFuaT0akzCAIhALbXzmBE2Bkle0Kk9M55gA3KsJsDD8bTyhI+Rmq0ZyOS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79574642},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"02364eb1988c36c751bb210388e2d29018a5c35a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.90_1775727464630_0.010332308370676557","host":"s3://npm-registry-packages-npm-production"}},"2026.3.91":{"name":"skykoi","version":"2026.3.91","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.91","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8c08cd8a6b4a5613f4164f50ac57c594680f6a00","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.91.tgz","fileCount":2859,"integrity":"sha512-G6UpK44zQme8PGvm2m9sSDSMCIkAusg6Fx6uQjRk9jYhVh//SG6DocMY3Vl/dY1xkwlxp/pFA6Dajv7tv5o9sw==","signatures":[{"sig":"MEYCIQDAPzE1+h+KfXgUkOem/zwy2q3zqCLlJVk3A/C1TMApjgIhAI0B0tz2dlaQiw0Oh9eTYiqnEtfLjTstmcBE+6KUZLem","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79574271},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"aceca0baa5355d9e2535ee8413aa533714e55608","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.91_1775730073248_0.5182526843230897","host":"s3://npm-registry-packages-npm-production"}},"2026.3.92":{"name":"skykoi","version":"2026.3.92","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.92","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"bac70fcf2fb24f7cceb522da500918e5d552cc56","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.92.tgz","fileCount":2860,"integrity":"sha512-fBwVpY75KbOtJT1YOCyeicVjxHmcPLZHiPiHUhfU+WrWwOACzMl/97wmcSKL/jQWax0Qb+V3P0g6WMMUyM1BXg==","signatures":[{"sig":"MEYCIQDcYfMz2KCOr+Btz6np8qAdbZvzHlA/JSact4ZLBn2GuQIhAPJwR9dHMH5F+NQ8QQnApeetQ0zWXYI49fm+c69il0PS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79576144},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"34b3a3c31f7866f6358e23b0d8ad8efb2edc99a5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.92_1775954816927_0.997998983279313","host":"s3://npm-registry-packages-npm-production"}},"2026.3.93":{"name":"skykoi","version":"2026.3.93","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.93","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"a607cb7160ed5260f396808ff8382929160fa051","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.93.tgz","fileCount":2860,"integrity":"sha512-uU7+KJAWWVU8RnAc1RxtwEnWL1Tc7+9K6qiMcTsePWVBDI7IqsDbbJLYbEi7OC9GzZ2MAH6zm/R+UN5sWRk0Hw==","signatures":[{"sig":"MEYCIQCsyojVf3QIWtsSnHwidfSSJX1N/tTXaxmxHYoCOaQz8QIhAPsuEU8E40b02+JFfHKsJfcTtzKJYV38LGQWZVI+1Cxq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79578069},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"b608d1d411fe3eb7d4d7b2592066e835d88dc742","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.93_1775965767078_0.18692557259220677","host":"s3://npm-registry-packages-npm-production"}},"2026.3.94":{"name":"skykoi","version":"2026.3.94","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.94","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"ab1713c73a24f5c8f407ffea824e0be1fb19e687","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.94.tgz","fileCount":2860,"integrity":"sha512-75oiaOcaJwoYDNgD00tldrTegJQNxMQ0MEkbo9tf6upX4bV9lqG8Ah5o2eacFvUH+Soo/osfmN2F+mLPIHZGQw==","signatures":[{"sig":"MEYCIQDB4l8EZ3lTMB+qdCiMmU4xGWqdRIKxKPqVNhq26OgAyQIhAKbf8ztls8CU7PFwFDlD0A9t5LyLlZ7Z1OsPGBi7IWlJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79579690},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"fe3d4b52bf3c59a00a33bbf70a4fe53ce2aa83b9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.94_1775969324598_0.5124219502399603","host":"s3://npm-registry-packages-npm-production"}},"2026.3.95":{"name":"skykoi","version":"2026.3.95","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.95","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"f74ee1e47b8615e8abe44290d9d436e962392991","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.95.tgz","fileCount":2861,"integrity":"sha512-h8hMFNnKA0Tu56VOcT4Hp/NtZ8BlCm5RHfhuG+bzaZQ2QSZnRMgEXryI3Bgg6abtt5fve7AhnTAkH5Xi2TDjIQ==","signatures":[{"sig":"MEQCICzlezjVu9rd/H1KoB/Zilt6Xu9dGrcHnf7usYMd1+ylAiBEs3wiMvYl7hmFTnTKgsV8hsFhJCRte/QUO3o7NlwUKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79600838},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"17195a6022273b7e2b9210e78392dd2cd0567aa7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.95_1775973526928_0.7846477431109222","host":"s3://npm-registry-packages-npm-production"}},"2026.3.96":{"name":"skykoi","version":"2026.3.96","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.96","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"15808ec16ff7be94bf0a71eb5c4248a0788d1fc9","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.96.tgz","fileCount":2861,"integrity":"sha512-eihpypdlQjY2FTcwR+Op+iY5lWiFO16MkC2YMWQtkaqosBiKIKBRSV3hE5Zu4c6iAmhBePEPJLLMYxGfjMmiLQ==","signatures":[{"sig":"MEYCIQCoQ8WH5LI5nHxYaf26Gz/u6OzpzyXRlCBHY6Tm/ECEOQIhAL6cnFJS75FxWd7L3NJYafzh6fmOkGyO8I1+9B4q3GZ7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79600915},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"81744f0641d05554545934daffd9bb4d93eb6e1f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.96_1775974174653_0.05255252157291013","host":"s3://npm-registry-packages-npm-production"}},"2026.3.97":{"name":"skykoi","version":"2026.3.97","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.97","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"e738a2b0a9679422bf3902dda58e2e6e548f1c46","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.97.tgz","fileCount":2861,"integrity":"sha512-laTeLDlMTP52bj1vmdj+Xn0yDjwUfmKQ72+yvuAEkBoaDfzzSTPw7tbY25/6IZC8g18HDF2U5kE2MkNh7aSpEg==","signatures":[{"sig":"MEUCIQCyZ3keo++HNGJ1fQprjUNEVBbrgYmNxtlZu6Nrkt5+nQIgcmHerfjZfPXdFJdAmb4vL1DlEOflIiobN8zN4lvy+cs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79605793},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"5a6f932512d1d31f3f2f70c5f4216e57727e89cf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.97_1775977484177_0.49293376002393763","host":"s3://npm-registry-packages-npm-production"}},"2026.3.98":{"name":"skykoi","version":"2026.3.98","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.98","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"be6ca2a297bb9a42f20fc39784d59d8f76a84638","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.98.tgz","fileCount":2861,"integrity":"sha512-WpbX3JbKZP+iG1QWoH6LkKelfrT5bZDMmaYqXfGz0khrAxJHfBimUl6t25K8etsdKOx9nGvrbrLVgfWNRhfX8Q==","signatures":[{"sig":"MEUCIHBv5GqAasbj2y8Au2GPaXoI8Tfr40UKDdq5hnV8a0LMAiEA5qWPvt25B5XR1v0uinIbCSgBTTb99Vlemk8MfdPgXUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79606676},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"65f9b54a17a3c7d0f963b529fd970539f5324dae","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.98_1775978535718_0.21992314703902127","host":"s3://npm-registry-packages-npm-production"}},"2026.3.99":{"name":"skykoi","version":"2026.3.99","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.99","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"73b6fa26fe5db88383085aa5e87dac1ae15a4b90","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.99.tgz","fileCount":2861,"integrity":"sha512-yO558WBALZGNWcoJ5mgHacWvYINrk5DzGNVgaGbZGzkst2Rp/Cn8TWtwH15p1PCxXJy8zR0rLu5iDEnhwhtoDg==","signatures":[{"sig":"MEUCIFgrkS8JTOexj7s3/u+pZ2U9oe7aOWDZN0D2RYHPcWt9AiEAgAm/ZCMCtzRPfQZx82/lbDOlqj2tPj6j6dQCOCnfMSk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79615224},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4d90d44539b2c158a42e96004a3db6c3e84fa483","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.99_1775980373136_0.3294339276350424","host":"s3://npm-registry-packages-npm-production"}},"2026.3.100":{"name":"skykoi","version":"2026.3.100","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.100","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"26b53e0d4e81a335fd30d65dc58018bc29fc8cb6","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.100.tgz","fileCount":2861,"integrity":"sha512-PTw0CNFjvmZ6MliAzGz77oXTC7Gf4UDQYOF3twrsyu82UffYbUsz8dEXYh9nC0URtIy9aBekmPOuu5Z1GZQoTg==","signatures":[{"sig":"MEUCIQDuHXpoqB8G0Dp59wFqO8Fx5Nd/oN71INW+FLgf11yeSgIgLahrBXKpcrvuYHGmQ1cyBQk3HNDA4rz6W1Mu4SvISb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79618701},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"3517fb953e5f88de79ca924c8ede7463276f268c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.100_1775983136203_0.6517086395313922","host":"s3://npm-registry-packages-npm-production"}},"2026.3.101":{"name":"skykoi","version":"2026.3.101","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.101","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"92bff36e9345d5fcc04e943a130005c1cbb6f047","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.101.tgz","fileCount":2862,"integrity":"sha512-LwWhnqWJBgp1/7sJVt26sZlXT4eCbRfyWV20DaGjRpBjVkSll4wV9b5kiFnE6ErP/nEmzbllq5craHDGBUzegw==","signatures":[{"sig":"MEUCIAkiFerSwL5uX/zP8gmMuRO/7x8qyUf8u2Q4SHj3GHEJAiEA/KXcqaNw12zpY1FN0BKZaawipHt1oRz39Z5gFmxED3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79625100},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"2fffaecb76531d778021769b178cc64edc69961c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.101_1775983809361_0.5071099353959585","host":"s3://npm-registry-packages-npm-production"}},"2026.3.102":{"name":"skykoi","version":"2026.3.102","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.102","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"45278d3e99cdc13b916e583f806f1d4ad2c22a99","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.102.tgz","fileCount":2862,"integrity":"sha512-+Ou+V61EXXZ4tlQP9WNArUGR8zQxcFwOJUu+CVIFpOcKMmkxymBTshSw2imVZ7UByMJbuRT4xLuc0pjYwpj9qA==","signatures":[{"sig":"MEYCIQCUrGRCKKjK465hbm5ZSGWz0ChbMBBDhSV+QGFwJplQaAIhAN+ZhhXuytqp8lJzgMWO8ezhhxjs5hws94zOGRcAWBpd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79625276},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"472951b34d08d6d191f9ea55105148d0716dfcb8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.102_1776031363336_0.14346783374653138","host":"s3://npm-registry-packages-npm-production"}},"2026.3.103":{"name":"skykoi","version":"2026.3.103","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.103","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"d28002e03da2beca9df63f83501f0977f1399401","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.103.tgz","fileCount":2862,"integrity":"sha512-twSLGrzip+eKqHWqdSKuDxOsoTQxlXLgsWqCsEKb+moapch1gl+xkQBTd0ZSFt17biYo717Ro4giYVF1q9OTew==","signatures":[{"sig":"MEUCIQCW8dM0ExaFQPPfVqSM5hK6gnoOZXkgybmgL4VVgF6ssQIgTG7HEODKQ7BPl/ukGCteXTKzxg09f0OqeUN8ik9boqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79625855},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4a2f909eecf3810efbc41da92f1c8ccb2a499903","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.103_1776033212400_0.29489679540486247","host":"s3://npm-registry-packages-npm-production"}},"2026.3.104":{"name":"skykoi","version":"2026.3.104","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.104","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"e3e8d50a622263598bded2dcaa6cc5f9af596638","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.104.tgz","fileCount":2862,"integrity":"sha512-Hm6w1/P6nPOnb103yRxQzAJjTrls9I2DOmUen8JPDGL0keSK0KDcDsFmZ+3q5fYEK388TizLWeh1UYGHgcKz8A==","signatures":[{"sig":"MEUCIHd2k1+BO/vrElMyQj8VuYBe44RSA1Xf/IKuR4prc1FRAiEAg9+iztSKQVLausEfwYZoYIZQZ1gYiaWDrAJCZDyywpA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79626948},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"16e055a879aba55f59feb3c353643a6784939081","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.104_1776033761665_0.9923203085909673","host":"s3://npm-registry-packages-npm-production"}},"2026.3.105":{"name":"skykoi","version":"2026.3.105","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.105","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"1faf7abcb20adbb2a4c6368cfd1deb1973460e79","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.105.tgz","fileCount":2863,"integrity":"sha512-Dpq2RaL3FbpJnUwgjPVWDjPQc6NDAvwRrkWzIlc4My92a37st4MlQlp4yf9aTAL/qEgdaglRTvcps5PC4ImGoQ==","signatures":[{"sig":"MEYCIQDjTYz7gXkPouJ9qdtcNoS9zWrn5KFZaAhM5R5bqJaO9gIhAN+M9MqcTAuffcmP/3GPPklmrmW2qCGh3UrQlOnC2TpF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79640064},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"721500de270773a97c7b45ed70fac551450260c8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.105_1776037125850_0.3986401927144696","host":"s3://npm-registry-packages-npm-production"}},"2026.3.106":{"name":"skykoi","version":"2026.3.106","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.106","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"c1dc7408e9192e4c66e6fc55f227fdb39f5769fc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.106.tgz","fileCount":2863,"integrity":"sha512-0SlljT1UbpaQhzpDikGaBbge7kRjV+G5zIh7I3pEkHS6HEmAJTukewq/kksMgX0403Cj5iseJo7faJocH/5F5Q==","signatures":[{"sig":"MEYCIQDJf3VZ6Faxpcf4YBdar8IKBIkIXMARL+C/wUlb0DvKUgIhAJtVS/Eg3FRCzE+utKWGOzSfcJLyc1MNt+gy9ncFcd5o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79641653},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"961d26911bb44cea7254fa6d1ae687694304f95b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.106_1776037608438_0.23966219218147855","host":"s3://npm-registry-packages-npm-production"}},"2026.3.107":{"name":"skykoi","version":"2026.3.107","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.107","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"30c4583187666d02c1b88576f5e585d0d90b6c75","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.107.tgz","fileCount":2864,"integrity":"sha512-Y9aNzzJi4D293zcoqPRT3eEytBiAT9+gE3GqO76xvb+7Zu3//xDiAvRVQxyq8spnk/9x7l1BFCgi1WrVTCwpKQ==","signatures":[{"sig":"MEYCIQCWU0p1wbwK9hWOozcHOyNPvQ3s9BGqcG7OSsW4sZkqowIhAOfxS5vLR4aWXFzNv29QkAzZCd9wC2UHwnXs0W0kPiqW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79651800},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"1ed14aa5295e13e33f63de27b60f4e437f62f3f6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.107_1776037947737_0.3938782537853531","host":"s3://npm-registry-packages-npm-production"}},"2026.3.108":{"name":"skykoi","version":"2026.3.108","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.108","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"c61dc6929599bf658f9e10fd9edf3450f5522f8c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.108.tgz","fileCount":2864,"integrity":"sha512-u2O/ohzoyrJB4vUuH21IpDr9L6EujprpVxE/q3AJ7qDh3RFXB/erjxx4q2IZfjW6Iu3BF4Fp2lPeBsF3qbMd4A==","signatures":[{"sig":"MEQCIGcbi4N0TY2h1i4WUQTcbC+m3SBaI1VmpudY78EzPdlCAiBwIuMIorxD+H/uTODLwBpwBdOf4nmYpc9DZmSN13zlxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79652195},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d2066e7b1ca4ad0b9183f91c87eb4f344188faed","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.108_1776038031082_0.5994443337955635","host":"s3://npm-registry-packages-npm-production"}},"2026.3.109":{"name":"skykoi","version":"2026.3.109","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.109","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"c29cba0c5947fec742fb102d824cc9b476db3f43","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.109.tgz","fileCount":2864,"integrity":"sha512-nLpC2H4TJcnPwjSrqm+hpC0rOQ75VL+z3fPgdtwyTzB+3k2nbHICa0STQdB9kKK4LOg4UL3EbNuJZJf7uQmGcg==","signatures":[{"sig":"MEYCIQCUpBxx+I0ntTc7L3p5UK26pAZiSb2/oY97zvWWbyTMOgIhANsDiY/dK1eI2J1ZPhI6JXTsiPoPg7U+UMRkFjAj3Rg/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79651953},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"97da9c23ad36075ae2f043f903ae689b91283895","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.109_1776038350908_0.6863140256163989","host":"s3://npm-registry-packages-npm-production"}},"2026.3.110":{"name":"skykoi","version":"2026.3.110","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.110","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"00677b8d1fc130b9ec4ba2d1b2fc39fa6b8c2fb2","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.110.tgz","fileCount":2864,"integrity":"sha512-2L6ZvlMv933nk0dX6+y5hGy7L5J2nkA+DYTyc7uCWb34faSDyatzoJ6FSKfrDXpq+sdmAuFnqWuv6Is5y6IWuQ==","signatures":[{"sig":"MEYCIQCiKhWZRcc21W1OzKCXIocMa1Jv1tPjGh4xPn7kb707lQIhAJNV3NSxaBwKEXLNNrhb7JWJw0BUAFOUQMXjIqlcvuaa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79651909},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"6641e384e9cbee5b2344e7107b17d5a3b27f55cb","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.110_1776041086632_0.8553595444930198","host":"s3://npm-registry-packages-npm-production"}},"2026.3.111":{"name":"skykoi","version":"2026.3.111","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.111","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"0fb7cd8f57a9e57a456201bab5f30e141718d087","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.111.tgz","fileCount":2864,"integrity":"sha512-1gTGUhtBCW0b2RZAJipoGmVOV2cLB0MlyyEizC/yorcfrkWQZITFFTrTEwzXEnXneXbpMQLttg4G0EnhFni3bQ==","signatures":[{"sig":"MEYCIQCGdQC2kDKbJURKD/ipKDhGDFKtPrxeMwyQM8XkljN/5AIhALl/a4MfTMyZ8l5o5ZJBXsJA7TCQBWtY/lRjdSBpLs8E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79658403},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ed14c8f40880d71af80b7a6e4f44636fb2b40d3b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.111_1776042060131_0.9115914026571048","host":"s3://npm-registry-packages-npm-production"}},"2026.3.112":{"name":"skykoi","version":"2026.3.112","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.112","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"002787b83e6a19d9101d24b184bfae4fb483875a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.112.tgz","fileCount":2864,"integrity":"sha512-LIzOFuZdt05An44PzoIhm5KwNI88+sBtYMjtBcBgQjt/h/kZFh2z+/HQOutfMqGO8SSLJrAcQgInTWKzJtYVZQ==","signatures":[{"sig":"MEUCIEMrwPtZWp8UTX8RjcRb4ZX+lDMY7vQqVtuXLjfY/PQZAiEA7WpvYe+91cdNiYHzUvNTuj6jNRXYPDODleMyKfiaIxs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79658349},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"8891ef48e848461e94762bc98564d826d816d7ef","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.112_1776042475606_0.29139003963533905","host":"s3://npm-registry-packages-npm-production"}},"2026.3.113":{"name":"skykoi","version":"2026.3.113","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.113","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"3e72c2a7ae0f42d7023d13e61d01b4771e796d07","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.113.tgz","fileCount":2864,"integrity":"sha512-JiFzYK5xkuK+20wZmj3Z+N3q6m2qAvYqdB6k1NYl7WC5Xo6x1S9s6K7y9m2nvKOVFhNGZRcRAFnXnHbsha4MFA==","signatures":[{"sig":"MEUCID+R6ttvu4ks0Cky9f0mqHNsMivm/0kY/0tzt76ckDK1AiEAiOJKBRdi/oaCzeVKLqnzYcpLP8c4rjuBgDOpmmruXl8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79658893},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f94d65693a978eb9074a31151f758770cc58fab0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.113_1776043819842_0.9834646526828272","host":"s3://npm-registry-packages-npm-production"}},"2026.3.114":{"name":"skykoi","version":"2026.3.114","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.114","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"9ecff2114cfaa78f48fd830553530907167a6e25","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.114.tgz","fileCount":2864,"integrity":"sha512-XKFCZ9fTqahyceGU5RcwcQUBxPSZlP54C581kh0rYclTRefjDtGUUYj6BBy0Qg0oaC6zlKNQ0DOYQbIN9C46+A==","signatures":[{"sig":"MEUCIAhJoIDuPK5L7wyXVasR8YSGaB9uCPgpVjooyqx904NjAiEAjZW9tvuGUFZbKLFL+Kz+kq/tKyY4+QHi5L9DbPltZVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79659416},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d9d933a2682b3aae1c3c5dc55a532d5c4c609493","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.114_1776045735368_0.07527648867885217","host":"s3://npm-registry-packages-npm-production"}},"2026.3.115":{"name":"skykoi","version":"2026.3.115","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.115","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"92fc0cf2ee86823a677071c88e3e83c1471e7448","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.115.tgz","fileCount":2864,"integrity":"sha512-AHv4EzOycIR+PpGHbgVd2AJMAtgQpE54ukj9fCm1u9hg3vXS5Lka8yMbQvL8Ze+5tbs2QB5q4DUgF9rhG990vA==","signatures":[{"sig":"MEUCIF8RUQvSuAOXhWweBKY+KvkyZFA8kUzVxdx1WexPqzVtAiEAh/pK2TUdEEp+DHy0uFKKN8KIE1hnQj8uRgDrY4xPx0Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79661221},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"9c61a4f1c45d5a98debf64a4124f979e5b31d930","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.115_1776049835816_0.1716492099533431","host":"s3://npm-registry-packages-npm-production"}},"2026.3.116":{"name":"skykoi","version":"2026.3.116","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.116","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"864bc13a782c9644395b0d738849bfc05c7c3330","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.116.tgz","fileCount":2864,"integrity":"sha512-KfeR7WQHlH4z+zjW3oKE2HO+Of0s2a9CXXognMivQQdugmRqJpaz8HXg9sw6Ko3G9WDksg39AHTQzhl6jTcPQQ==","signatures":[{"sig":"MEUCIQCXBhjFXOxPpS0srcphZrjKCfkmGjXDDMZb6ES8acH/ZQIgG3ThyNNShnk9NdWLBabZKCYn3TYSjZn2u8kAasFKBF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79661235},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"6cc2d9e857a9f99b0fe58d7ab0962aefd6ae0863","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.116_1776050421534_0.3532879515595255","host":"s3://npm-registry-packages-npm-production"}},"2026.3.117":{"name":"skykoi","version":"2026.3.117","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.117","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"adcf9181635de9baa23f9d76e7a3d35c045b9dfd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.117.tgz","fileCount":2864,"integrity":"sha512-yNzyOjLyK6xZKBUdSOOgrv8M/u3IhRRGMc4pGU3hSbjqJSOeUiclcecHyCwYcjBJPEIoF1u60/3aXfTk4PGbSA==","signatures":[{"sig":"MEUCIAhmaa1xAhK06ZR9YqRrmwd0Tj0fjK3bSdSUqdZQyrqdAiEAunUJd11Q6UjXaMM57wxGfHPFc8OkIfM20wPP8I48qLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79664661},"main":"dist/index.js","type":"module","_from":"file:skykoi-2026.3.117.tgz","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ee7db05dddf326d536ae39ec66a30ec92031fe80","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"_resolved":"C:\\Users\\ROCKIN~1\\AppData\\Local\\Temp\\1c23c4743f2d5c14eb0c627cc50a23af\\skykoi-2026.3.117.tgz","overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"_integrity":"sha512-yNzyOjLyK6xZKBUdSOOgrv8M/u3IhRRGMc4pGU3hSbjqJSOeUiclcecHyCwYcjBJPEIoF1u60/3aXfTk4PGbSA==","repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.117_1776051487387_0.5424671256103326","host":"s3://npm-registry-packages-npm-production"}},"2026.3.118":{"name":"skykoi","version":"2026.3.118","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.118","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"eed1d8dbd13df7630764e2883397fbd7ec5eeaa4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.118.tgz","fileCount":2864,"integrity":"sha512-dkJbSS78Xc5e1obJhSlVmZzRN0k/iAGsh1mh2LqloZ91U9u9cYkM7lY+1wTF9mOvQzB8cxHRhrulHE8wk3uYaA==","signatures":[{"sig":"MEUCIQC54xly/rysbWeHauLd2lVKokf4YzFqDO7c9QntbEjmOQIgHVB4JyLvy2naCSXqBfRY2DRmOCCDASF4u1JQQdFscBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79666209},"main":"dist/index.js","type":"module","_from":"file:skykoi-2026.3.118.tgz","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ee7db05dddf326d536ae39ec66a30ec92031fe80","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"_resolved":"C:\\Users\\ROCKIN~1\\AppData\\Local\\Temp\\96dbbcd7899f033bcdec5baa7dfe4fd4\\skykoi-2026.3.118.tgz","overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"_integrity":"sha512-dkJbSS78Xc5e1obJhSlVmZzRN0k/iAGsh1mh2LqloZ91U9u9cYkM7lY+1wTF9mOvQzB8cxHRhrulHE8wk3uYaA==","repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.118_1776051812307_0.6630027714047944","host":"s3://npm-registry-packages-npm-production"}},"2026.3.119":{"name":"skykoi","version":"2026.3.119","keywords":["skykoi","ai","agent","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.119","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"a10c9c3c9ace5877f564a2647033172b9dd5ce1d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.119.tgz","fileCount":2864,"integrity":"sha512-+5fdKCpFRYtCSLFeo1I5ZfrQ5gnotwQ7I+CXrl5C4sLFRFBxSIK+/YI3fmeIsXNgUemQVNi5KPcHQ4VPN2TgqQ==","signatures":[{"sig":"MEYCIQDh+qX3bvkQMwaiw3M/1J2KFNYtV00QgDYAnbBhXBF/XQIhAN4/tuflIbCZie7EKPOS/TEEmpmb+Uoo8MPr0BagkklB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79668173},"main":"dist/index.js","type":"module","_from":"file:skykoi-2026.3.119.tgz","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ee7db05dddf326d536ae39ec66a30ec92031fe80","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs agent --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"_resolved":"C:\\Users\\ROCKIN~1\\AppData\\Local\\Temp\\647e28288097d49fadb90855a6324295\\skykoi-2026.3.119.tgz","overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"_integrity":"sha512-+5fdKCpFRYtCSLFeo1I5ZfrQ5gnotwQ7I+CXrl5C4sLFRFBxSIK+/YI3fmeIsXNgUemQVNi5KPcHQ4VPN2TgqQ==","repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.6.2","description":"SkyKoi â€” AI agent runtime. Multi-channel gateway CLI with RPC agent. Forked from SkyKoi.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.119_1776054565721_0.24612131108495805","host":"s3://npm-registry-packages-npm-production"}},"2026.3.120":{"name":"skykoi","version":"2026.3.120","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.120","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"c8fde749d858da1561dee97db3b30d326c799d73","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.120.tgz","fileCount":1671,"integrity":"sha512-iqA2l0/9HBITW6mBYHP8B2IcQG7Nj+XGGEe/krqC4+cMFp9fDsTp0Nnb0bOqsB90cDG40HycpDqZoGC7kDd72g==","signatures":[{"sig":"MEUCIEV6tWKTER7ctYbREnX3tz97uKvWAuCGy54bN6GVeB7+AiEAuCJ+s5qZ2QqLXU9UFciWyr3WTsGCIB1+SIVrJv09AXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77074989},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"48e7c4b2fc2d1fdb50b6e050cefa7ad549eb1e0d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.120_1776571432745_0.42758524550985655","host":"s3://npm-registry-packages-npm-production"}},"2026.3.121":{"name":"skykoi","version":"2026.3.121","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.121","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"b0485891db203e71a17c22e48f66cf08f3db6608","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.121.tgz","fileCount":2759,"integrity":"sha512-yKxB8A7eMx4B8iOKClkWKPaBgk1ug4QyoMQJFlc3Ui2dYyVTjVu6PcfiPr2dt6DnBF3wZcmuENzf7EaG4oq48Q==","signatures":[{"sig":"MEQCID3nO8xNEy+dh8/+lA4K8aDnxUj0sA4+Pqd/ejU+ZAz2AiALWN86b07sNSTlbctfGJkXLwz6JADr+mlh+OBBQeyuzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77258673},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"48e7c4b2fc2d1fdb50b6e050cefa7ad549eb1e0d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.121_1776583693028_0.20033901273451615","host":"s3://npm-registry-packages-npm-production"}},"2026.3.122":{"name":"skykoi","version":"2026.3.122","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.122","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"f35520db815ba65400fc4a312de8a8e104e8cad0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.122.tgz","fileCount":2772,"integrity":"sha512-fEi9VGkLVVsyFMfA7RRFj0Et3RlPKbXMw9pQS9GPfES75uIYs+TgzAkn2HdwsiWSKo/TtCMIB931vo9DD8mS2w==","signatures":[{"sig":"MEUCIBEn/8PQlmJXoKACNFWnBwUEe8tPnEKlHfhCvemLRo/7AiEAziDZWJsgRjsEpR/zh4gNVpYxVBpqHDvPTQpWfCGlvq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79441140},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"6e3d1ebeefbd5f410522e9cc89876c7e6142ce6b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.122_1777006650126_0.6493327825880466","host":"s3://npm-registry-packages-npm-production"}},"2026.3.124":{"name":"skykoi","version":"2026.3.124","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.124","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"638c327ddcfa0f42dde7009d1244217d629b1940","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.124.tgz","fileCount":2773,"integrity":"sha512-q4IKF6n8oIn4TNSpsZgh/2UU4goaoPFbLm54Jl4XOuY5f5OZZs6XntWpbnSF5khgohYMVMwLZ+ZpNAI47Yu2Nw==","signatures":[{"sig":"MEUCIQCeW9VDC2Ws+tB8B0o5oOzdctICD5PRBHEw/gK3oaqi/gIgaAGjKS/9Z5D9hbRcmuSvseQKKscnEuBPjmVJ5qMrLX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79451341},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f0538c4ef0375d7f8608c5b1ba6ba55185854ced","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.124_1777275879417_0.9807269593167076","host":"s3://npm-registry-packages-npm-production"}},"2026.3.126":{"name":"skykoi","version":"2026.3.126","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.126","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"c0ba57c1fe7f3d64150765e80f1a380813bf3d50","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.126.tgz","fileCount":2773,"integrity":"sha512-/bOCoyy986mL2rTzdliO0v6guqwOXHcU4YVeKNlyBCXYF/frES1Yial87Ti5HXo+md4GCLgUuXh4TYWoUJbhAg==","signatures":[{"sig":"MEUCIQC3bU4uiKVsaDN2HpSwXx0LxzQwtoOb34maukGhcCVCnwIgMxDuVAZljuPRF1omdY2xtEEwhqIgXMurzFtqkTf12bU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79453680},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"1b1ca5a160392e787d9c2cb4e75c72818095bc26","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.126_1777340238748_0.5482285961882041","host":"s3://npm-registry-packages-npm-production"}},"2026.3.128":{"name":"skykoi","version":"2026.3.128","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.128","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"26a975e70bdce3ce1761853d7407d7edad90e3a0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.128.tgz","fileCount":2776,"integrity":"sha512-L5ggJBzAdDV9yoZJkVAtIxil/poxRuD7bqR3Pjg7R36IK5mauFF0bMIc1gBelSmzo5s63Qn3LOypPkdnbOQ2uA==","signatures":[{"sig":"MEQCIEcPJYR8LeltCeDTdQzt8f0dSXquuhCbmka1IWa+0DydAiAWpLIClgXMKs8fxB4VQIj3EHPti2rrIKkaaeL9mdK3rA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79466947},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"a469149897cd151ca94b9806728f48b13479557a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.128_1777340569877_0.20205990492077563","host":"s3://npm-registry-packages-npm-production"}},"2026.3.130":{"name":"skykoi","version":"2026.3.130","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.130","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"339f333bbfa15310987bdcd9eda306c6f41beb5b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.130.tgz","fileCount":2776,"integrity":"sha512-sw8I/JRJv5CYYhCKA1CB2gM/pNS0OBnKuBhfTKhj6SVonuHnsLvQTQQYnkBo2wOKKsPUuIlrxB3NtqaSAcw8Ng==","signatures":[{"sig":"MEUCIA+f/jtk2VW7KM3d4d/HPG3j46M6JA5x0Z8DkFcgF1/XAiEAxQgNgq2lnrzXDIMvNGN/fPXbdhH2molRoiNFqJM3VTY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79471282},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4565a0d8249faa2418ededb1eb6af7714d33d022","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.130_1777341602011_0.06505743281624787","host":"s3://npm-registry-packages-npm-production"}},"2026.3.132":{"name":"skykoi","version":"2026.3.132","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.132","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"d3889ef59104e729fc96b56a6e3ceb2e1b220e65","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.132.tgz","fileCount":2778,"integrity":"sha512-NpGXO+sW3RKZF+nzAVUsxoLaEEK7XKMHsgkxyhYIL20QjDAHeK6wsLtl5GNvvPUGYaTtp61OvEaM4NtF87cJGA==","signatures":[{"sig":"MEUCIQDaO0qHDZibxky0NQ1Jeu5aUB+kH3a7nYWgN1BRHypoYAIgUkpgX3hJb64gkw78GambLLvf6Kd9/s0MjDoNz5qbQ38=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79475480},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"8fafd7486888f5a6500701d24650d3afcb4a9fe3","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.132_1777343319149_0.8872740318903454","host":"s3://npm-registry-packages-npm-production"}},"2026.3.133":{"name":"skykoi","version":"2026.3.133","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.133","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"bd6d9a26be6595d425d0a47fb265965cc5214472","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.133.tgz","fileCount":2778,"integrity":"sha512-o+AzfXYNvtcD9xAVI9Y2frIzPSw7uc/XXIlhbV7qZ4CWiR8g4mb8cDj0goIwwFFjZrm5f2Cn8xKPYEQZrumi4A==","signatures":[{"sig":"MEUCIQCAbba23LlGtCZmz9OstBfOEs+BURoxdPMyP9vp6ybw/wIgfvjIl7T3J6dPDwuWp+VEQa2NGQuPt/JUf3z2nODd/S0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79482721},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"abe58414dcf1bb3fa0def9d2e7e6dbd77c75d0c8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.133_1777438571413_0.22439859547640761","host":"s3://npm-registry-packages-npm-production"}},"2026.3.135":{"name":"skykoi","version":"2026.3.135","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.135","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"9207f1f60c717ac003077a703e9d98f269cd491d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.135.tgz","fileCount":2778,"integrity":"sha512-4ja4489LkllYwhI/QWTzAL2DyHXuOVoA18xEsXDAzo2GLxoOQjwdOIn88fphAYnXU4Utj9c/Lt7JFXVyWxY83w==","signatures":[{"sig":"MEQCIEx8NneuGtKqxVAluAq7dy2isDfgXCVckyrpZR/yDxGqAiAxDyrbdNjd1+Q/t4RugZNEAwUAyBDb+c2fQDPQqa9TsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79482705},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"6bdcd23279d58d099f2a1f110214d1d62d6ae0a7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.135_1777438788973_0.12932982035535656","host":"s3://npm-registry-packages-npm-production"}},"2026.3.136":{"name":"skykoi","version":"2026.3.136","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.136","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"a1bedf4aae124433335cb0c37c9050c7ef67cf27","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.136.tgz","fileCount":2774,"integrity":"sha512-XbNbuuqI9J7jaFpcWUqiv9+SMcxAOTJ2T67B6C5+PYj1R1EOU0W+4UIBzKDHtF9POc+sRyfBXbFhL+FVyTaZFw==","signatures":[{"sig":"MEYCIQCHWWI9CpScGNmeDXb9WI0rS/ZzACufPf4yV43eOsaaPgIhAPXHcZySm5lkn+5ObkCbEIQVUaipI0UtKOZfbCy9u5ab","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79503007},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"6bdcd23279d58d099f2a1f110214d1d62d6ae0a7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.136_1777439305527_0.38665104266686945","host":"s3://npm-registry-packages-npm-production"}},"2026.3.137":{"name":"skykoi","version":"2026.3.137","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.137","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"7e0f0552a3dea537d5cc5ca6fb6c9d939478eef7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.137.tgz","fileCount":2778,"integrity":"sha512-8C4cvDZ/sg/S5gjzlwyzZhCUu9/+ZnEjWtMS8BEwegXb/4WapcSNggNLZSYTsFu/FFujqQvZsW8kGN4NbERJyQ==","signatures":[{"sig":"MEUCIFvboWbiFnlpEjoZ+tpy+/InQvg/CPDjI2hiGNFl6gqkAiEA2whSbPKZ5sJuLr5ixgKllwDK0MO5UAXCHtIr91UJLEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79482757},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"0dce489d9526cf672fd66534b6da342e101a9eda","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.137_1777439399754_0.03325933689143934","host":"s3://npm-registry-packages-npm-production"}},"2026.3.138":{"name":"skykoi","version":"2026.3.138","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.138","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"547b5710b2a53a509de0dcd3f816b57d9bb3c99e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.138.tgz","fileCount":2774,"integrity":"sha512-Oh5kD5KR2TKW/A0pkrEUjNffDK2wKhI4uYr+wVgQXhMeIahCEySQkPOkLaoZ/8bjIt7F0SKSJMVD+mnli1WHMA==","signatures":[{"sig":"MEUCIQCfKVtFeeqgWxP6IiFm8tVkpl9jZ22UtrWXyiDkMgE5TwIgdnZDiB4+guCPBC/WRw7O3OXnTethOdM2N+m+DGaSRLo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79503587},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"0dce489d9526cf672fd66534b6da342e101a9eda","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.138_1777441101331_0.8646902864122943","host":"s3://npm-registry-packages-npm-production"}},"2026.3.139":{"name":"skykoi","version":"2026.3.139","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.139","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"dfe22906cbbec0d52eafad0a9cc516f4b3cfb541","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.139.tgz","fileCount":2778,"integrity":"sha512-zDu6FrHdHIYHCo9bWBJTdjocrNCIHCkouIhya37DeDkEiWqxosmo/rm4Xp2OWzhuxeECmuRGJyTDU554a2bNYg==","signatures":[{"sig":"MEYCIQDwe+1EqLiqmXcoEYlVSTXMM6t5SStORPcigN2xz2qJtAIhAMgJcOJEnurRzL4iqO/TuV1pF2DFsNC3c6BHtg97cucY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79483257},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"b46f4eb6b338bbccb3d8a4daee8527d5d2d58734","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.139_1777441369224_0.5050978748731876","host":"s3://npm-registry-packages-npm-production"}},"2026.3.140":{"name":"skykoi","version":"2026.3.140","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.140","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"0c51c4cd98c23b5a9db1295756495cd74f13fefd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.140.tgz","fileCount":2775,"integrity":"sha512-UFxp0w4bW3uqVBjEXXBxzi8dL7xXwcTAtaZFdekcweccfLenZPhkBB86MMF7igYX+AdB4z2qE23Evi6sX/R9IQ==","signatures":[{"sig":"MEYCIQDWZjCrs9pj71msSXO9cjteSF4Yzjgxv6L5ge6eZYJtPQIhAJuqc9ac6w/FwbMYSwQnXICiSz39pgs5yxbZgSJHYfrK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79506505},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"b46f4eb6b338bbccb3d8a4daee8527d5d2d58734","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.140_1777444002373_0.6425032270556943","host":"s3://npm-registry-packages-npm-production"}},"2026.3.141":{"name":"skykoi","version":"2026.3.141","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.141","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"034b7f0a18f6f41a3141e69736686495d0cda0c2","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.141.tgz","fileCount":2779,"integrity":"sha512-klVuXRAeTaFhc0uN6xdFB8gqCRkCM/75RXgD2ewi+UK5b2c6HSxkqb5LJoK8eZLs2B/COTHCSpF6TjSizeITxw==","signatures":[{"sig":"MEYCIQC7MgprLXzpD3oAov1kKdnAjPs6cjrB3mdS/w9pXHa5zwIhAMIh6Jk96BPpgUPVakeYtOJkbWAPhJvzKed/G1+O5wJO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79486161},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"db6cc2368c0236962e8680a20ad35b657105c810","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.141_1777444200722_0.769690040171704","host":"s3://npm-registry-packages-npm-production"}},"2026.3.143":{"name":"skykoi","version":"2026.3.143","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.143","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"a691f39d3e6bbcd7142d0ba74195d16fc9d9dcd3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.143.tgz","fileCount":2779,"integrity":"sha512-lQ1KfCc8hoiPu9z1RpemcPK2K3BBRDq6HU0nAbu9MofSwjDZOT1UETC1gM248U+I8p16mJGBKjUT0fMA10eW5A==","signatures":[{"sig":"MEUCIQDf+0CJxjUdzXnCHHq0Fnxnd6gecRakedRqboTB6e5/hgIgDNCzChSmQN/vc3LGDX31jdSs1fsG6KYcF9GLpDV4BRc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79488917},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"eb3deea9ab0213cd6841bb91f47b787f5ae60cd9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.143_1777451175112_0.3849565892119631","host":"s3://npm-registry-packages-npm-production"}},"2026.3.144":{"name":"skykoi","version":"2026.3.144","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.144","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"58d49432feb4b23f430fd4cb8cbf539a0f269077","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.144.tgz","fileCount":2775,"integrity":"sha512-Uhq4yBUaMQ2X9KxBZVOOSAT3Ti9JuxelKAb5lfvPRKwYfJHi1x1cjGmn4gVnvmvEiMI0s5ddyjJbaV3Kmf3apA==","signatures":[{"sig":"MEUCIBOhXq7239c+yKnckaejeOPrOCYLQXdl4JF97xRsoNbEAiEA5YHqb1GqFmfiptWx8QMMpWMW/1C0ZQIS0tMwkQixnS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79509265},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"eb3deea9ab0213cd6841bb91f47b787f5ae60cd9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.144_1777451248595_0.2740109891943463","host":"s3://npm-registry-packages-npm-production"}},"2026.3.145":{"name":"skykoi","version":"2026.3.145","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.145","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"057b2967196d4b1bbeae0f410d441857cf835280","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.145.tgz","fileCount":2779,"integrity":"sha512-Lki9XYgg7kUmYGI38iot8vjajl5e2DS55E0thK8LgcgonTDRcB5PgoKdmoQRgdSGGMLzouie8zxBIJc/6lFQYQ==","signatures":[{"sig":"MEQCIEnl34+h/OY6F6MEudRPSnKUzZKpNyDasbSePlp9oaq0AiAinNL7A/d/eK+g6svK0d8qlCcBHH+Ab6yP3Hag5WlGWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79488909},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"aad2d40cecd106bb6dcdc13cd28f197a50ca45dc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.145_1777451352389_0.8439085396992856","host":"s3://npm-registry-packages-npm-production"}},"2026.3.146":{"name":"skykoi","version":"2026.3.146","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.146","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"f37434309b5718e29399b6d87e7edf8fb850b67e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.146.tgz","fileCount":2775,"integrity":"sha512-qlKAXPR5WUvtEIsAZgSNprt6VavKpiPsYKghKOwnZNT3Tb9O+AVLS1487UCcOEb8GTishHDSGwjlzvosog0ztw==","signatures":[{"sig":"MEUCIQDElIwm97lsnhl2ApbmL0jHZmxx12gUXCFnWVt/Ytu4cQIgZVwizjoHixCSIZIphHJkrnwH+ih2rqP+X8x5mlUfbv8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79509315},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"aad2d40cecd106bb6dcdc13cd28f197a50ca45dc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.146_1777452802534_0.22952798347776815","host":"s3://npm-registry-packages-npm-production"}},"2026.3.147":{"name":"skykoi","version":"2026.3.147","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.147","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"1dbeae16c16cf663485bb2d0ed0309a1a9a28f38","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.147.tgz","fileCount":2779,"integrity":"sha512-1yZE179EIgjQIUIvNKoY7MmvC5uOIsE3VLVYopY5BJZA4s/0BjuqOHS9QljBYgIoTS7B4iXheJe4b3WWtkk6dA==","signatures":[{"sig":"MEUCIQDha6zhr7FR0bcCY/22cnO2T3kHEuRzQRAhQwpxA/v2lQIgIGGAGDY+jIC6DoF+6FYv9m7n0zsFkdaSfe3ZuKlfGpQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79488919},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e074580a4d08d2a3c54e2cffe242035db181aab3","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.147_1777452915155_0.8100282023686343","host":"s3://npm-registry-packages-npm-production"}},"2026.3.148":{"name":"skykoi","version":"2026.3.148","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.148","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"23660e04d4c867614266d2166a4d20d6c93d846f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.148.tgz","fileCount":2775,"integrity":"sha512-nWs+aC/IrWNkZPCp/nFD93Ok+TrzBV8YPGI9TJDzlJCf/oHTT2CKB3VKYTW7Qd0/vm/kRXoABrpzzpQaSPrP5g==","signatures":[{"sig":"MEUCIETNap3bpU6ZB8mw99JL7ue1j5MxKpe+MqJylMqsUcBjAiEAhuJ/iKQXMGV6x2QIRnB19jc0FdYD/SHHeZR31/jWR/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79509878},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e074580a4d08d2a3c54e2cffe242035db181aab3","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.148_1777453347034_0.42192040427613153","host":"s3://npm-registry-packages-npm-production"}},"2026.3.149":{"name":"skykoi","version":"2026.3.149","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.149","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"ddfc442207fce6f420fb27a45852a67158675c7a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.149.tgz","fileCount":2779,"integrity":"sha512-123vWDKJFTp2gGZ+8XeWBlnwu/0wXaHan0du/D9nKSe1LgNyEvffntWi++hfdTjNHLdexXtJ+8RCJvriAt8Iuw==","signatures":[{"sig":"MEQCIFdqWJJtzTiYBo+c9k/ftCmEHc3kt4s1QH2QDiLuc6rnAiBV/1N0D5X5n2cSEC0UgIUijiVcnaNr6eHST2VqGqaH4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79489473},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ecb6c7e1dadf1da26d11b891dd48ea3ee89cecc0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.149_1777453446901_0.09524643069902794","host":"s3://npm-registry-packages-npm-production"}},"2026.3.150":{"name":"skykoi","version":"2026.3.150","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.150","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"596f8b4107fed7130ab3c9987d31bf7fef583d15","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.150.tgz","fileCount":2776,"integrity":"sha512-I5ieT3ay6Iqp4teiGQJXVOfe10t+7WiL2qt8T30m0dgmMHAUjImXps+pecviuLDTDkSBaAh9TR4+AnOa/PLJBw==","signatures":[{"sig":"MEQCIFJ8iP1GO6M557Bs4X2ehOnQury5wFEhvWxFyiwlOfMoAiARPytOKSKQYR1LvMWCU1E1xoavLDgnXv6jrYK6qE70xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79512918},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ecb6c7e1dadf1da26d11b891dd48ea3ee89cecc0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.150_1777455574064_0.08280290026957804","host":"s3://npm-registry-packages-npm-production"}},"2026.3.151":{"name":"skykoi","version":"2026.3.151","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.151","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"79254ca71b74eded78f4a3197b6b5f78d8393e45","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.151.tgz","fileCount":2780,"integrity":"sha512-IAEafDx4ihG+je2/eLcl5sg+Z43vJHhPeBWA0s+tkSVouEE1Dwj0bT3jk2KEypA4+jdeNGX1yJe3X06y/IcL2g==","signatures":[{"sig":"MEYCIQDfHgvVpIJ3eHq0JNyth9x8SjmEycp4BhE6XPuOq09mXQIhANP0M0iX+4+J03YdECI6T2iAvvJtlogmv/ESAdEMjlul","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79492620},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e49df76df8d80861cb62ee9ff6903ddaa95c6f6d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.151_1777455696457_0.02516382331096767","host":"s3://npm-registry-packages-npm-production"}},"2026.3.152":{"name":"skykoi","version":"2026.3.152","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.152","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8d124253bae1d2e89f28a7387ff45d5c821ebfff","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.152.tgz","fileCount":2776,"integrity":"sha512-l4zcHmquPhEftPuEtof8Mw71J4/sX3FjSjIBGpRKxGt2q2Y5+RP5zcAuv+HC8edJ56+Iug5TvSfMpWOZFefSgw==","signatures":[{"sig":"MEQCIFy6uvlxYEik/rLjfk6Zp4R47VxpSVRbGDCtjo/UzuvkAiBAJbQ8oqKYhyWOifCM2P3WddWZQM/Oq5sr9WAsYLF0vA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79513111},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e49df76df8d80861cb62ee9ff6903ddaa95c6f6d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.152_1777455854042_0.30278405395433183","host":"s3://npm-registry-packages-npm-production"}},"2026.3.153":{"name":"skykoi","version":"2026.3.153","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.153","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"dea106b7dbed0d2dd7cdcac119c1a8c3b136793a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.153.tgz","fileCount":2780,"integrity":"sha512-ko1PbOA4lP/yPvY/Xv5gldjov++ykvYJ/iTzsRnPwryv4Ff5U5Hva23b7xGdJa+gNC38uis50CoMynXE27dP3A==","signatures":[{"sig":"MEUCIQCcFytkUqGEwbcEPYB0Yv3xIK+24jYgUk9fImQsmMYPYgIgWARZuxGNGoo2x5IaWctqft3YfBZzx2qYQc1nQ72+9OY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79492777},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"080a36012cb4c9a6525ea880a5c222809087e0fb","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.153_1777455952060_0.9360440980151827","host":"s3://npm-registry-packages-npm-production"}},"2026.3.154":{"name":"skykoi","version":"2026.3.154","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.154","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"da59d4b90ed67697266bd50a0a0ebdd584736083","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.154.tgz","fileCount":2776,"integrity":"sha512-L4oUAkxCbVTYn81qINSsoA+yXS+dvcefZIbY6EF9U3oUKBR8sLeFnOJZ4d2+rdH1hv+Rv3IzRK+FXFqjACkGIQ==","signatures":[{"sig":"MEUCIBsUTtHpjoH+V2ahwMZ8dSxflxsQqRVbifvnBAHGFZVWAiEA++fWUaxl49UaDtxqlfCNcHA0OiEJ+1ULKxhXqAMKYnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79513301},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"080a36012cb4c9a6525ea880a5c222809087e0fb","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.154_1777488310882_0.035118846359019296","host":"s3://npm-registry-packages-npm-production"}},"2026.3.155":{"name":"skykoi","version":"2026.3.155","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.155","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"a881e24a5111d8140534f6578b934a3f1a43141f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.155.tgz","fileCount":2780,"integrity":"sha512-ZN8DJkRaJ7RTyjZbNhh6L47IDnU9+t2oeZXhfZxmEdGPagFirmuRemE1wuoG9ihBHxzIuXV/CMMuQhyyOjKf3w==","signatures":[{"sig":"MEUCIQC76DAHp/lIsDr8NxJk61sf5ai/vR6m5f1zSTBhczZG8wIgSLpzSwqcQNejRLElLCF2cxmp0yhthnXe50ZKd3kQtPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79492986},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"84c79cab7ef55b8bc09d418d0722a93ced01943c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.155_1777488409145_0.9678242119822391","host":"s3://npm-registry-packages-npm-production"}},"2026.3.156":{"name":"skykoi","version":"2026.3.156","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.156","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8869c2bc74806dae1129628fb4f23f21950f13f6","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.156.tgz","fileCount":2776,"integrity":"sha512-LGAJ7BzSdkjxyaxahGaQzPWOsBZyVHBVlBJoSDTfK3fWcxy75Y507ShUK4BSvfpUn/utqgj7e3URrpK6DSjUPw==","signatures":[{"sig":"MEUCIBOLru2mJbXRRWigsVkl2y1y6urxJgWXAw1xUoLSahHZAiEAyCVcfpUhhItMkMJ9XBztp2IEawozbNtjdAD+JtlJCCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79513310},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"84c79cab7ef55b8bc09d418d0722a93ced01943c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.156_1777492782230_0.9443555524706311","host":"s3://npm-registry-packages-npm-production"}},"2026.3.157":{"name":"skykoi","version":"2026.3.157","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.157","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"d564965c935d2baa4a46aac9b15618e879816872","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.157.tgz","fileCount":2780,"integrity":"sha512-jqPUvOBL1+mJsutjgZ3UZ36Z73nTZkWKebA8P8w7p3Lv9YDVO6OrkBKRmqaeUzNsaedh4+57dtTWJkhJOXWYpQ==","signatures":[{"sig":"MEQCIBw9gCgh6UHAlpU1YP2wnlSiQMJkCIZJpi8nwDATqR0sAiBi5GMCwHrVsu4r2VPS/HMykNcjEGYV2GGu4lfSpvbWUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79492990},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"26491daba1b7a67d4b43f246dcfaee7f4f616f94","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.157_1777492886801_0.1274263518746408","host":"s3://npm-registry-packages-npm-production"}},"2026.3.158":{"name":"skykoi","version":"2026.3.158","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.158","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"543d6140e220ebb4100ecaad6368bd7a2724e88f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.158.tgz","fileCount":2776,"integrity":"sha512-FP0T+i+Bx17EpfRVM80moMg9QZ+qoT6pB1az/pwRifHznhsDv+lwyagM+RtMOYvKYSRUa8hEglknsSwxZf5Xzg==","signatures":[{"sig":"MEUCIQD7Pz+XHyQqqLeGBVI8X+ofe/6Ve/0a14pa55Lt7KhX7AIgafpmDllSsEOHNiiUB4CdBqjPmdSQoR2l8WUBgbXAPd0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79516244},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"26491daba1b7a67d4b43f246dcfaee7f4f616f94","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.158_1777493374897_0.40708587535155116","host":"s3://npm-registry-packages-npm-production"}},"2026.3.159":{"name":"skykoi","version":"2026.3.159","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.159","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8a61d2e83a58ee9d5c5f213bd1e859bbdf04a111","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.159.tgz","fileCount":2780,"integrity":"sha512-KzS5UOCbEwB+NdvP2MfdEnrCrwCRXG9DmWdgX0RJ5rk3Tihk1BCYg8VnMxs1AS07CnUnT31onKYxt1ntA21p9A==","signatures":[{"sig":"MEYCIQDLRbjrVKRVP01iJKvKzDpIylLzGSCdyQt+quTDOClfhgIhALl3PkLs5ROpDHbl+BCgx2e//W3UdUQEc4wROX7wX4Ja","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79495858},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"7b7956edc91a0b1b7b6e25cac0d6f268f0e48f2a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.159_1777493488571_0.42985301998115033","host":"s3://npm-registry-packages-npm-production"}},"2026.3.160":{"name":"skykoi","version":"2026.3.160","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.160","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"72e2c5f7dbe48110cf247141e817dbf16531e99f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.160.tgz","fileCount":2776,"integrity":"sha512-zT5r2ZncvbnFHdDlhb/mCHTAOQNqj2O6jm5zUwIjLVUuwCKW0kg9HQOlbmdVTpAjCij2ceAz/b2Na7sEvo3kHQ==","signatures":[{"sig":"MEQCIC4ivBUV7Npu/yICNsrAOhrBxZJBFanXZXu1oVo84aChAiAV25Vm8D3LtEiGDUL9gDkez42UtTRFJd/xlYvPDjuasA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79516532},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"7b7956edc91a0b1b7b6e25cac0d6f268f0e48f2a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.160_1777494360971_0.8907740381710485","host":"s3://npm-registry-packages-npm-production"}},"2026.3.161":{"name":"skykoi","version":"2026.3.161","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.161","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8b8657cd51005ceb6c9c50c3673eb999f00ba267","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.161.tgz","fileCount":2780,"integrity":"sha512-fS+2i/ZJRvV2oUZKdVtH1EOslykSRuaQzbVKogWvZWlkPAbWwN1KDdquD7mQoElW5kdp0dy5UQjKimyNORwEWw==","signatures":[{"sig":"MEQCIHEQA+VbAw6tXpVDFikZnTu61ND5dnGP89NQgb/Se0ZLAiB1IdjN+qVk/fgPZ2vx88P5inAww0/Hvhc/xn77t6hAFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79496166},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"3fc67030b7d3f7bd7ebf0cba189c3b8a5c2b93f5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.161_1777494466376_0.735366663242365","host":"s3://npm-registry-packages-npm-production"}},"2026.3.162":{"name":"skykoi","version":"2026.3.162","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.162","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"3d100df6e3d5e36718144b7889a58d21d80b03f3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.162.tgz","fileCount":2776,"integrity":"sha512-H6eQ2ZksAaQh2VXYsVbK23zSym3nTz4AV+W6nqYJhYMSOYDDw4VPZC6NOhYrSL2dCitk86WxK19+/D4qgx6GIg==","signatures":[{"sig":"MEUCIQC+aKvyzvoRtmgyc7J0YFQlKH70r+53slVDOBpV/U9EZgIgEXzKMTK/ySeKi0kDKWmj2juGwjqgrn3Y3ZSJFoy9xE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79517445},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"3fc67030b7d3f7bd7ebf0cba189c3b8a5c2b93f5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.162_1777495929643_0.019741226252234956","host":"s3://npm-registry-packages-npm-production"}},"2026.3.163":{"name":"skykoi","version":"2026.3.163","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.163","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"947318b896ee6b3a9c52e9dfd9ef52430c3a761e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.163.tgz","fileCount":2780,"integrity":"sha512-jrlxeXDIZkfjvdKW8JmCoRHN5uC1/1prDZP8cV5VI+L5016F1RIzJzk8h5Nb03KUk8zh22sSn4sIGUztsNhT1Q==","signatures":[{"sig":"MEUCIQCUxzeKKu4jtQ+t7V9L9ROuzI5kZiL2OJr1DYRGqcK4FwIgbGWelLjahAxF5Ntg7Zt5q35ggOuZli7V7JY775CkU9c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79497075},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"118f61a85ddbba41fe373f9bb6b3072b81b9a4cc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.163_1777496039315_0.3831720854567233","host":"s3://npm-registry-packages-npm-production"}},"2026.3.165":{"name":"skykoi","version":"2026.3.165","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.165","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"7a1af7bff2188565f27facc7ffcd6bd763e6a33b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.165.tgz","fileCount":2777,"integrity":"sha512-3acCNzSzZD2c2a4wCkFKfaFdv/8l9gpFSMZUrR9fIJ4qx2RsAuJsQ3MxLe6u06mPuEJXEfU6u2iDKEKpQQiq6Q==","signatures":[{"sig":"MEQCIGn8ogd23/ydPxWmSNaSYR/2kFXhnHF6htTNC+/+r8LrAiBgBC/uDL5S95Tf0QeCewu3kcLHZD54pPjxydmCzKalvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79521382},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"118f61a85ddbba41fe373f9bb6b3072b81b9a4cc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.165_1777500384459_0.011728589353225516","host":"s3://npm-registry-packages-npm-production"}},"2026.3.166":{"name":"skykoi","version":"2026.3.166","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.166","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"55cc25bc8d8b28257beed5ae7fef9dfc8b60e387","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.166.tgz","fileCount":2781,"integrity":"sha512-N6qqeFcb3F+pGgYDkeER2lUrXxJrdmeAvk6wgtFc3V6PGo1U1Rju7M8IJVUshTSqxhVkLB7xBtE60YaP9gd5Ww==","signatures":[{"sig":"MEQCIF8L4GJK+K+UCHdnySDb4xCCubC1NPpp8elCqfKNoMcuAiBxJwZwrGll8ARnCZKoZysGk05WlgLOEgqROYMt+SrohA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79500990},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"c80ad86ce89b37e5d3ffca702e28c0009060a63a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.166_1777500491647_0.784683374683133","host":"s3://npm-registry-packages-npm-production"}},"2026.3.167":{"name":"skykoi","version":"2026.3.167","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.167","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"b4fac0c560a47837622affe090f87cd60c29383d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.167.tgz","fileCount":2777,"integrity":"sha512-v/LyKI+h6X6dXRiDUAVsjHtfQ2y8+XbAfVRThk3kWMLMd6jRpScQ4srddpFuFUWUqTO5V94aGfy2JsvcVynT5g==","signatures":[{"sig":"MEUCIQCw2vy4kw19Xzxh5AMn+xxA4tmBud072OKOe2k2BnZJlQIgXgMrlLx4gV/yx3UnCGRrJe17YJZxZ5JyCyaekMytVC0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79521382},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"c80ad86ce89b37e5d3ffca702e28c0009060a63a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.167_1777501090673_0.22950654097214196","host":"s3://npm-registry-packages-npm-production"}},"2026.3.168":{"name":"skykoi","version":"2026.3.168","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.168","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"71ca50322006a8a34a00c77a26dd60a6e40be49e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.168.tgz","fileCount":2781,"integrity":"sha512-chVbKfTpvX5L3fgWBQFIkfdO4wU29mtUguid8Ny3WIjrdJ1g+MuMfwbOtanS69Bw9G/2jQ/FpRY1uJEI3KR9rA==","signatures":[{"sig":"MEUCIQC1VQUImBfumY0LK/rp+AoRVEqh2NYNNGc8M/5gflbqswIgBpNge108WRA/29Hh/87kyUbzc6Z6/Xkf5I3AtfiljwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79500996},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"54ef5006b2f6f5b4ff50ec7dbd342fde382f0e80","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.168_1777501192625_0.8802359765096928","host":"s3://npm-registry-packages-npm-production"}},"2026.3.169":{"name":"skykoi","version":"2026.3.169","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.169","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8e5e0646b4a98d59c8e4f69622a3c7b54ce4c03d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.169.tgz","fileCount":2781,"integrity":"sha512-XtwC3u+H7jS2XwJ+l9XAgSe1wCywZP+HU/SasHPzl+XUYSkxybsl9LRNe4wzg7HCXRjUDEKS9CB0pdhPVCz8tQ==","signatures":[{"sig":"MEUCICQPC175rniiFabfr7O+CJP3opa9qT7cNrwyDSjoPnHJAiEAwXNI8t8/7EIGLPEfI3wcOx+JFZj2Xu9wndLkLGOsoGM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79503129},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"8554af0cbb049bf7f33f646935ebafbba8563255","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.169_1777504637098_0.9883222417339566","host":"s3://npm-registry-packages-npm-production"}},"2026.3.170":{"name":"skykoi","version":"2026.3.170","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.170","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"97c471ab6637be8a393be2d177b1e77ffc5afd0c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.170.tgz","fileCount":2781,"integrity":"sha512-2jgk9YIdGB4EECkfjkVLtyu5uyVTDtMZxODicN1FRx0oqEw951wjcV0o2h6wyxRt+IP7JkH8jL/pRzUze+8U1w==","signatures":[{"sig":"MEUCIQCzG/6rrOKa/D2D/FoAu4ZJn6lxom05JLOpFkpPFMLGnwIga/c1zu6+lxRfCnVlGgKxU8zSjOiFBstnlVC+Qw36MPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79503159},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"16d2f9d0a18bd26931c075811de1dca547a83b96","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.170_1777505055016_0.8882539481732186","host":"s3://npm-registry-packages-npm-production"}},"2026.3.171":{"name":"skykoi","version":"2026.3.171","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.171","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"bede0961b0ca477658cca4891e74038eb82df556","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.171.tgz","fileCount":2781,"integrity":"sha512-ekN8HS9ov08kRvir6LTc6LUxl+05Lh+11+1HBkXBHFSvQQTjkedUM0QVG5eWAtFtEMTpINxRmnMq90QaaImtyQ==","signatures":[{"sig":"MEUCIQC6AbnTJOVcGlX03FfbqxEWsQaACPK88zU4bbh/TIrtYgIgU8+0soxT7lrxE2ZFWhNPl6blq3NBfjvyzUoooNBUhgc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79503169},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"314b6f92a8805392a03d6ce568e2e79f82ff4d32","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.171_1777506002612_0.135509884552115","host":"s3://npm-registry-packages-npm-production"}},"2026.3.172":{"name":"skykoi","version":"2026.3.172","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.172","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"b8326b86a291c8b72fc78d59b30f7b7e1b359145","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.172.tgz","fileCount":2777,"integrity":"sha512-lgdInna4cXbqcjbRT8irjZBU9wi9PEklMe07PV8Wp+dlPFhoEgkrU5KMQ/SwNIFV3NRXjKl1C8hFep7H2ycfSQ==","signatures":[{"sig":"MEYCIQD0WL6LtMgrrI4dU390kwso3kmpSpTvmqgsxmTAX0A4SwIhAMa4wfRHGaZcLsIGz3C5arabDRH2DNvV3slyPSaeqnso","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79524241},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"3954cef4f3ebedade21144831662f705dc14fb69","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.172_1777510867695_0.3511667569311232","host":"s3://npm-registry-packages-npm-production"}},"2026.3.173":{"name":"skykoi","version":"2026.3.173","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.173","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"e8bc43147a439c812cee2476c2e049d0e5dc3fb7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.173.tgz","fileCount":2781,"integrity":"sha512-v6JuRUk8oji1itAb5Ko1V3uZImMboWKnhqV+H2dXhp8UkJ0CeOZNfuFZGAP7O/TV6/1Qe4zZBZXnjQTKsg9TAw==","signatures":[{"sig":"MEYCIQCHzJrkg3RouFyu6bjiJu/+hepwQTeCJhVOJcpfjKEMLQIhAI6O9HFOuos6oB/1V69r6oXmRmca/tSE1/CX9lVEnhrS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79503899},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"3954cef4f3ebedade21144831662f705dc14fb69","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.173_1777510934930_0.4755367502538783","host":"s3://npm-registry-packages-npm-production"}},"2026.3.174":{"name":"skykoi","version":"2026.3.174","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.174","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"7538828d73f6b38c24618874579bf0aa82c5798a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.174.tgz","fileCount":2777,"integrity":"sha512-DzaNe+fEtbVemqdxXKZNJ0rc0eW+V+/UKcvXJSqpHwKgWjbKi5hTASeHR8Xrmm/hiaxU0yVEWiYprQ2KA7ZMSA==","signatures":[{"sig":"MEQCIGnf20IOz8Eej67akiQrwQdBlcr2iNrMZOJfnS9crd6hAiAwWV2LOUoQsSZzwxBBOlXlDngsg5Q+BSYf8I6OBYHovQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79524957},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"fecec30fecbfebf35c664f599276b30af45bb1f8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.174_1777530093643_0.7579141297085921","host":"s3://npm-registry-packages-npm-production"}},"2026.3.175":{"name":"skykoi","version":"2026.3.175","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.175","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"4daaa176aad38f640e4fc7f49e9a8ac1889b558e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.175.tgz","fileCount":2781,"integrity":"sha512-/sOEBee2Qk6Q+0I8d+4uhmJNKkpanDN32iKlqTnl/QBSXdPQ8mUzRPY+cpB1/xdVz07Os85wD2xpU5cMrGmrIQ==","signatures":[{"sig":"MEQCIE6NERs61CwzvOlrE3G01BBv47CAxNyiWKXXwvLeWr2/AiBhacDszZvbNAl2XszTRqFcMpCsrbF6WJtHghDDo9/ufQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79504643},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"fecec30fecbfebf35c664f599276b30af45bb1f8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.175_1777530159318_0.27634333995561255","host":"s3://npm-registry-packages-npm-production"}},"2026.3.176":{"name":"skykoi","version":"2026.3.176","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.176","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"de0c7b7310fad60bb0c1349b2f7f08dd820bd059","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.176.tgz","fileCount":2777,"integrity":"sha512-6lFxcnBr1YQ5jaLox3VPPDiDSQVyRL7hab1bEkC0ihdV8kQmTB4NMGAMH7UgydgGCB1os0yUT7X+8K29gpGLQw==","signatures":[{"sig":"MEQCIAotDlRb/78tNPGIQNDpdD8hiZFSxDF97LYYUY8aE5ukAiANc+Bg/RXLmXafC0uZWMez28ZNVjo3SOs2KKdMUzvTtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79525137},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ffdca2960a2e7077dc260f0a8fe223dcd925d496","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.176_1777532029140_0.31083070657950884","host":"s3://npm-registry-packages-npm-production"}},"2026.3.177":{"name":"skykoi","version":"2026.3.177","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.177","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"09bc931872fa0560d56b24165f035036e58ee762","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.177.tgz","fileCount":2781,"integrity":"sha512-PYAYZcoDSlrsxb5f9oZEJnVBwPfwkkkHHu4QO9dVA6HQ4/QOMAblGbMF0vPdTBuOZDLFq2n4XO6McP0Cl1XHYA==","signatures":[{"sig":"MEUCIQDSIzto8kL/pH/mrVeBUxUQvnVTSe2ZUY62B34ruY8whAIgPceiQlnk+tshWeOw3TYcZpnrDmOSe6UngS/noAMQkY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79504859},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ffdca2960a2e7077dc260f0a8fe223dcd925d496","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.177_1777532108417_0.1160470532489597","host":"s3://npm-registry-packages-npm-production"}},"2026.3.178":{"name":"skykoi","version":"2026.3.178","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.178","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"2950d9f3dcd12d3cc797155851bfcbb3db696f09","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.178.tgz","fileCount":2783,"integrity":"sha512-QxIGg7IRMcx6XlMwN0tL6i9VTG0623A7ThZDmabrjn/UquoNtnSEQ51M+uC+vFo9eURYZFFq/vT4oYpVOSDpFg==","signatures":[{"sig":"MEUCIQCsgOuIbrrfPD77uiyBzqQb+uU0TDnHpAGAI3jadQcGhAIgBUefEipyYZ+SzC0fKSUPnJM+qYMoOe+4duZiiE3BCv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79508380},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"fc55b134cc299ad934cb8766024a2b2f88b63ddb","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.178_1777597220064_0.3472166834966939","host":"s3://npm-registry-packages-npm-production"}},"2026.3.179":{"name":"skykoi","version":"2026.3.179","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.179","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"0bf905255a2f7078b0d0cf8ea59bfc248fd69680","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.179.tgz","fileCount":2783,"integrity":"sha512-j54W8Q4F1BbxJfbr9EdrekMIkNwEvTfrRrRsMJPBlQhgQ1gh/nMinn4UXL9n/jmFbWMKmsfVmUgGPUYls6EXMg==","signatures":[{"sig":"MEUCIQDcnRfblQWWPO3KkdEMCJt768kTD0w6KcMa2bDLNbyamwIgE3yeENuGkCfcfybtLr33MUwEpvr8etmYK6ZV5IViMPw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79508444},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"019e652db243489829e9ed50b64216f7cfef09b4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.179_1777597304264_0.30589020740365935","host":"s3://npm-registry-packages-npm-production"}},"2026.3.180":{"name":"skykoi","version":"2026.3.180","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.180","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"1bdecb3370fbd9094206d2ec2a4f844cb67f0497","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.180.tgz","fileCount":2783,"integrity":"sha512-7VWQTOrNH8Tg5CADoDSX7RYwfK5U8Q1kgVDXWGl9g9ipVzIANn6klyShpo4qrrvv+TmW34g5RYpioprNlScmPw==","signatures":[{"sig":"MEQCIFJrx/pVr739yRDHX9+6AFj6irkM3G49qfd/nVHpL+mMAiAiD8imOYKcrupa+54/I6K+lqnVrSua2TBFxa7U3MJgjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79508440},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4c9afe451d0e507663f66d1129a8027491497878","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.180_1777597377464_0.9313625622418367","host":"s3://npm-registry-packages-npm-production"}},"2026.3.182":{"name":"skykoi","version":"2026.3.182","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.182","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"7b80b0217508908c95b9a92732a7686bd5ed36c3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.182.tgz","fileCount":2783,"integrity":"sha512-U0l1nykw2w8bQNPQoRNY8nfjMr3GjUeZr29eQHaT0DxHbJuVBrHBdfPcaNGc8pZmRsJeiERWc4IQK6/W4XaLvA==","signatures":[{"sig":"MEQCIGX39kBZL5yckd4hvvwkSbYZgBrOyaIoPvV1T1Sc2Wn9AiBWfSQTbirQuLLRJQhWW2nMpfV40sknN4wC4P4cbpSPYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79508374},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f70bca953dd28fea3af7c0f8bb60ba8415311884","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.182_1777598635587_0.6719090513840744","host":"s3://npm-registry-packages-npm-production"}},"2026.3.184":{"name":"skykoi","version":"2026.3.184","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.184","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"ae2b626903c9c757d57216ee5a2c1a8f9feffd20","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.184.tgz","fileCount":2783,"integrity":"sha512-n6snNDY/r5busp/kIeziY78x7Liq3GhfElqZDs0D8yfkjg1uvpOnywst18tEC7DTdw/FiL5JiUHlrxd1Fx+H3Q==","signatures":[{"sig":"MEUCIQCK7zpTxlebMHNtQ9uLRDXwhzsOsAjpsZtAjzK8sxehcwIgHO/IKo3mg34pTFTuYbeaTSyaIPEBLRnMv2PAeT5SQCY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79508440},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"59778bccd2ef115451f42ca3f3c0e1594939db81","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.184_1777599826594_0.6257252254109915","host":"s3://npm-registry-packages-npm-production"}},"2026.3.201":{"name":"skykoi","version":"2026.3.201","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.201","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"8c1a643c7bbd47398083def79a8cffa933d2c0ca","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.201.tgz","fileCount":2783,"integrity":"sha512-CMJaRT03NELS0hUekT4NM3E4t6HBL8sX4i4CBnQTOeynFKXaAZ4cz+aPBHGR5tLZ3idWc+SljXy/i4MzQYPxXQ==","signatures":[{"sig":"MEYCIQCb2pYK3y6nbHM/iN1TfUBKPIdQYrFFxrKZH9EGxD20zwIhANskePAMhOQCvExIWzy9bYTL9LXELkHW+TlkVbaJw1xf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79508338},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e72ad948ad5c744e5e0e68dcf67959368c8521fd","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.201_1777600798841_0.11788948206368266","host":"s3://npm-registry-packages-npm-production"}},"2026.3.221":{"name":"skykoi","version":"2026.3.221","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.221","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"1449f185b104f90a363313265bf47ed68c072738","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.221.tgz","fileCount":2783,"integrity":"sha512-mOEVm2of7+mQPLjJK7ssWfAmyAfPq4T4Odzu4/ji/eaT0DA61NgOidEeNqWL44Diu7A8YtIY1EdIxZnxl3Qo/w==","signatures":[{"sig":"MEYCIQCucRRik0kNiPIaUdyW6qCK9X7UV2ga5hIgOQEEA2Y7/QIhAK2iVREWr/Jb28gG9SsPrxe1disZr4kywdao59123Xdm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79508374},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e5b00dbbca755488b5c28a5f31b883df5be1488c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.221_1777601467470_0.21534895975910784","host":"s3://npm-registry-packages-npm-production"}},"2026.3.220":{"name":"skykoi","version":"2026.3.220","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.220","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"469c230bc7b19233e21534649e42639bdcd72492","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.220.tgz","fileCount":2779,"integrity":"sha512-DT539BSMJmIZImPQdPzdLP1X3ErU+TsKqnOCzKn4PBfaj4L14xe7DHuNC+T97tV4UsIL3Zes6pP3XQ07TDNgxQ==","signatures":[{"sig":"MEYCIQCXteIi2TkrriyEF96OWx3agiakT9ES7JL+8zG3oDLKHwIhAO7BHa5ODo0ne1jJLGkgGrGvDA5qJ4jEFI7N7TlyTXXR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79528714},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e5b00dbbca755488b5c28a5f31b883df5be1488c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.220_1777601977566_0.19796739746213077","host":"s3://npm-registry-packages-npm-production"}},"2026.3.225":{"name":"skykoi","version":"2026.3.225","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.225","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"0d94c3defb1133dfc20e17ed7f1692bfcc99aa2d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.225.tgz","fileCount":2780,"integrity":"sha512-lTpm5GA9CPnZUobz63NZ/0PEtcLJiKI6Youg0zx/yZkCl1tcatN75/CASenC4mWOjiSu5QVOVxRZaKbG6/Mu4w==","signatures":[{"sig":"MEUCIAFdqu1a2ErGeTNUSZC8EbMsErH3rYlzqEN9FGFiW7c3AiEAuZb+bfSSVOuy6NSQs7FuywKixrLrVlVwZF/4QynFaHM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79533570},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"0c2e6a19265bae1061b26d7403f780ccdeced23c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.225_1777611433938_0.49246960518126714","host":"s3://npm-registry-packages-npm-production"}},"2026.3.226":{"name":"skykoi","version":"2026.3.226","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.226","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"16a1f5a1d3b3ae37f219889a9ebd3fc906313a27","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.226.tgz","fileCount":2784,"integrity":"sha512-9S5wJm3OyqaVRcTggFINYZ5mp40HlTbM4uNT8vQ/Bqy0AAvtYPQfYUUDb1ikmmpE4bn/zwEX9WfOvPUztzqh4Q==","signatures":[{"sig":"MEQCID6ZUcwc2zmdJT94ng7epRcX/0XgklOjDMkfhLmgKtBrAiADSBck4I/hWCqNzMwSPFZ55XpCV/e48aDYGfmbxnn69A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79513292},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"0c2e6a19265bae1061b26d7403f780ccdeced23c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.226_1777611497829_0.9279503227927768","host":"s3://npm-registry-packages-npm-production"}},"2026.3.231":{"name":"skykoi","version":"2026.3.231","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.231","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"013e9a3acede4a22cacd757d80f5da1d77e2477a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.231.tgz","fileCount":2780,"integrity":"sha512-UbIGDzcPCkT2KTf5DFLvf1m3WPy53/+nLi35DZskgwZTdL+VhrIpHEfd1XfIjmjnYwdtf13aV9oV0WAD1MwATA==","signatures":[{"sig":"MEUCIQDtEISFowq8SVbPZ56+EGTG/amr6lqwKxplhSaBNoCVBwIgHkEAini0ps2D7XSUHeR8gJmK6XjIQagbj4IXCLnq6z8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79534622},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"052bff8b94362f454870ac37320b131a4fea32b2","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.231_1777614094018_0.9796188566277686","host":"s3://npm-registry-packages-npm-production"}},"2026.3.232":{"name":"skykoi","version":"2026.3.232","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.232","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"b52fe0285c070fcf2113ababd58c7b8d0af89658","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.232.tgz","fileCount":2784,"integrity":"sha512-G6TG3REn16Jse5NIVtoAlxTZ7ogEZKY7jNFUC+3+98AAVGksf87EOI/YMaYWaG+C2u/+rbU4Jt6KWiymDGXgTQ==","signatures":[{"sig":"MEQCIGLk+E0G8hdoLAQ2e16fJOdQ7+youXmvfSGVCfAgFDJFAiBGabi70kW4lfpiEM0P/gV6NrUiS7yCAeaxBCOAaWL2lQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79514344},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"052bff8b94362f454870ac37320b131a4fea32b2","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.232_1777614165502_0.6316185665196201","host":"s3://npm-registry-packages-npm-production"}},"2026.3.237":{"name":"skykoi","version":"2026.3.237","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.237","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"0b9c699dee5ecd76f8c63f14cec0f5da6553a3eb","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.237.tgz","fileCount":2780,"integrity":"sha512-8A9oH9/LXJEkjyG3d3KKN+S+YhJ3gZ6sAqVdIAeyIc6v0m3p1ENtLI1KOJaNdpJ1dYbc9pr+oPwdmZtYNwUhzw==","signatures":[{"sig":"MEQCIH8zAK4XMCtUHSto1wAAkEgoOmG/JOCoZksc7L8aA6hMAiAxSy1tW94NxAAcoko8w5j9meOCwntukVPyIRyERTA5MQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79534724},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f687262131d6be82562b3ad8d55ee0355011ca49","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.237_1777614708244_0.6078710138196382","host":"s3://npm-registry-packages-npm-production"}},"2026.3.238":{"name":"skykoi","version":"2026.3.238","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.238","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"2ae17d74fe28c63e8ed10a4cc81ce166d636fd19","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.238.tgz","fileCount":2784,"integrity":"sha512-36k9Cd5Y5jk17mS5DmqXoNIBspYRDVA2qRoOCQtnPG/f2jeUAeuEzrsNx0S6/7eeNzbmagYt7hCHiaNEb4EzkA==","signatures":[{"sig":"MEUCIQDCD8qiK2QU07x2m4ILRo/3hwRv4cEmjLy0JCpF8DQjlwIgLNDhB3sUYkGld8wUa6LH4nz3MFc9KN7epevUoYpVAXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79514434},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f687262131d6be82562b3ad8d55ee0355011ca49","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.238_1777614778591_0.34301294011857886","host":"s3://npm-registry-packages-npm-production"}},"2026.3.239":{"name":"skykoi","version":"2026.3.239","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.239","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"10c067047cc02369c43a408597cd777bfaafed4a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.239.tgz","fileCount":2780,"integrity":"sha512-Ya+RnRMFeQQmoG2Nm1R4kpjrv0iR/eUHOV0Uj2m+KLbAkVTcYCSxLZXDX/ParcnEkQRMEU0+vZx2MGql/r1TvA==","signatures":[{"sig":"MEYCIQCZa80Nv0OK2mZ5PNrRiwxb/VW8j51GyoctZLWyW5iE3gIhAOvTD0ZFW5blSKMnvPdJCrybKt8Mnjin7pyP+GKOq+H4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79534545},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"cf2f10525077d61f9060ff18ea1fb43c6a6437d6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.239_1777763551360_0.35654253775240696","host":"s3://npm-registry-packages-npm-production"}},"2026.3.240":{"name":"skykoi","version":"2026.3.240","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.240","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"d2c5012a50420708007035a54431d9e749dd0f11","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.240.tgz","fileCount":2780,"integrity":"sha512-rzg1PVr4mBHZgLfJkBOkBsPmWyOmONNCW8vUgPk6UxsPW+/wU3sk8dkCnKYljhHi5xouPO3jGIFqPrC1Sc8Icw==","signatures":[{"sig":"MEQCIA+4CZ+G63Pido9TCWnENxG32RFgTF/YoJbrpZpJJgLGAiAuRI2J2mIR3XKnlmr4HMcXP1tck1ZhzkmxV7WRLFYNJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79535707},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"cf2f10525077d61f9060ff18ea1fb43c6a6437d6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.240_1777765108232_0.30453324798027626","host":"s3://npm-registry-packages-npm-production"}},"2026.3.241":{"name":"skykoi","version":"2026.3.241","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.241","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"d94c16b5078666b1dda6dc1ca5910928f2e47496","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.241.tgz","fileCount":2784,"integrity":"sha512-+VdIQig5M/kmnQSV23xwKePYFW+JJ7UEPQe5PJ0iNeRxcrrn7JyS/Uze2/1d0TbVYHil+xmNYqbZnTrEdzAZjA==","signatures":[{"sig":"MEYCIQCTLT5k1ESqVukyKFYEh5RT9q95qFEXCO8UR9TYOa2hfwIhAMg1NA0lJovW26oLKl5MiZCzevTkSxACA65pu0OyI4F8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79515395},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"afff8f84e7fead302562f9c2876e9a6f27b38f91","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.241_1777765214963_0.22341649693390253","host":"s3://npm-registry-packages-npm-production"}},"2026.3.242":{"name":"skykoi","version":"2026.3.242","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.242","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"45c84ccb9a6b7efb290caed6b42a9db31603f749","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.242.tgz","fileCount":2780,"integrity":"sha512-k3YaCB6EdXKbr0lmgUm9WRM14vwVhsz/axK3wscGekTfW0tDcTSuOQATqcaiIe9ys0EbZfKemdM0EwTVAcQIDA==","signatures":[{"sig":"MEUCIQC6QCDei6CSNZu1SSR26zkP8ZJwilSP09193s59VU07MwIgLOe993muqxlrskazOqEr3NEHhppTKnRANz80FQpJmec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79535978},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"afff8f84e7fead302562f9c2876e9a6f27b38f91","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.242_1777769950115_0.3443320309767439","host":"s3://npm-registry-packages-npm-production"}},"2026.3.243":{"name":"skykoi","version":"2026.3.243","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.243","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"fbf9f2852efe5744f58997b5d721c1f77876bea4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.243.tgz","fileCount":2780,"integrity":"sha512-fl5UK+VC59f5GMyM6bQggissTppm90x1+9DDaBxEzHut32ZVS7b9RN8yl5eTwR1oWnndn0kzuxgq6iELyUSmig==","signatures":[{"sig":"MEQCIA5FW1HMmjN5WswcRKHVtfTfBlkDu5rrNAVpY+bZNtwnAiAqIiwneybRNwO2g7V7wsFOt3RhTclUfntjKfcAn/P5Vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79539629},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"558eb839711c68720b76ccf8c301f3dadc16b044","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.243_1777773484791_0.15434055178284534","host":"s3://npm-registry-packages-npm-production"}},"2026.3.244":{"name":"skykoi","version":"2026.3.244","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.244","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"3dfe9bfc69034d134c8052c8dc479c8d51036db9","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.244.tgz","fileCount":2784,"integrity":"sha512-aAuNXkR4U+E9m7dNz3WSsiL4KAfWprq9B1PAgTK/f5U1rih3Kf3MSxUR15GZeopgLhNySk6oumkXxdVtIBEzWw==","signatures":[{"sig":"MEYCIQCM2pHLvTrqEgt3ZNhIsL8epODfWQwA2wvyFebNyjQdMQIhAPluSbPvbzBWWc2sYEnWvm+B1RSVB63EgHHjY7NLqQyU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79519267},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f2fde881963f128af6cd9c28a21c87fd7f08f1bf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.244_1777773684100_0.02363023619183835","host":"s3://npm-registry-packages-npm-production"}},"2026.3.245":{"name":"skykoi","version":"2026.3.245","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.245","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"f3b30eeb0ded076a5775fc39be609b7238639081","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.245.tgz","fileCount":2780,"integrity":"sha512-+/xmhqfjJsiTExcaF7K8s8bcW+sPcPqW+FMuy5zdZ7k4qiTN+3xPVvj4GX88HvDfLhW16cudUdcEAKlgGB6Vrw==","signatures":[{"sig":"MEUCIBx0DEbBnYbvt83TjDOLl5pojByp3VGBLtfi7OliWER5AiEAqnfMMLxnaZYzrtf+b/mfXKvuMeBRiGjqkCdwtweM2HI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79540385},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f2fde881963f128af6cd9c28a21c87fd7f08f1bf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.245_1777778541314_0.27137443632473857","host":"s3://npm-registry-packages-npm-production"}},"2026.3.246":{"name":"skykoi","version":"2026.3.246","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.246","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"27347cebb0b25446c43e440a5104458e331358dc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.246.tgz","fileCount":2784,"integrity":"sha512-c3mOu7sbwxX4gcvRISAvwkoRpL7uq+GpiR8uPztC9ttWdRVcDIq5nDcYg6IyeRVlO4sQ02uBaboZJ3WsDRGxWg==","signatures":[{"sig":"MEUCIHszZvwRsGONtBc2cjArp3KRqJdM0/6B8Il4RZ74Uyn2AiEA0Vc1lTh6Px+oZyRpBKgynh8LlMJ/rk3wVEzbPM5Pr2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79520053},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"74d0b67ad34375844fcc81a43f1356e482e27539","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.246_1777778768150_0.0952879438619414","host":"s3://npm-registry-packages-npm-production"}},"2026.3.247":{"name":"skykoi","version":"2026.3.247","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.247","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"aab0591df06d73eda5fd99d7b4d0880628dca394","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.247.tgz","fileCount":2780,"integrity":"sha512-5LeOOSO/8YEtBq6pXCFq+dE9ygwhHFv/SNf9b3TfGqbEZjpBoJDIxNtyslEfIKdX2maxHFCCHYNaxsPutemkkQ==","signatures":[{"sig":"MEUCIB0VqFKuSXUHzmjl0AEU3f0uPYKZoy1QE0FOd9GzKxdAAiEAuDmDm6z8+WtmqX5qN8d/KwSXzs4zlr3VIM+V2HEt+ho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79540603},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"74d0b67ad34375844fcc81a43f1356e482e27539","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.247_1777778901169_0.9351814598569941","host":"s3://npm-registry-packages-npm-production"}},"2026.3.248":{"name":"skykoi","version":"2026.3.248","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.248","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"cf71eb0253938e51565391dff7dacdcf9969beab","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.248.tgz","fileCount":2784,"integrity":"sha512-98/LBXIdlFqg5dVElfLV+JTbNx8j23ze1aX8gvSdBa7wSc6eSLCfyQN7VSAigyiiLsPvIbRVY/1B/wELmIIDGg==","signatures":[{"sig":"MEYCIQC3o4WLEkDJdHcKTNQZmnmVejJyuMF80zzDmeGkf5yJNwIhAI3T1Ptq9m3yAQEuzd4qCHuRJAEdSmxkQgJzJac4/KiG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79520227},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e6ea28af88691c3dfc2050ae7917342070758d26","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.248_1777779207156_0.6742736977704054","host":"s3://npm-registry-packages-npm-production"}},"2026.3.249":{"name":"skykoi","version":"2026.3.249","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.249","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"3ca1197e3eeaec74d8690eb71ef4761a74f2239d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.249.tgz","fileCount":2780,"integrity":"sha512-GW0Zh4nKnk2AwHZgPeFwgX0mAApVeC3LX3qoBEh/GDW8H6oRq3e2676wT6W3syxP0mhcV9dpCSX+5YrsSTRqQg==","signatures":[{"sig":"MEUCIQCfWf39R1BaJl3TxNDjm0PJdGXZOBxCwbpz0hAF3k88lwIgUSYja3OHmm9uyRNidUsDF5w/9VjEX/ekh+dQPeh52Zc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79540693},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e6ea28af88691c3dfc2050ae7917342070758d26","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.249_1777876852046_0.04627471345188239","host":"s3://npm-registry-packages-npm-production"}},"2026.3.251":{"name":"skykoi","version":"2026.3.251","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.251","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"b48802f8344b7c7688ff42ea88e7508ba0b10f25","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.251.tgz","fileCount":2788,"integrity":"sha512-MLySHB7ZlFZljltsWPTHq8NHlaVPWcvYODSSC+ZC0nzmxiycKDVyQMhPsGzQGi1lyt7eLpP2N3ci1PJmU15aiA==","signatures":[{"sig":"MEMCHx6xOdIIYjj+85qsmSpva5yqk7Z92T/U61bCt1Pk0nkCIBiUNmcGsaPqR2cTiroIPXYusqXeAIOdQPchhK9kiO/G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79538703},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"6ca9ff09dcf72e39e5b47832da341381a61dbe70","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.251_1777880064501_0.5064376836449653","host":"s3://npm-registry-packages-npm-production"}},"2026.3.252":{"name":"skykoi","version":"2026.3.252","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.252","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"da6915a4df85f8a9ecaebce90652cd16d7079c45","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.252.tgz","fileCount":2784,"integrity":"sha512-xAHXH0E77PtjBRZ+3ndHFXkSVvmZMBckXQXI56/ZlseK70k81Kk2e2jATDLHcTwotpoI5OoHWXn1DN7zMPyIzw==","signatures":[{"sig":"MEYCIQCQI0fz1j8V37bCvWi2bV49WcnoJw6S124RJYEmagG2sAIhALPsb8HDvWtYKsJZvfq2Zo5r1Nq0NaX35bjOxjoHCL6w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79559466},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"8a85030546681c4632776240bb2d72812c9130ea","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.252_1778096702645_0.0077628053161555854","host":"s3://npm-registry-packages-npm-production"}},"2026.3.253":{"name":"skykoi","version":"2026.3.253","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.253","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"c39830d532f2fe5ebf045b0d3a78c4494d1eeb62","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.253.tgz","fileCount":2788,"integrity":"sha512-2A+AN34IeQyedM+cTc0upCSNVTs1DNZpyZkOPK41Dht+lZXEIZp0Fp7rFH5dj5WyqKw5pb/kwSCWz9cJY9ikjA==","signatures":[{"sig":"MEUCIQCIG9ntENY993XqmAUascX88XZxVvEAV6re0csRVEQOUAIgZaXyYP5cQJQ3dKzs3HOiQSxa9wnjtJRn4AZPm20x5qc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79539064},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"8a85030546681c4632776240bb2d72812c9130ea","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.253_1778096748404_0.24328695167290282","host":"s3://npm-registry-packages-npm-production"}},"2026.3.254":{"name":"skykoi","version":"2026.3.254","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.254","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"53792d5ab85ad66f2aa0f6ff488d8bbf8c973cb8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.254.tgz","fileCount":2784,"integrity":"sha512-qAmu/GOw6c+/FbUsfVdKNHmE6RKF+Als449nAXXhbZEMCzfqjD0q1Ok7JbNi3SlD12MnsyIYjzLInC23gBSmdg==","signatures":[{"sig":"MEQCIGMlmn2m65ps+KtKj1GIOI0WUJKFtDb10Yymvkf8nYNRAiABlrJpJmYHxHjtjSf/RNlWddiejHnJCULHiwzjE50RrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79559922},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"0ba342ba540e7c9604e59d0f1e9dc4d4cc202457","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.254_1778221330391_0.08790091251457977","host":"s3://npm-registry-packages-npm-production"}},"2026.3.255":{"name":"skykoi","version":"2026.3.255","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.255","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"31df74e5962a4410cb5576fc3d7638f9a1a1cba3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.255.tgz","fileCount":2788,"integrity":"sha512-qp9dNKkGABnNsgxhuBychX7H3E4z6DsR6iTi3Wfw6Gs1g7bQarW8c/quRpTimutr5BDqv1zdxdZBodZ7N/KIKA==","signatures":[{"sig":"MEQCIDPPvjYaLZQYqEJBlcqcUu9yJTotq6N5puwhqtNns1qBAiAE55a4aKtNQniWZMEuNRb3FreXB27Hhq2voANGSZDZ6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79539536},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"0ba342ba540e7c9604e59d0f1e9dc4d4cc202457","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.255_1778221377468_0.9349663571073294","host":"s3://npm-registry-packages-npm-production"}},"2026.3.256":{"name":"skykoi","version":"2026.3.256","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.256","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"9fd8c7aa1dbd4f69c78548e63543f27a03deb243","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.256.tgz","fileCount":2788,"integrity":"sha512-fV2QMC5XdwaQaS4mLyLv4rGc8UpZTYQI3gAnPjwJm96TfXedCkdHxmyeMergdjpMOmh21qp+9i8U09ContyoxA==","signatures":[{"sig":"MEUCIQDxrjXUd5teTBy7Ezcb/wurR8skY9Ozamnkm+Mq9JSCdQIgIcrpeytNbI6qJ+ev3LfeiUmrVlSuAsUlqt59D8jpuog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79539126},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d77ed9dceabbaad97d62fcbcb8ba37d836ea5925","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.256_1778224746886_0.8623231061048513","host":"s3://npm-registry-packages-npm-production"}},"2026.3.257":{"name":"skykoi","version":"2026.3.257","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.257","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"1c6c2db297ab52452ad58c7c8cab24c483ba501f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.257.tgz","fileCount":2789,"integrity":"sha512-UPYsYw7hqPFvRipE/oa4mC60aEDQRHD3pgelHOVGEUV8hWxiSwlGgPRdZ4cuF1XibnsvZrEVdIaRJi/qtMqj1A==","signatures":[{"sig":"MEYCIQCnrWXamxTbejuRBqUNu9T0EDIvF7gJ9gtGhFTyziduBwIhANNVGzI48IdBsVXmETqfbFN6Rg6Ogg52IUiDi1y6WndJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79546814},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"80c4dad075bde16cd85d2cb940b536dd262e7baf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.257_1778233562178_0.02391087793335611","host":"s3://npm-registry-packages-npm-production"}},"2026.3.258":{"name":"skykoi","version":"2026.3.258","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.258","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"5670e9ec13a82a3fb44a41f5a499c6854ecd5280","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.258.tgz","fileCount":2789,"integrity":"sha512-FV+fYztZftoTUlheIPcmfghfdv46wjI6JB2+1m5Fn1ODGWXe++FekLapPmaVf4lbydCbVkzsD5XAxjlQ8P2ZIg==","signatures":[{"sig":"MEUCID9kzfoPr7kQHZKmTwSuDcgW9io603gbF6PJTxBdm9TfAiEArHnKkATiWpPsjcih/WmeL5oThkYYBET3dAn1dzVW3fk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79546896},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"52f9396f7ea3f62aad049e436269498b12210c96","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.258_1778233635485_0.8985251515302162","host":"s3://npm-registry-packages-npm-production"}},"2026.3.259":{"name":"skykoi","version":"2026.3.259","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.259","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"dd0d9b485ab1b61d53fa6be5d300093fd7afdda0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.259.tgz","fileCount":2789,"integrity":"sha512-d1r9xBHTrfYyBQW2cxW6wFVREB/OE6EXZhJsovh7inBcahX18NnLENtR9AL4tagnAL+uyJev16qQs4YeCyByfg==","signatures":[{"sig":"MEYCIQD0oPDPNQQx5CDL9IOrtZk1cXzMwcYOyTVtWfnicxUsaQIhAIw+4ugXFzta24LygJ0LEQBwOQm+W3VM81kL5/rIOUh2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79548836},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"2d730846d205d73b2ab24f7161be056b0629d2a7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.259_1778234311671_0.24344450118062766","host":"s3://npm-registry-packages-npm-production"}},"2026.3.261":{"name":"skykoi","version":"2026.3.261","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.261","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"ff035a1936463edbb2c2fe02026ce5426d58d44f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.261.tgz","fileCount":2789,"integrity":"sha512-/VTUmFajJnznwGuMYK0bX+Hld5p9n+ZyMTQ7921e25a540Td34q0C9oCbQqluQayOWHoJWS3ZFYFZ8wRai5VMg==","signatures":[{"sig":"MEUCIQCeBWpLQSpHdQprMlhsFy2DmdotVpHtszLRiVw0oJXMnAIgMWipUTdJaoVEH7u2OPK3fBzd2VFSuCjQcPU9WfDxt/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79549065},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"636009622ce53cc897086d95b821976bb13fea3a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.261_1778240167433_0.9366057776880841","host":"s3://npm-registry-packages-npm-production"}},"2026.3.262":{"name":"skykoi","version":"2026.3.262","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.262","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"7d42d4c2ba39cda6326cb94ac7d65167d99878b6","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.262.tgz","fileCount":2789,"integrity":"sha512-EJ43YeGqyJCz2RE59p55EkPdMvU4Jz3p0qrn/EpyvrLHE0DPlVDVrZHFiVQ+zqazvgIUWJQT4r8LwGpuY6d1oA==","signatures":[{"sig":"MEUCIGxNyCmgL6tujSaBvOXs/rxe1/o1XT7S6Us9cE2l02fqAiEA49NpF/IJmMeQPSsQwmxxf2F6H2RZccQDiaMYlAdc0y0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79549548},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"9bf1341b195bb66ceca479130f8283cb37ba1432","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.262_1778240516569_0.9813855407951091","host":"s3://npm-registry-packages-npm-production"}},"2026.3.264":{"name":"skykoi","version":"2026.3.264","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.264","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"2365baf32b2604f41add426b44854d6eee76e914","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.264.tgz","fileCount":2789,"integrity":"sha512-EQObzBdV1PE59K1tSJX7p0PjpBxq7Cf+JMSK/8AMbeIOUoApDnOCWFmCwYEueHhZIFc8ahxniP5q7HpsUs2qsA==","signatures":[{"sig":"MEUCIBNWP0NnZXNQnGPH0qbMU7PuBCKmFNo7KcyVZzSpnhDbAiEA0LD9ZoTu1x9dm/qHU+y4rAKD0Q8g6uLPCKJpWP0D3Zs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79549582},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d306b256010a941d8bd88d8c911762e75528088a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.264_1778244948396_0.13946216975825054","host":"s3://npm-registry-packages-npm-production"}},"2026.3.265":{"name":"skykoi","version":"2026.3.265","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.265","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"6976974bf985970df24c717b474c9c08f403ee60","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.265.tgz","fileCount":2799,"integrity":"sha512-4EiCgK/AJfFlIySC9sE+49weU5vCW1wGPuMPAJipxz2FjFmxU40wfP+wUEH06vxVzZ7eqV2iMpwZKKK1mDHkYw==","signatures":[{"sig":"MEUCIG0rgONvEyaowVvIhYrgPpeMbLOcZVq+LxBNrG7w2UZVAiEA75/o85iSfgfTQslI0BH94G86PgYpOe81F6S5O6AevMo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79574011},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"7115b0a7154396dff36aec551b822161ffea7aca","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.265_1778516960503_0.3316106563237349","host":"s3://npm-registry-packages-npm-production"}},"2026.3.266":{"name":"skykoi","version":"2026.3.266","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.266","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"e0bf18b942890540cfacb97c613ce99380a9606d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.266.tgz","fileCount":2799,"integrity":"sha512-PuNXNzOIDuGAI3dZOjqjf37+jn0syjkjNEqgkaMqeoUvzl8bwevhIKhBbQut/PKSkT1HmhQUzCui2QuXjPA15g==","signatures":[{"sig":"MEUCIQC+24k975M0du/3BwtGrmd4aE5s4tyz7DZgJSqE1Q1VRAIgSIO9nX6wuHXmXfR6YlcVXe9yJkMqKStoyg/FaIUYR9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79574630},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"21d62339053369e5ba1fbc1f0befe63c0d844807","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.266_1778645934750_0.3694496847178297","host":"s3://npm-registry-packages-npm-production"}},"2026.3.267":{"name":"skykoi","version":"2026.3.267","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.267","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"e48616fb55be6348b0ff4ce168f32e7e9b447df1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.267.tgz","fileCount":2799,"integrity":"sha512-YakyLlq46f+yKqNajkV7+I+LOi4/ZiAJEdvpoe9yE+Ur0UYnoPAHk5VGC6aYf130OWJmkTd1AxfLhnExXQD7TA==","signatures":[{"sig":"MEUCIQC5rmz6diDN5mS0j9Z8lQa3oBzTzj897o/SOZzIb9lOnQIgAP+Bu3SbDkSVOmqOyQEpw++DFSNOHxBMPghblQlEu2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79574794},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f41652b259948438337830f1ddb2074dc42d4559","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.267_1778646402753_0.35425063597012274","host":"s3://npm-registry-packages-npm-production"}},"2026.3.268":{"name":"skykoi","version":"2026.3.268","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.268","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"skykoi":"skykoi.mjs"},"dist":{"shasum":"a8c581eed2408d2b3708cbe8a017e4c104bdd5ac","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.268.tgz","fileCount":2800,"integrity":"sha512-mBJy7X8y3UTRK6fMX4HNgvh+TWZthj7g7PQhzJZowpHvnUByCu0wVxSxBr/bb448VMHhmpQFBs5eLZ7Bzdn8Kg==","signatures":[{"sig":"MEYCIQCP13hKl+duS6MZj9e2onHpnRkYzOLTAhnTDV9BzceetwIhAOMTr1waCvR77TceE5yXEVYUw/NDi0omUtIgi8mLQuXZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79593297},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"b1f4ea9545116006bce16809431a01b28794ef4d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.268_1778700885236_0.447038765971836","host":"s3://npm-registry-packages-npm-production"}},"2026.3.269":{"name":"skykoi","version":"2026.3.269","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.269","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"bfbee07cff06e8722b438e4360f0d5363fd83530","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.269.tgz","fileCount":2830,"integrity":"sha512-39Q0ceJRITP2xXjnwOsuKjdGoJ+rHrc0cAnn+nYwWiZ5ZkNsPfgm6DjigraH/DGGiGVc7ZjioNNYS2R2Dcq20Q==","signatures":[{"sig":"MEUCIHV0oVAgOhrHNoYbd32lEEGhhOkjSrrei6aL11tUBe0yAiEA49BpmqPS3SnNBJG5jg7IhVxrjn8T2eK0YC0kJdcBo1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79626553},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"05146f087e7851ab9be34ab8368dd70d23e70f9a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.269_1778707624602_0.10833181198541597","host":"s3://npm-registry-packages-npm-production"}},"2026.3.270":{"name":"skykoi","version":"2026.3.270","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.270","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e9e9e5b69b76657275185569d3cdc1bc11855604","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.270.tgz","fileCount":2830,"integrity":"sha512-2Md6eAfRWDYLjmet4lOSRZavk0tt9SR/F2SshaveXFjJkeLZZgNS/Z3ZDRh+iLFCwZmHhDZpy46eWLE5czpl6Q==","signatures":[{"sig":"MEQCIAVMmSO0S8vjGwd0uq6mb7J8jTgDbfoJwGjU3DaHmrB4AiAe3S1na7LCmMDUIlcybQWMJRwi0H8jArggC1TS9n5GyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79635085},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","hono":"4.11.8","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.11.8"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4ecb6c14e88f041a87fb7be2e0711035d43f02c0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.7","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","hono":"4.11.8","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260130162700","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.270_1778709351734_0.9368806281456448","host":"s3://npm-registry-packages-npm-production"}},"2026.3.271":{"name":"skykoi","version":"2026.3.271","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.271","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"354ff5b438e2da48b1130599dab4b7b8c8751b00","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.271.tgz","fileCount":2826,"integrity":"sha512-E63eJA3O432EpnrllnJ30c8HwVhlooLJdcWVM29OUvFtsUBTyfOQ9NY5XpH/b6WHzEvc0rK8d9Fq64xTiKLCzg==","signatures":[{"sig":"MEUCIGC5X7aGaGRiAquyTl983EANBwIp/mnVOA9QqDSGj+T/AiEAjtGIWhXggJ/bkPQHihj24TKJIQjWHi8KOgbJQKKHujM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79719826},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"705c19bcd636dcdad4bf22cbbd1dea6dd40b6d51","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.271_1778786477508_0.7783463104340205","host":"s3://npm-registry-packages-npm-production"}},"2026.3.272":{"name":"skykoi","version":"2026.3.272","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.272","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"abc9b19c36b5f7360fe44a312a20f44b1da0d145","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.272.tgz","fileCount":2826,"integrity":"sha512-jOOAtK0uu05qF81RXYXR1NMF+hdgE89NlJGFHiWTL9Ix34fNyoFzQBCg0WrfhupnZlEv3gDPK8RC93Od4SzTLA==","signatures":[{"sig":"MEYCIQD+FPhP1MBIl5JLELAwzXKq4KaGPNjIXGpyOynLoBSKrgIhAMFwTP0Opn1/0XXM4u/MS5SbORWCSXnV5A58WzkCIyZ1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79721517},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d1a9d3b0b1f770eea950d711055533997062755c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.272_1778794179931_0.713301544588888","host":"s3://npm-registry-packages-npm-production"}},"2026.3.273":{"name":"skykoi","version":"2026.3.273","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.273","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3efd037d9368c864bdbc9e70c36a2ffb63c4cd13","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.273.tgz","fileCount":2826,"integrity":"sha512-Iw31MeLD9/I2tF43YxvnTZzlpmB8nmxyEQ5ROayHabBf+mnb5eQss6zlAsUHFqJeZucyedQGRJSbzSEwkTkPLg==","signatures":[{"sig":"MEUCIAEQfpWLQU2fKVu9TYbqYWSF8PrBULJ1SVh1RKOFNDezAiEA17Cv34fbgV2NreKCGnFrG0nXKd1FVOGb5QgMPtpuE2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79721539},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4fdf91e3cc4943c869c92870133a3a1e74bd6e3b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.273_1778794354950_0.5968961127707528","host":"s3://npm-registry-packages-npm-production"}},"2026.3.274":{"name":"skykoi","version":"2026.3.274","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.274","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3049f744f15fc76e0c60af65dce41cef1fff4694","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.274.tgz","fileCount":2826,"integrity":"sha512-m8U0Cu31JsbDtQjH5ZD0OjOUBrVfMVqbvHeLe28N0qycb05Wzc/+lugfXB7954Ozge/GGzmeClF1NQ+E/VVr5w==","signatures":[{"sig":"MEYCIQDBTBQV3TaTUa3owfVKPzprTVRA8GrtGN+XJqfEuG/7cgIhAPvIqDVehAbBEItnj4K+Yg1KXG1M+EbxAk725fVm97/1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79721515},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"7c0a15e9fe34d9d214cc6a8c3ae52696e00a6583","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.274_1778794554780_0.867548525861932","host":"s3://npm-registry-packages-npm-production"}},"2026.3.275":{"name":"skykoi","version":"2026.3.275","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.275","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"364d238f3e8f04950762672fddc3e098b54c8c45","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.275.tgz","fileCount":2826,"integrity":"sha512-ilfBN7H3Yp9voJQY7ZZ4a/BHjaGRDm2s7AmUIBSTwP41qgJnGhntvmiqIzjSDC7xPAOGDTziui7FXy9qqUW8oQ==","signatures":[{"sig":"MEYCIQDQVCLPtfFzaz7fejOXxc20A4TGYQ2xPY1oxwB0DXSp/AIhANrPtPr/9eirVc7v9yAZn5OE8KlPEZuDsplsd9TwZ17y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79721557},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"9792b3d42435e98767cbce40895be8be5fb2e372","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.275_1778796911730_0.43045680250445706","host":"s3://npm-registry-packages-npm-production"}},"2026.3.276":{"name":"skykoi","version":"2026.3.276","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.276","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8d8acdcbe6bf09a539adfeec48429ca2864e49ce","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.276.tgz","fileCount":2826,"integrity":"sha512-ElvofDM6kRVkOLsBsvToa3GrmP1h+/tp5SqslmGBzMBsp8K8fFbCG9x4v9STBtyHDya+6rblRhp1cWMbGX5zBg==","signatures":[{"sig":"MEUCIQC22jRcjOcCeAqmkCmutSmbqvYCz2v2P1HIWIwtgis2YgIgHJGUDX/46DkaLtGo/sTmSaLUg0WBzS5GCJEiYqTCp5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79721547},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"7831c4cbdea8b7bb585f212218c74013df5eae76","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.276_1778797079391_0.5863115240351198","host":"s3://npm-registry-packages-npm-production"}},"2026.3.277":{"name":"skykoi","version":"2026.3.277","keywords":["skykoi","koi","runtime","gateway","cli"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.277","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"68843793e16360a8689dc627835aba1d827f2986","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.277.tgz","fileCount":2826,"integrity":"sha512-LQ3JkNai5/8nNDOFed6qWQgM3FmzjqDlZNBhErgXcz9zo5+zoNUtd1bHXRFfMGqtjLGgqwN5rQY0C931316xjA==","signatures":[{"sig":"MEQCICLJu++tbY2A5wdeGyEeAetxotBaGf+qyjnzqrVN7WCQAiA+9h942cIBV9q1mc/sn8SYfGe7th+zncL3cwaC3DlfHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79721561},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"8668ebab0bc7a87525d30a9b4e8ccff04742bbb6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/SkyKoiProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.277_1778798474085_0.7530959572173876","host":"s3://npm-registry-packages-npm-production"}},"2026.3.278":{"name":"skykoi","version":"2026.3.278","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.278","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"555f26ea8687cce4cbf42cd7fa2c695dbb633822","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.278.tgz","fileCount":2826,"integrity":"sha512-h+/r+pchAVacJMzHlf2Pan0xTWVOhMndVLP7922hxfKTBH4AE7fPi8uh3F2tmEH1LqeXDxaEGnQuK9h8Ie+hsQ==","signatures":[{"sig":"MEUCIQCQ+LfssEK2WhlPWoUhxF2JyHnH3cfqnbUEFYeNJ/7TBgIgLenLyL654o3Lbh3PXGODZbT4H/d4xtqdtp9B46xsDRg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79721634},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"684f930feab20317058699d5c6bd979b216ef165","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.278_1778799220981_0.39375834043994384","host":"s3://npm-registry-packages-npm-production"}},"2026.3.279":{"name":"skykoi","version":"2026.3.279","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.279","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"7aa6514c6c35d28d1eebc849dcbea5fcd248834a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.279.tgz","fileCount":2826,"integrity":"sha512-27HVEFpYJc840P5rUHD1OaUJtBGdYJJXsQvBB5W92liJSIlD7LLByowKCVodL5galRTF3fCd7BJ80M+sBIabDA==","signatures":[{"sig":"MEYCIQDUIVVQyImT0d9ZLy2TWa2Rm38lBPgt/IOO/KSYEl8m7AIhAM7ii07g+meHGcImP7ZZG8UL+fz8/c0DVUBwW8G0auAl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79721614},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"13cb896cc1089a5e87d2d520051254b1e6106ed0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.279_1778799453796_0.1264872532450083","host":"s3://npm-registry-packages-npm-production"}},"2026.3.280":{"name":"skykoi","version":"2026.3.280","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.280","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"541a899652f40e30d0d1f0545bae17f8df893977","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.280.tgz","fileCount":2826,"integrity":"sha512-n9ned3ya3XMOkXxbm1NYLx1/u+AQ5vxInFoqhw/39Dd8FWTf7LNExpAZLafj6dbvSGrgIJSZ0SG2t6foldrpdQ==","signatures":[{"sig":"MEYCIQD+8yszMdJOO8VgqcwcAfKoZvsiDz4bT/Y20X8/q1jjDQIhAL10aKJSd3bBhg4KiYyV2Oyqj8QfG0i5mL1ZjsdJXSU4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79725158},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d291dd141c2e863f41b5c62aeb24eb55e17bd347","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.280_1778809223617_0.40457187811493633","host":"s3://npm-registry-packages-npm-production"}},"2026.3.281":{"name":"skykoi","version":"2026.3.281","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.281","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"70ff23818a332e0f314d632a455c320685049cca","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.281.tgz","fileCount":2826,"integrity":"sha512-eUOMzR8LjZVX9WCMMesWYry0stK4bUHgOL5nYRdkUIDfMoCn8jr2QtHNx5PoUX95CuwthqY2gVvhW5hvAHtQvw==","signatures":[{"sig":"MEUCIQCOmmHb7xUlx4loERMxdeXHLMNyw2fvbUcIHOUzNOHl1QIgZlFzPyH+GDEj33poGpsHU/bO6cgdm8GTSoRBHGgRDyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79725231},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"b30364cd8daba6c9d48fb827d600d5820bfcafab","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.281_1778810129477_0.4038882589886401","host":"s3://npm-registry-packages-npm-production"}},"2026.3.282":{"name":"skykoi","version":"2026.3.282","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.282","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9fd4053bbd6122833cea122178249d652f156019","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.282.tgz","fileCount":2826,"integrity":"sha512-0b3s/BBv9EOhKYWU/GCiNu3fHA5+dAJpqjXVwesJjz89r8xIPbOrYFsSklRLHlQ/MkIBjhXpaqIHizlsDbFhIg==","signatures":[{"sig":"MEYCIQC0Tf3A3bPYtBrutQ6RLW6LL85wxbO27SSDeS1dXrx4QAIhAJCfZO7/ww9F/udZZmpsHZGUuFSC+CNg4DcYYHboeWPI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79725152},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f708667e41ca079da03406bc44365630bfe31363","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.282_1778810961241_0.9190099559994975","host":"s3://npm-registry-packages-npm-production"}},"2026.3.283":{"name":"skykoi","version":"2026.3.283","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.283","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"744f8eabdbaa33e9dce99a28435d45cdc67e4a1a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.283.tgz","fileCount":2826,"integrity":"sha512-znJIlG1t+u64l51hb5iC6Ol3oKLUWq5e+dzVkGSsXsuzYZhsNVZsXONEjN1vBDBbs6w7ZWPVKUIYDgbDtUzr+g==","signatures":[{"sig":"MEQCIB1xT3QDt0bgt+iuwlTKKB5ED32iI3OrDasta98Wb4ZtAiAWnMJP8bjhj9loxonjBUl2DLEhJeqQ1vo4VWL5AdFRFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79725146},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d4e2207ee5fc7936f7c172294669f8d2baae71d0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.283_1778812187557_0.2651087647762236","host":"s3://npm-registry-packages-npm-production"}},"2026.3.284":{"name":"skykoi","version":"2026.3.284","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.284","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"0259697ce5d35951ebfe1c918d8e6a83cb769c00","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.284.tgz","fileCount":2826,"integrity":"sha512-r4QWO2GD3KPEYs5EvK8JAaw8jhV6TOP7s+hLbionntSmSq8p5c198MqKZ6GUCE/WSfsHIbXOAtNGGLRRgv6oRw==","signatures":[{"sig":"MEUCIQDZow5sb26+iNcW/N0jdLH945pROqE/z1sSrvw427JFegIgDmV5C6hO54t5U92ZgpryRRygsF0EWEfBt3sw6UDI8uA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79725224},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"370db1e2f26dde69dd53e1d86bd523bab16a4800","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.284_1778812258493_0.9581609951686252","host":"s3://npm-registry-packages-npm-production"}},"2026.3.285":{"name":"skykoi","version":"2026.3.285","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.285","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"84e9188c814ea2a67c2c4f71c0b4ec9198d32015","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.285.tgz","fileCount":2826,"integrity":"sha512-G6wZJXNa81URu9FYaImpuf95HDl7wXh9863+gy4wWj6P0oAuq/B7HzAWvNzBZyTICp/3h3VAtTsDPyEdENs46Q==","signatures":[{"sig":"MEUCIBYSFBuLPSb8v7pOBQXrAs+9Ly5XPfKjRLLfVzTqX8oYAiEAxJtgRWPspoFi4S7FuXg+cnHoSJuOcyfbWIIKeGy1Vcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79725231},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"a68268fb96517fd32d681c51f496c72f714a43ea","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.285_1778812519100_0.32637437396131697","host":"s3://npm-registry-packages-npm-production"}},"2026.3.286":{"name":"skykoi","version":"2026.3.286","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.286","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8d15b09bb0ff4208d277401aa9eb603ced3253c4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.286.tgz","fileCount":2827,"integrity":"sha512-GdU/SLWS/OXxheE8gYBznKDi5BfLS4KZ0fbK3jdl4zUwKWSGt2STs5W+cR9gR3hmK8F0VqMi634qfqaEFKoLMw==","signatures":[{"sig":"MEYCIQDNuQIJwhDDIO8dRw5CqCdMfMreCfM37wnfQLYqSGfxDQIhAJqqg589XXgf8gcSmXQSHj2RAz17MdAwQwOityZgvBqZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79750313},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"2bdbd2c2061571e21a8d6e7b65672c58cfa256fe","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.286_1778814905243_0.7206461759558347","host":"s3://npm-registry-packages-npm-production"}},"2026.3.287":{"name":"skykoi","version":"2026.3.287","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.287","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"10f918ecc78769e595c02954bbc9fa9eb9205d9d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.287.tgz","fileCount":2827,"integrity":"sha512-FLKqn9tEgIUJfj4KtvY+xRZ9xAwOuX1Vabe2HjoIFiJNmTFQWn9Almub87MD1hss5TrLwBflVPMnJO+0X5dzXA==","signatures":[{"sig":"MEYCIQC3X5LwxfOhckTJjeUEVsEEBpfcN5t9bZeoZA+30NsCPAIhAOZdhH/K7ORLZfNZMl95wuqK3BFiI6o1oryd5cryaXSL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79753359},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"12f962bcec8b3d64fc79b4bd5794c1782b2969da","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.287_1778816740950_0.7307609859673281","host":"s3://npm-registry-packages-npm-production"}},"2026.3.288":{"name":"skykoi","version":"2026.3.288","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.288","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c0f2a134c4edaad9fcb3b90ae1cededed2b42030","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.288.tgz","fileCount":2827,"integrity":"sha512-f3ieV7PWqj9sY3rN0xmcaVe9pRhpVjH0uag6DVrrnBWEMSNH5Ocsd8pdKdsXXGnWQj/x3wVmOxmLkbSqs4h3uw==","signatures":[{"sig":"MEQCIG6G6UGNjBQaB+7Y4SfIPpdLm/7klvPEr7AKIYxceo/KAiAwQ0kgtwGwMTcXSsXtAPu313r0fUvMzsdqS3frmcvqjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79762875},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e8973a39656f358c067ce8dce0eb3fb54207eda9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.288_1778819798846_0.10280537962853309","host":"s3://npm-registry-packages-npm-production"}},"2026.3.289":{"name":"skykoi","version":"2026.3.289","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.289","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"089a494fd8eac86c0e36394bf30578b0c35b5ff0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.289.tgz","fileCount":2827,"integrity":"sha512-85K3x8UVRoIHfK2NJ8L2Oinn6WatVq7ckZNOzdvo7P/2tyMG7QZBATXbARL+1ONfllNsk5esAKLe6PAaYHQEyw==","signatures":[{"sig":"MEQCIGEc0ONuCD18wAoKnzB538xYPToNwqEjvK3u2OiaFBEYAiBym0ZsAmc74Gj0EmhG+lNguv0j45Ubfgu46XHHj43vZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79762982},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f27d36388330e8525877ea825dcbbc1ebe12e3b0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.289_1778821533740_0.3151767869036479","host":"s3://npm-registry-packages-npm-production"}},"2026.3.290":{"name":"skykoi","version":"2026.3.290","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.290","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"4b1d23213b1b4804b2d415ace57e2598cf755450","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.290.tgz","fileCount":2827,"integrity":"sha512-hiZysmZBwdxPlhAEM0xk8MLRJnDw+6n9dFeOsrqYa/8laJod3oLMpziaLm5JUxjV2Ntdc4JRMCoUvtVXrReU/w==","signatures":[{"sig":"MEUCIChmXZEBGsAM/JwuGMnvr2t1r3d4aZCnWytIIT4Tzl4wAiEA/fezjTyMpkVnJ+a+96shamQCN7Z0pyQdv1tHiNqZTyQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79763052},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"ef24bbf85aab226ddcdeadaec78f9e98cb447384","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.290_1778821737546_0.718016929650408","host":"s3://npm-registry-packages-npm-production"}},"2026.3.291":{"name":"skykoi","version":"2026.3.291","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.291","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"5abb52c7a0b37e4e8f7c1ba5a87bff01d159678a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.291.tgz","fileCount":2805,"integrity":"sha512-fxTMdGT+1cTviREBlHVCfyvHZr6LDUJbpKWmea1SMK/aQXMh1olX89XHHiRB4vgekAosJKDxnO49Mg2iryv3QA==","signatures":[{"sig":"MEYCIQDrWmB00MrEjNUUZAX85h553CtudMx+8y/4M4dh4gaxoQIhAMCNsphWUIIWJQqUHgpT+gd1lGtBMOxlh2C+WhIrFCXf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79674923},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e0a1cd020c52d049fd219dddcb4c5e84308d6c41","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.4","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.291_1778823741568_0.5242348747209142","host":"s3://npm-registry-packages-npm-production"}},"2026.3.292":{"name":"skykoi","version":"2026.3.292","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.292","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b14e8590e6c9026eb4ad7fc7be1d8b1c5c77ecaf","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.292.tgz","fileCount":2831,"integrity":"sha512-aPxVDHhzWUuusN2Rup6C/56d8sxiejMh3zbHWIwBNmtGFFqLdwTabgzzZ0gdWlNHpylmkkmm5jYeSRxAScwniQ==","signatures":[{"sig":"MEUCIQCB2l/oefHgREVmWw6i799wVoylfk97zVjkOzPa/NxBUgIgUOU85Huv0tw1G5IRz1GPcYoFSQfETEI5SFP1SHectAI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79769483},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"85d9218117915ac2a59e249e088d6b7f55bd799b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.292_1778823852832_0.10870024167011594","host":"s3://npm-registry-packages-npm-production"}},"2026.3.293":{"name":"skykoi","version":"2026.3.293","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.293","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"6b8c47a61e01504ed99fb8511bc53d49b7165806","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.293.tgz","fileCount":2831,"integrity":"sha512-OxOkKCEJA0J/WJsov1hoGYnXHkHy+2znEv36444cIibVPPvYdJEzFUDEEwt7FDttH1qFePDqdra41PTI+DmRyg==","signatures":[{"sig":"MEYCIQCyj0BYK1uBdd5edJ732zzTmh9cP1JmAqJVKgSifmV4cgIhAPvdfgIC+x/3CXhvuhSKLYMbnFi1wWyc11Cxsps8EGze","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79789710},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"a375a4c40f3c9bc908f217c429cb7a7017329fd6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.293_1778826507394_0.6025966474548747","host":"s3://npm-registry-packages-npm-production"}},"2026.3.294":{"name":"skykoi","version":"2026.3.294","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.294","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"69fd50147c0719552b18b2212f05e71751f847dc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.294.tgz","fileCount":2831,"integrity":"sha512-0vkhv6a5LDvyF2kcjvgKj5p7SOv6Elkh7hnFmR3m4jfEhHvu0AzgpulOOJT8KPscopUz5JzwQvE40ayfsvvHIA==","signatures":[{"sig":"MEYCIQDANMqo6buyLU+n7zdqF2QDWoTC0wXuPkxKoJZmqsQnAwIhAJwXTwnOSaCjZ6WaQKjgDggDpdMw06y2LrgkQIawHuqf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79796542},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e2619f1f294c37066b9ac24d8bc4b327667d9280","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.294_1778854216466_0.4031764812862513","host":"s3://npm-registry-packages-npm-production"}},"2026.3.295":{"name":"skykoi","version":"2026.3.295","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.295","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c050d598358ba65a8a9d1efb7b0872bcaec93333","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.295.tgz","fileCount":2831,"integrity":"sha512-4zpBAd5SZBnErsRj97pnKr0SbOJYTqLWEZwi+4pCQEKz7cgrm0OPZ50fyphGepR54oM8emls4vtFpfo73obgyg==","signatures":[{"sig":"MEYCIQCnpeLcZlbiYG/6fnITl8+LjqSo6CD5/kNhw+W9CFOnJAIhAN5HRftwGSg8Gp0aY066BivzaFi9vKudEhtsYrFvfiPG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79796549},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"e0fc990fc618b19d6aaf1168809973b9ea869add","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.7","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.295_1778855307040_0.3397343627970131","host":"s3://npm-registry-packages-npm-production"}},"2026.3.296":{"name":"skykoi","version":"2026.3.296","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.296","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c095e543f9603189d1982c2913277e9a27206db3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.296.tgz","fileCount":2801,"integrity":"sha512-tCdILiZTHjhjpH6wfxm2KpkjJy5/IlJU2R2C4OdQIasQKWeSqcqPnULhZEHTyZiUBh7Y9piA8MJyyaECv6isgA==","signatures":[{"sig":"MEUCIQDM1C3WbDrLmrp+rW3NXbRpj2ZDKmumrzzLk0sBp9VJSwIgdyAeXXTIapO+q1cIQbBUfjwnesQD7FEJ10wZOXlyAEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79693601},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"qrcode-terminal@0.12.0":"patches/qrcode-terminal@0.12.0.patch"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"f288bfe8383bec5e14e61a252cf2addf413d50d2","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.296_1779736116626_0.2926676243196358","host":"s3://npm-registry-packages-npm-production"}},"2026.3.297":{"name":"skykoi","version":"2026.3.297","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.297","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"dfdcab885d686d9e7db7bfaf22a90271710b5bf7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.297.tgz","fileCount":2839,"integrity":"sha512-zoIvOzisdJT7PfeGscBghIr/bzrsycFRtKk5v+A8J8ekb8T831ov1ICIP/Q6/f5lcspbNYXhf9lcrGsDoyYxdw==","signatures":[{"sig":"MEUCIQCgTy4iJIncI6R3BdkoP4ptTh+WX/wXg5Jvc/XhzLcwKAIgH+D4u7XcW6jgNbmPBVpnCIeFoNHbJMQQTNkqBD6aE+A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79885080},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"907dbfc0944b1d02e54d89d1f5dda9c0b8a2a4cf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.297_1781048495655_0.9279751289372324","host":"s3://npm-registry-packages-npm-production"}},"2026.3.298":{"name":"skykoi","version":"2026.3.298","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.298","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"699e258eaeb2eb611764a5bf1ef85b197171844a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.298.tgz","fileCount":2839,"integrity":"sha512-TetnhDMhE9xccXUA45ehq6qZK7a9xOZMxwkW/0mlUvL/NWYrupHZtpfggkt9ZKSCREGyTwRF6gcYHLIJttNqrw==","signatures":[{"sig":"MEUCIH5c09ow7OhZcWq2pP91ErPzMZbtHuZD02LCqec151OfAiEA2qaQNPsfNR7T1ocywG309sRzouaNBIxsY/SLMBiih/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79887153},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4bc1372a37e01775f8887c45f1d61394a2481bbd","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.298_1781048891495_0.15507945415234636","host":"s3://npm-registry-packages-npm-production"}},"2026.3.299":{"name":"skykoi","version":"2026.3.299","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.299","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"29a7e1c8f2414e6711044827d79cf1a758ac1a30","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.299.tgz","fileCount":2841,"integrity":"sha512-p1P1uOv7AyQnXXUG4fj557slrg9F8NyjOmH+7fxuxSjr/eSZH1UYxMvPEDA/6rz+o0BmLC5KNk++J/EiIipKtQ==","signatures":[{"sig":"MEQCIDiUZ4dIw3WUiJeYBJz1zXw1u6NpphcT0JAE/PJ6V+ZkAiABwbBlX7giJ4FWoo1V00xdeL/ZxwZqYDFkYD3lM9nX+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79902675},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d8d01be6a1f6ae0d41615fb55610a65a829c29a2","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.299_1781049421576_0.865561061966418","host":"s3://npm-registry-packages-npm-production"}},"2026.3.301":{"name":"skykoi","version":"2026.3.301","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.301","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ecd114cbee018fecf3aa1e81bd8cade67f1ceeb9","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.301.tgz","fileCount":2842,"integrity":"sha512-fjDm9q95PiGyQzldmJayMDXPmqhmh6SdIKoSdi4LxcP2EfoFNU4r5czKm1gALfRL3jolIyW4qHwpLgbpN+cqHw==","signatures":[{"sig":"MEUCIHc2qvZT1gKqg+3dik6O5kExALF0Qm0kb1wDOo5Qnz8tAiEA9yJdBTxOoe0Dds3SmAHIF7tvBYYhdkza9YfGh0+ZZUg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79912219},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"b5c7ff94faea6918aa8b65e88c1e989875718966","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.301_1781049896749_0.3958777845261152","host":"s3://npm-registry-packages-npm-production"}},"2026.3.302":{"name":"skykoi","version":"2026.3.302","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.302","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"6eca337c2707b5e28479c7c66e52c96419c6823c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.302.tgz","fileCount":2843,"integrity":"sha512-VWu7CKnNpClq4rXVy+CkTWKALaa6s+yvfIqxgEHts7X1lglu1cVXZ0HbyFXH7oWmrwuxBAmJXCGoV5Ly1YAw9Q==","signatures":[{"sig":"MEUCIQCj8nlGuZzUcV2sRdh3J/Bw+G5v7cWa54cOSFTWrSnv3gIgM5LW+0ba70246Aig0rL1sTs3RdE5ohxNyqfRXedvW7k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79917967},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"bd41a43b4069fb58cf69f537a44e9f5587b72113","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.302_1781050084129_0.2304099730589324","host":"s3://npm-registry-packages-npm-production"}},"2026.3.303":{"name":"skykoi","version":"2026.3.303","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.303","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ad6bea8dba6f288beb9fdf88837d76adce86bd75","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.303.tgz","fileCount":2843,"integrity":"sha512-Mx0reBlzHg7GIMWDx8AIPJA1mR9pyXBgIqL56TROyGqsdqxskXuQlW88iE+1xVZRjenN2DTkIpJzSNnhfRD0eQ==","signatures":[{"sig":"MEUCIBpryi3o65lczbdWWq5YxkFrTpzbcdmBpgjcDPrfKa9sAiEAzzBZgotO/P1oCUe6YjRBzaEzA87CrL3ck/GhD5N3TO4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79920289},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"439b8e276271c6ad5f18ec1844f74be09f328ecd","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.303_1781050801649_0.29924490507174717","host":"s3://npm-registry-packages-npm-production"}},"2026.3.304":{"name":"skykoi","version":"2026.3.304","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.304","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"35ed496c70f366909ffbb4d4d9873e93f7cbc31a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.304.tgz","fileCount":2844,"integrity":"sha512-HebtvnE/tROOLZyiSMYKsUHFJW2QFLNW882gDaT8nOUX7Q2Eml/QNiGnjQWCInXtrrY9bKTpaNhq95xVEASKKA==","signatures":[{"sig":"MEUCICC9w6z9dV9qzokBpXXYb/bUaFKCt/9M6KqiS0sgDnpNAiEAnOWDDNyB7IOTeFvqe79UNKnTTCbdb/2Q/Is0Vc+mXWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79923888},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d6fcfe9927d51e933f077dd419514c79ef957fae","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.304_1781051445094_0.8515272196537025","host":"s3://npm-registry-packages-npm-production"}},"2026.3.305":{"name":"skykoi","version":"2026.3.305","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.305","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"14ead7f025596c6a68424cdf5114600ddf943c35","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.305.tgz","fileCount":2844,"integrity":"sha512-SiO0UXLYF2KJ1Zsle8ZLqSqrDRwTiP7X6yyhN78HdEQFmkeLvKM3hjLV4qgc5IzRw6dc0AaOBtZi1/p5IZlxZw==","signatures":[{"sig":"MEQCIEP3i5Oez4xH1ELOWdFGQnewgV3omQAapLZnJ0vkudx0AiAiNOLsCZtqS0eEJz3WW3tVS2MZKB9mA3NO8lyPiVefEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79926038},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"c3b8f564afaae32095d8fa8a86ff7fc760f3efda","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.305_1781051600111_0.15085366500643516","host":"s3://npm-registry-packages-npm-production"}},"2026.3.306":{"name":"skykoi","version":"2026.3.306","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.306","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"6cb31ffc8015f4ef543d76413cfa7d67a9330fcd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.306.tgz","fileCount":2844,"integrity":"sha512-jm+gDdKU/hqeeahDXeI5SAWNQiVZ+oRRN0h+mS1/y2t/sSv1mr6wvV9fSnx9Nxhn+ZSSTHaZwAy+eOH86+2qQg==","signatures":[{"sig":"MEUCIQDhiLi/T1wyZPHd4YYI2xYqHlXPoczvH3fXAQtcCbVbGQIgPpAj2rKLuCzz59T6JlPu8MWer0bneIwXQp0FUoZxWsg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79927095},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"9999ee0f9079bb8e771d72a840f8fdd0a652352d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.306_1781051896685_0.7857441935573806","host":"s3://npm-registry-packages-npm-production"}},"2026.3.307":{"name":"skykoi","version":"2026.3.307","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.307","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c3146ad2f40fabbbd92e90307db212f506577f06","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.307.tgz","fileCount":2844,"integrity":"sha512-bs39Oo6rUp7SG1iQ1lMbgrJN4zw7MJzv7m/N02TquOSul4YM2PxOHrReTq1yx1qp/Aw1Ve+uvjtvMr6NgVlCCg==","signatures":[{"sig":"MEYCIQDeM8HPstqUA5SML2dRWgonFqfw3YrF4CGrLT69u1ro5QIhAK5ez2+XnoJHV8q17Ktogn0oudcE6ybLhWkx/tv1FeFe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79930624},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d525d5e2aff692df9cf8fcea1c692e302f162e80","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.307_1781052819538_0.7604668156305785","host":"s3://npm-registry-packages-npm-production"}},"2026.3.308":{"name":"skykoi","version":"2026.3.308","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.308","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"28af72f15a71736d3f0fa58d2ce5a17b9f80bbea","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.308.tgz","fileCount":2844,"integrity":"sha512-VQRS7Bfk1U85czBFMVKEoce1z4mgd8v0CXykSGq/iGMQ+1gHHY0I/NqWBoaSNeFp0ndxnVlcQPQQqiV7ZLXwKA==","signatures":[{"sig":"MEQCIC2ByGRWw1iedqjV3wB++h4rca+fy2COHnZzT7osgnynAiAoFEN7acq5PyKYt1XHTcLGohvGDWo36akotcqDPbbi+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79939003},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"202aefc1a785eb0c389bbefff4097bc0f8a6ecc2","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.308_1781053386788_0.5109350824795613","host":"s3://npm-registry-packages-npm-production"}},"2026.3.309":{"name":"skykoi","version":"2026.3.309","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.309","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"05ed23e662a07dfeae5c7b17551dc3fa63062426","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.309.tgz","fileCount":2844,"integrity":"sha512-qcOX1tpl4zR/Cd8f00XRZ7Sp/M/iH4eXtq6cd+ZhGrlQIvcGJ16HesveON1FQyVv7k9DNviTzgnSP9lJMhl7pQ==","signatures":[{"sig":"MEYCIQCZrH/t3lvQCAPdBUEZ7ty1uX5iqX3DtzOvVcisswnZ/gIhAO0FXNEZUsW+WjauxpeOMAANDR5AS0DxAeAQSNKWwqbk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79939169},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"9422ae0a8b73d90ee04f64b944724d9796c38b1c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.309_1781053829172_0.05281063385222118","host":"s3://npm-registry-packages-npm-production"}},"2026.3.311":{"name":"skykoi","version":"2026.3.311","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.311","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a24af5da550538fba358341e195798705bcb467f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.311.tgz","fileCount":2844,"integrity":"sha512-vyln6kT++II81lwK0Sy4GlCvE/M9zrgM3lfOKEi9byokJXYkngcLGnKN2vgsvrX0jlVkyIfTcTLdgIkR2i4WiA==","signatures":[{"sig":"MEUCIQD8T3xpwBMCETzv0dCoxhu3hi+S6bHsGKBXnXiLpWpH1wIgFF3VLRdZWirxbXnfKL9Pe7GTEFCX6c0hUB1t0NB01E0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79941244},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"21e9c379849838f86d4e02d8aa34a41d34038883","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.311_1781054228577_0.5480982616007","host":"s3://npm-registry-packages-npm-production"}},"2026.3.312":{"name":"skykoi","version":"2026.3.312","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.312","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"4f604712e040165f138198855652d112d4bf1a7b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.312.tgz","fileCount":2844,"integrity":"sha512-wtb6S7kMJmM8ZsQOhQyM6YpBzq8Dn7QkDe2osdTiOkqYWFxaKC8GYPRDcwzJfkh76TB7FxCIc2T98Kdkwsza8A==","signatures":[{"sig":"MEQCICxM9xVZL2fgsR+Qg3jIIza1euRR1BOQ15tqiVgwcbRaAiB2/YTUbw16w7V0D7LYdRjaKc6TLLn/dZcjsPmJMP3FZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79945346},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"21e9c379849838f86d4e02d8aa34a41d34038883","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.312_1781054825811_0.7329523612735134","host":"s3://npm-registry-packages-npm-production"}},"2026.3.313":{"name":"skykoi","version":"2026.3.313","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.313","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"39198ac83652e111ddaa0f7fde78954ae5e55d00","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.313.tgz","fileCount":2844,"integrity":"sha512-0gn5a/sbAw79D5G3O0pU56UjifJDY3KXuQSs70dv2Bwff3ulgLiDPE83PLB5XMBt/Kc5rAEJy+uJ1eV9AiNlKw==","signatures":[{"sig":"MEUCIQCny2R1qQB9jChIg1IOfXVYCrB8pjzHLA+FtqUMRkZBGgIgTU90qUxncJvvB3V/DduPUq7TTpYsYqiJk/pZVJUucMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79945356},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"53923e5248cf96f2a868daff4e9c0995b7b46fc6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.313_1781055117155_0.6259863456115677","host":"s3://npm-registry-packages-npm-production"}},"2026.3.314":{"name":"skykoi","version":"2026.3.314","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.314","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"efbf58dd8e5c27a44521a7311fe1d37ac73fb7b2","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.314.tgz","fileCount":2847,"integrity":"sha512-eounUdkErvKWd2AotBTkjODw/EVKtTLmpjDGgEye/gXJxyP5sP+MfP6u6kgSstLher5fpKrFbbOHSZZtuYObrQ==","signatures":[{"sig":"MEYCIQDoVIAuB4NzeJFBqZQXB+AQjH+47GD/pbt98zYVt0hxxAIhANlk3odiOuh6s9hWP/dQBMH7r+Rjb+Lalg7tbJgCoBMd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79947692},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"9ae9d90c2c44e9e380ab2816ba754533ebb6201b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.314_1781058633911_0.6817602983929001","host":"s3://npm-registry-packages-npm-production"}},"2026.3.315":{"name":"skykoi","version":"2026.3.315","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.315","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b1ae272f427a6116545d1664095e2fb76f32f7c8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.315.tgz","fileCount":2850,"integrity":"sha512-+ZdJiT5EM+Kg2pNMTBgC3IUEW7bamDtzPzuwrS59o4jgBf9HegfGvQXif5Ab8z9GYuQNxG5pzo4E+Z8KW2084Q==","signatures":[{"sig":"MEQCIGcHDWyaZz4f3FYsPVvf0rqB3r42bOk9fTFaJk+zV31TAiAEHUNmXd2eF6HJvR/DjlkNKKzFjDSTR3QbibNSn9y3qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79989460},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"3a6d6065b996004a7a3ec25f76310be6aba60db9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.315_1781119702461_0.8389253474636007","host":"s3://npm-registry-packages-npm-production"}},"2026.3.316":{"name":"skykoi","version":"2026.3.316","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.316","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8aed668d70477a840f246a44835c1e4c06ac2e79","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.316.tgz","fileCount":2851,"integrity":"sha512-pMywZPcdC/b8mC/vL4Rw2RH9gd9uhVS4ilh/oBx50gy9gjgxF3Inf5O5Uq0XHCgd467Aadp8/hzxO78HqPbnmQ==","signatures":[{"sig":"MEUCIQDrbJSqG+PptiayAYZuGoLznqatixBd0NO4z7jj6uLNHwIgHOGpkROXBjJwU4FJ7utEYueyysRhs65ny+KLhTnXZeI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79994575},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"97f73c8abb9e694f4f7b393c1f45fe7f93cce861","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.316_1781122643279_0.3294834118229919","host":"s3://npm-registry-packages-npm-production"}},"2026.3.317":{"name":"skykoi","version":"2026.3.317","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.317","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3df5b72d9cc7021e086d33cf6f60b72a8bc585df","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.317.tgz","fileCount":2851,"integrity":"sha512-1/ROTEXQPO7Y7PuZQfTdaPHuJnzmg/SgsKVEa5isNz0u7x+y05i3/MIt5OB0VTKQ9BUW92vf0ww8XEFv3tNa2Q==","signatures":[{"sig":"MEYCIQDN1NE8Yq8rkvbUSBetgoeWK3bDP+PjAP1+g2YRb2lm4wIhAI7gbVuMmjnT2qU7x6n8i6peXp4iJvItKams/jGg1OkI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79995697},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"006f04024e71270d443630e67d7bcea5f4426f25","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.317_1781123767580_0.38453206506206805","host":"s3://npm-registry-packages-npm-production"}},"2026.3.318":{"name":"skykoi","version":"2026.3.318","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.318","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"fd22dabe7362016268b6e813c70afd10a0053c61","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.318.tgz","fileCount":2851,"integrity":"sha512-rHLeEr+Nhp5iI9waxKd1cpFsSggZC4jtp3QGXBHXIQQ6bU9/W/c9RjRb57TwrcxjPveZHYwpeCY5XM+3E6qcWg==","signatures":[{"sig":"MEUCIQDoWFJ8apmH6gYs5NS+Q7JjyJwl4Xi05F4/HRyl715sZQIgVcrwqDbFvaianDkq1OJNUKjqQtq8HkMpok6bH6QFCTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79996641},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"2068e8a1340017217278e7d3ab50ff981bf10524","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.318_1781126070270_0.6265893091554746","host":"s3://npm-registry-packages-npm-production"}},"2026.3.319":{"name":"skykoi","version":"2026.3.319","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.319","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8cdc36252599ed6c67d838ea5747f6ddd85dc8c7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.319.tgz","fileCount":2851,"integrity":"sha512-GjoPLxruZyyM7xMbfF1j4tptIKYSb3MsqZHYtEkWeVGKuHszOapMsy4XTdIG7e6YgMILMkYEP6drkn+W13UoAg==","signatures":[{"sig":"MEQCIByavPy5+b8RTL+FCS5f8LC3113FaGWIWq8wp7dVUZVEAiA3e3vt70MRVsQd/Ov2RqO4dZ7tOhHf4/02aZe6AzRc/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79998512},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"acbf97c1596cb79b0afb5658b9aa8ac311629d66","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.319_1781126688445_0.825867162262361","host":"s3://npm-registry-packages-npm-production"}},"2026.3.320":{"name":"skykoi","version":"2026.3.320","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.320","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3d588b96d71d88a25d46c59f092dfc8c8d932fd9","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.320.tgz","fileCount":2851,"integrity":"sha512-pjO8OVJdYNAoUtxPP1GmWw27HB533GdSIuqVJZYooJucTEMlIvPZIfNf9BLwGXDqstvTHPcoZZiQan8xhBz+Pw==","signatures":[{"sig":"MEUCIQD8efljhyTQK7D6b87q5rK8An8qebZy8THMwB9t8EQiJQIgU1AKsfFyVMa6Ca7CjfwtbgPwJCUIHRaq/CLdBO42FoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79998552},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bb25ad10912e4eddf5fb4493ff0a73dfdcf6677","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.320_1781131274620_0.5145199083221559","host":"s3://npm-registry-packages-npm-production"}},"2026.3.321":{"name":"skykoi","version":"2026.3.321","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.321","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c965976b562af010d7ada4982ccbd273893e00f7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.321.tgz","fileCount":2851,"integrity":"sha512-wCm7mFM2lMAjMzHB0+PkoPhHkmMI+YSX7yaOFUb6exyvUq+S2FoUKsry11Wl0zHudekGWcH4N7Q0ztF2foo5Xg==","signatures":[{"sig":"MEYCIQDZUDdDmwu3xQaVNvS41IxYaJ3LS48UQ2KbqX1+e7IsHwIhALS5pfCITPeehvlf5o6Bevo1YQGJvtxsLlCLMYZweZJE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79990265},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"878084a7fa95de25778d7132705cadd8aec8c202","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.321_1781132958261_0.1758234237158507","host":"s3://npm-registry-packages-npm-production"}},"2026.3.322":{"name":"skykoi","version":"2026.3.322","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.322","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2ff4ea4c77f4e62de09dcc87693b81fd8fb36a26","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.322.tgz","fileCount":2857,"integrity":"sha512-/HrPpuz97cthQjl3Jv21t3BtgZNBJed1U8kNy8b42cn9yxNkiu3RqLuftKaoOi1sBHnACCEF7JuUhmfiVckBOg==","signatures":[{"sig":"MEQCIBtgLoLoHDrX11eehzsjY1zM5m0xDOeSZG3rUsRH58JGAiBJcBbJkkOyAO0vy5cGqHc2JFkMaj3kGKWEsTpHdiKbXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79995440},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4c86728d713b5016154a2c2fbb8c444587122943","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.322_1781133433544_0.21499552818025514","host":"s3://npm-registry-packages-npm-production"}},"2026.3.323":{"name":"skykoi","version":"2026.3.323","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.323","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"39c834c53c8a99a46a02ee47da2d0385e5d1afc8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.323.tgz","fileCount":2857,"integrity":"sha512-KYLPEqVRKge756duVGEyZkjqX1ecguz6x1JhpXG3cXydQkm0SINd5mJtsjJw8OxMJidbifsmDT2tnVFV0uAsTQ==","signatures":[{"sig":"MEYCIQCKGkvCeq4t+3UC3NAnCug2kfzA0UcuaW+rehd8FQRSngIhAPMI3BsKfHZe3Q5puTmBn2O7Cb0RZCbxEXrrFkJ7j7NT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79997771},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"5545b740e1134b4ee4975c088a2b62d2c96ff47e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.323_1781134389694_0.9612584290284827","host":"s3://npm-registry-packages-npm-production"}},"2026.3.324":{"name":"skykoi","version":"2026.3.324","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.324","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"27eca3c2d712ace4c140bd42c536dd5e5fca652b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.324.tgz","fileCount":2857,"integrity":"sha512-LcbYlsQ7x67KoJlyv3EQAfV79YpcAojh04S3PzW3aV/awnSqPkyPig5Swxik05G0jVUotRXoD4pQfP9aN3Fq1A==","signatures":[{"sig":"MEUCIAXTQ5IrPYdY3VqwZ4jFXfoi04anY4zIT3rUgwaRvjCaAiEAk9WQtU7XgMtdx3DmHvD4Xq+RM1r/IrEuaCVFXQeOu08=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79998726},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"2cc1ee5652af7e40917b6681a54132a98737ea53","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.324_1781135184751_0.1872156209311533","host":"s3://npm-registry-packages-npm-production"}},"2026.3.325":{"name":"skykoi","version":"2026.3.325","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.325","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"de4f7f5015e90c69db39cbc2d5837b30fdda27ba","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.325.tgz","fileCount":2858,"integrity":"sha512-7iQ0NtA9WskE5+7vno4LRIKRM3xvFh5eUTvlq1Hete3pKFq1soWohg33HjoB0gaMCg0gd6ObRcSJK1CaQ+WUcw==","signatures":[{"sig":"MEUCIQDr8fUsbHD1lOL+aOayaChBmQWB/th9Uvsw4/Ohe7KvmgIgRLy/ZRNlPR5QtmaK6lAY3Yvne18MdImHPuLfaMaNa3s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80006556},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"c2f8bc74e833337a7e9de4abbfa99029787fb9ca","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.325_1781142006098_0.32226586008544356","host":"s3://npm-registry-packages-npm-production"}},"2026.3.326":{"name":"skykoi","version":"2026.3.326","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.326","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b3bebcbaee3f5f41ca2f1778f58e6b26e618f447","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.326.tgz","fileCount":2858,"integrity":"sha512-e+DG3UZ0mqMN6ob8X1Lm1uiaqi00KyMebCiUJ79MpL1+Q1G/s9/7iGoxQ9lt6igVEX79LWEcuDUfonC3OCTsEg==","signatures":[{"sig":"MEQCIGw0u/I3szjpxCKpULQqKoZhiEYGx6L3eZ1/NWp+22BpAiAvvMC4E0GVtH7sCCv1B4rp1XMp36RJJ4mx6jSA+ea+qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80007428},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"aa26554c09ddab04881995d5b479baa294f0f3da","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.326_1781142737648_0.0054046675417156465","host":"s3://npm-registry-packages-npm-production"}},"2026.3.327":{"name":"skykoi","version":"2026.3.327","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.327","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"707533c02c6bd95375a2431eb07630e7bb44399b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.327.tgz","fileCount":2858,"integrity":"sha512-TFD7AAgwc/As9qAv4J/Us1Jq+kuMjH+fuiCWgaBDC7favkjTtElljQxj9eRF9ix8cIrGOidSUDcgGsYnD586lg==","signatures":[{"sig":"MEUCIFN6zxMpFdcimHQeHjq5APIbDX01EwZ1sk5P5RRxAH6cAiEA0koKUrLXSQ+jMAoGriBiNDrv5hgDSX5QUv0RP5mvr6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80007887},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"163bb07f3b3f4a8e3cd55a335ef2b9ba49a29cba","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.327_1781143145636_0.6322303050943863","host":"s3://npm-registry-packages-npm-production"}},"2026.3.328":{"name":"skykoi","version":"2026.3.328","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.328","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d23eb2299c0eacdf6d379ac3dfa8daabba7252b4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.328.tgz","fileCount":2858,"integrity":"sha512-mmYbRWRkLAmLaSKRVYoTx+8Myoe5lpuYQE46/iVTmczK3s4GTu1rarCWut4ZCeR5jDk1qHopbuW36cbW3ZKKUA==","signatures":[{"sig":"MEQCIB8hXQXQ/9paQT7uWOzyXZab7PgXPrCiIYoM9hrYSbvAAiAw7t4/R/DYHfuDQx4oDT8MRSEUTkHp/iLvhHIN4sv29g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80008060},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d5da9aca6e265cd469cd39a4f2971a009aad6f26","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.328_1781145460805_0.11859831423225597","host":"s3://npm-registry-packages-npm-production"}},"2026.3.329":{"name":"skykoi","version":"2026.3.329","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.329","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"bfa2debf5823f7123b32b651f0759f82ccdf97e8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.329.tgz","fileCount":2858,"integrity":"sha512-snh/twsPcauCd9fwMW+a9ZfQvPyBLQ7tSO8FSrapbC/wC7Ad5qHshOpVxp4weWSd9rrJho9UcYe6zKyi0zGg+w==","signatures":[{"sig":"MEQCIFAIuSMSIZD/VCJ+X52LR2h8PLWJw1CPaF25rvPCn4gZAiA2u/Z3lyc4IB6d6g8iCzvB4qMYOMoDKh+ZIpr/dPK1LA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80013661},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"527b198d90b6a04523f493758d8148a794bea29c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.329_1781148588248_0.9769632901971859","host":"s3://npm-registry-packages-npm-production"}},"2026.3.330":{"name":"skykoi","version":"2026.3.330","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.330","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c6443b023ca7f61b5944b11263415063e7aa0b07","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.330.tgz","fileCount":2858,"integrity":"sha512-2havWLpuBXJS+5TosRiyxyEtShdknXCiB/2STHWZmOrOJxjDrlA2za/hjXhkBEgIIUpMSGQvg/Yp6rI2bHRCqA==","signatures":[{"sig":"MEQCIEsCuoYf7Fr9J11kff9JyYLFdbool3o6yLDJijZlVaN+AiBoXc24OjgRMQtS6qqYTg3PHy44jsZZ7HSlxXf7TWqIfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80014366},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4b2390d86c7ac418a3ab33dfa6253bb3dc295bb5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.330_1781158857088_0.7706405463623229","host":"s3://npm-registry-packages-npm-production"}},"2026.3.331":{"name":"skykoi","version":"2026.3.331","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.331","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"076ba4426fcfd78f061c2fc5a2346a3fcd57a612","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.331.tgz","fileCount":2858,"integrity":"sha512-SiK9l1P1iY3Bei8aIkV0lzpHinuFKMwLrbAcihQ3CTOwCuFeqQ1QFV7tipnn7azc21IN9IznqMXCQVrQamwpVQ==","signatures":[{"sig":"MEQCIBR1JZJnTcO80XEGbLXsPaD1FdkLQA2u++ZGRe+BOLJXAiA8LKagneivHJkJOkaLLJQ7zV2bc1oiCgor3YcczoXbtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80015953},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d6bab4a75037f58a52375d2e18aa3721e86ad019","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.331_1781159596466_0.3963266893228572","host":"s3://npm-registry-packages-npm-production"}},"2026.3.332":{"name":"skykoi","version":"2026.3.332","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.332","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8afd1337c312d65c52e3f54a19821cd0b7237680","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.332.tgz","fileCount":2858,"integrity":"sha512-FEterw7Bq2xXW7uQxUWHiChhwnkgNCWXMHmm3Q+Wnmq+afyy8WPzVz2xFKBuzd7iOH/1Ra4GkE1WQCmMVxJCEw==","signatures":[{"sig":"MEQCIBwbgmKg5tXEdHAIz9wfqzb/pFtYSjjCX059+czGRK3QAiBfIJHQ2r8EePeERte4n/N0C4RuJBxLeLXtfQ2ODewzag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80018639},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"b46141514b3ba9b97e21fdc99807fcbc5e245a03","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.332_1781160976846_0.8716039820387458","host":"s3://npm-registry-packages-npm-production"}},"2026.3.333":{"name":"skykoi","version":"2026.3.333","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.333","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2621a99803967586b2236b35791c4a988c2391dc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.333.tgz","fileCount":2858,"integrity":"sha512-2nwtYOWeI8GCni+VTANLpMyYMGoaxUiglKnDsyEGvLehZv0DwIV2JyaiLO2tCPQLFWJbcF0wVWL2x6gl4mEWaw==","signatures":[{"sig":"MEUCIAqYhO6Np3Fqf2gcnIDEeN+4wf0/Zr0k/JUKyCR5dsAeAiEAqZeq7kE0QDXcPOSg8uAIKBjx14U8oVaANixZNOmPVTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80015546},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1904528a1ab9bed82f4e79891a6060afd191ee81","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.333_1781162918233_0.04152390547549589","host":"s3://npm-registry-packages-npm-production"}},"2026.3.334":{"name":"skykoi","version":"2026.3.334","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.334","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"becb2d7248a4c927368381a69f928236b34aaa93","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.334.tgz","fileCount":2857,"integrity":"sha512-ZL8kNkpE7SpRqTPYYH5lQaCwzt4tNEBNmq4t3RE7R6P2qryqXJU5/OUUxstWfznlMoEQ8sjye7WLjVFLdOsD5w==","signatures":[{"sig":"MEUCIQCmrLKLo7S0mJo6MQ/AWGR/U6YmqQnrPFD7gRk18jiGkwIgbT5nAlewqojLj4uvyKMBUk3E6MR4xuL42cwe9Bgam3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80008670},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"0d9535dd2955f1246b73e4a3d2d7daace4a5e98c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.334_1781200061418_0.23513386070539544","host":"s3://npm-registry-packages-npm-production"}},"2026.3.335":{"name":"skykoi","version":"2026.3.335","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.335","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9c071c77902cead71ab4f1a5f32b4e7e52214a06","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.335.tgz","fileCount":2857,"integrity":"sha512-6+jW3XL/fUQT8dRWlkT660zWW3HLegPzArpHh4hpmSOILd7N/PzdtadSqRFaOJgJ4xJLKSoLwvzxGc146y+ipQ==","signatures":[{"sig":"MEYCIQDwJQEcEYKCSYC99hc5GvwbiWnrpYdt54n+UM37eaFsHgIhALD4doyV0hoRTFukmfVjC5taq6qWyGPWDcWBSFysmMgG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80010521},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"dad1d36dad0d9aec743919a4533f9339d687febd","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.335_1781203034202_0.7545575982503132","host":"s3://npm-registry-packages-npm-production"}},"2026.3.336":{"name":"skykoi","version":"2026.3.336","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.336","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9b30be069fce4afb650f2ff6f1894ac9f3b4cd40","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.336.tgz","fileCount":2857,"integrity":"sha512-USgFlDxTl3tXnpWJl9YZYZMyUCiMgiZbBhYrsgbmslVbsbZV2lTk7wTytbWE0gwKG6vMg9Y8bN2x41DDW+PyDg==","signatures":[{"sig":"MEUCIBnwiyAXImdH3kcPR/Aak7tNnAj2lEejB2ffFiZAGhxuAiEAq8BGjPVd+0XlSm1dIX2hNn159t8Hxi5YVYsA14MNV/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80013165},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"45ad915f5fc4105a79782dcd79a95f653c5f85d4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.336_1781203448008_0.7054920864166527","host":"s3://npm-registry-packages-npm-production"}},"2026.3.337":{"name":"skykoi","version":"2026.3.337","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.337","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9e6a24caeea193d7d31f0385be6884492460172a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.337.tgz","fileCount":2857,"integrity":"sha512-jZT9cHIRJCxg+AZ5t/VyezzugjfO0hAHiVuSrPqm8OUFMsuKiCsyGqfuI/4KNv47BnhCf8or3QSPRUUiIsn/hg==","signatures":[{"sig":"MEUCIQCaR0Jc2vfd8jI2GnrVp7YCbzIlTfXwsOXCnUFF8FD+3QIgBCQ0GzI97B4UxhoF6wSaOkM6o4kjJsfVOb4iFqwIR0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80017884},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"5779944b3874646f9b3163652ecfab66374b342c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.337_1781206203830_0.15663620771140963","host":"s3://npm-registry-packages-npm-production"}},"2026.3.338":{"name":"skykoi","version":"2026.3.338","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.338","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a21ffcfa066bbf8ccc9cfc9e0cd793bf618b87ea","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.338.tgz","fileCount":2857,"integrity":"sha512-IyErigpyORGp3za7EX2mUb6jFN15yJDaZKqX16GlDe26+LGaJA+RfDlJPewCZWbSi+KqsYdNiNAhvK8yfA9aqw==","signatures":[{"sig":"MEUCIAwuSWPjKcQ5OsQJkeyQUqLv00YOT/xjmbc1aWA//o+mAiEA8Jz/IeyvjjUf4taGy89v1OkqjJbrLd2XEYfGI861eZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80028835},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"e376174ac16f01bb98eb641434b5846f23402654","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.338_1781325595974_0.9645109270029952","host":"s3://npm-registry-packages-npm-production"}},"2026.3.339":{"name":"skykoi","version":"2026.3.339","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.339","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f5904834348731fa7ff86dbf99cda7848dfbf0a7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.339.tgz","fileCount":2857,"integrity":"sha512-dlJkf/Ve9OhQD6SG4Czgz6yr8ql5vd/hsE4ZtLXpkWmUk4xamdB6yavHC2WGJW1vzVRGabomhInoRqlNibT/UA==","signatures":[{"sig":"MEQCIF5VOOpTH28YeGhgV98fxVgEcH+rZbpzY4AvBKGCtFpXAiA0yhgJBYZMHRlTPB3/P+EIjgD4VbTHdclwLu6UxQRdjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80031627},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"192ba1ef4c546f75ecdbeefe87b78fa9af51d964","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.339_1781331132278_0.6752320463615717","host":"s3://npm-registry-packages-npm-production"}},"2026.3.340":{"name":"skykoi","version":"2026.3.340","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.340","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"dccc5604d433ec4244fb676c77643739d5778e5e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.340.tgz","fileCount":2857,"integrity":"sha512-rNCmUZrFMHvi0+z7xLO8Ogw2b6bDd4uaL8UXwc5nBzk0n74gS/z/HqEvAJvkDMu+rZFgktd0Zs3ntFsXu9asvw==","signatures":[{"sig":"MEYCIQCqNoTWdHZogAtedwuo9b5yHNL0mri5zXFN8/ikr8XKcgIhANxWL7xdMeD/Ls5B9j9tN984Pl17ptxBQJIsLdmMhUU6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80033821},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"7f71af80a9e4d1c16d414b4595473cb1623736a9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.340_1781334687240_0.6636450920005978","host":"s3://npm-registry-packages-npm-production"}},"2026.3.341":{"name":"skykoi","version":"2026.3.341","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.341","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"30bf664062e4fe48ee36e95c032c8a9c4d31f52f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.341.tgz","fileCount":2857,"integrity":"sha512-WtoeFh6I/2f1Cdu71TLP/BsUDhhAddbbRmHqXUKSL/RS/ZCWWQRMO7kuyE/5kzI7nstfAFF0gSXp5LCwWIhfWA==","signatures":[{"sig":"MEUCIQC6Hk4WsD/qgJjIOHZmToBj3vnBk1ULdL/rXUHSHZMn+gIgVI/BZBvwYxiM+Q1UQiJcSwiLx65BbIyNYXlz06zPa4A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80034596},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8926da27178d7bd03a5b19a9392104649fcf2ca4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.341_1781336401843_0.6348207912174171","host":"s3://npm-registry-packages-npm-production"}},"2026.3.342":{"name":"skykoi","version":"2026.3.342","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.342","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"5099b70ab0120df83d7f60ce72d7aa3c999193bc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.342.tgz","fileCount":2858,"integrity":"sha512-zu7cehdVBzVvLyfcRLxFI1sD9b7dzWReYYxMrA3kdCNO+lTpvDtNn081q9HVe37+6TT2lCNiJqBH+6ZjYtPsNg==","signatures":[{"sig":"MEUCIC6T71VXzARFEl4tIC/L+lyruZVzxB8ds30xLqzwZJAgAiEAhzVflEFwWBHWk0Cq9SLXYEndJgthPJuzDsapGRoZmVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80059491},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"9a2ebed86b95822700229a347c86ac264ec7565a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.342_1781892875191_0.3653103433636462","host":"s3://npm-registry-packages-npm-production"}},"2026.3.343":{"name":"skykoi","version":"2026.3.343","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.343","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"7b53f8a96ff6fece4b6273aefd1b70aa28634697","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.343.tgz","fileCount":2858,"integrity":"sha512-8nijguPK/6uThTfaXHp38910I+1qQeEYbGwU0GZQKCXCYquj0DFmB+c3cmBnWPv7pzNVntGbilmd55/dCZMPnQ==","signatures":[{"sig":"MEQCIDS9IEca4ipBWoujk18waOYSozRNaLtVYnAOvh/woYNvAiAnFyIdqJEuTlzMX6NdITrLZNhjt9/41JwEG7GjASvT6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80065042},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"9a2ebed86b95822700229a347c86ac264ec7565a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.343_1781893784874_0.787955454611146","host":"s3://npm-registry-packages-npm-production"}},"2026.3.344":{"name":"skykoi","version":"2026.3.344","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.344","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"bdf064e35ba154c8d6619a00d0ec71ab24877562","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.344.tgz","fileCount":2858,"integrity":"sha512-fFaAeNiRykV13dsudUJquttNTRAzDAyTioDTMVBpUw0z6wqzdyUGRRncLvXiImkuSReIUZ5vs/bR6QvkhaFNVg==","signatures":[{"sig":"MEYCIQDXKMlO7+4uvRADSKgt/NeU9wyjxutHXRrSJ9s3lcBeFQIhAMk+Rk/Oyqimr5IcKcrvl7OG1mbQdXBxjnBz3VEFJ0oi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80066399},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8c0d723debcefbc7fc77697ad2b23cb1242f4d7a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.344_1781917305042_0.08249649458657071","host":"s3://npm-registry-packages-npm-production"}},"2026.3.345":{"name":"skykoi","version":"2026.3.345","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.345","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"50e27b76818196e6a6dc39f5ea8010fcc716098f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.345.tgz","fileCount":2858,"integrity":"sha512-jVmBmmkiFf7rT/32vfb4zQ+RpZuzUO8pv3pCWQH84g0VNZL65Ilf6ROhnWU6ZIPMZ3vZmX4P6X5BWP5LPrCl7g==","signatures":[{"sig":"MEYCIQDC3Cdustw0xPR2dfa+3B2D9m/05qMd2DMCImywwimCfQIhAJz5iv/B07muSoiuL9FiRbQKmboKJdi7c73aMKNi+Yk0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80067400},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8116fef3bce7d5d238e53eb9f3e71e3969d85ed4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.345_1781922930773_0.39096548207918036","host":"s3://npm-registry-packages-npm-production"}},"2026.3.346":{"name":"skykoi","version":"2026.3.346","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.346","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"52ad9281d9de86eab0b493e643b49683e53d325a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.346.tgz","fileCount":2858,"integrity":"sha512-sw5TiSUIIqnF2RVOLTlVrPS/TT8IrWHJP2cC/JuQPP4GZylncWAl/yraqFJ5oAOD/Dojdj7hxivbHY8kLeSAtQ==","signatures":[{"sig":"MEQCIFiAyhuY5C/OXY+lUJNXys5AlUoidrkPly1f3GSELloQAiAzwyDZPrs7who175jj8kJrZlRMns9qfWhYwwaINxqigg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80067546},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"6e0a9e692729e4ac0d9224e9fc2329eb1260aa66","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.346_1781987523947_0.23324446009848865","host":"s3://npm-registry-packages-npm-production"}},"2026.3.347":{"name":"skykoi","version":"2026.3.347","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.347","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"924ab32087a286be8251e74303734b36bb9440df","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.347.tgz","fileCount":2858,"integrity":"sha512-+4C/J1dSC/uyCSmeRVjB/Qxj++6qMkPXo+pwcD6zhmRmIlYUwnS4odJT0O+1nzA35L2FPoR95Hdv4I8XLLcuZQ==","signatures":[{"sig":"MEYCIQCibX7N57fT0JkFiAs9oPQd1yDQDUw6Pq8lFpjlCZTX2AIhAIdDL8CeYTXjZL2Snu0s9nVSOO/OJF67ttxSY9ROaQqq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80068696},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1273f52d1c76384e8047c1ab6bdb43ebdaea3ba8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.347_1781988407530_0.06856144803450714","host":"s3://npm-registry-packages-npm-production"}},"2026.3.348":{"name":"skykoi","version":"2026.3.348","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.348","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b6478c781b5c68e1493e55dea2f671531b94eb65","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.348.tgz","fileCount":2858,"integrity":"sha512-9Z/YPAhnD+MOV1x8cpdoyZ9cuXWdFn5Uu4D/jS1c8pK1rygW1URLCC3X5m000KWV4TxyLv4hjs8dblx8UNPXrQ==","signatures":[{"sig":"MEUCIFxSHktNsJU/ncDE3VSy7onPa8d0IrwyRQcmangvMy42AiEAmIHcA0DxHA9D2+duYMjAO/F+zBqf+9y88VT3sczxGHs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80069512},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"ab39c28398013cb8f0dab02d53310d7520b7fcb5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.348_1781989916598_0.0012513485778917754","host":"s3://npm-registry-packages-npm-production"}},"2026.3.349":{"name":"skykoi","version":"2026.3.349","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.349","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ec0bfb898b260b92ae58909888cbcfcad8608a5d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.349.tgz","fileCount":2860,"integrity":"sha512-P5Su9gfCf6x/p1P+M/O2wNwGWQkkXlYHXIhmXTbAxUTaqSdoV9zXb05Onzx/pxFfpi8cLfyZLq7y7QTICgC5lQ==","signatures":[{"sig":"MEUCIQCnlrha4hAOfuojuDobVGmHUlatBXXspVGCmBtsrHshMAIgUwcQb+VD2sF/z0FXimcSoIECV60knIXM0nsIQcFFh/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80079732},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8b715c81e3dc58989509e5f1c5b859eb685aebfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.349_1782352346227_0.4176983033822024","host":"s3://npm-registry-packages-npm-production"}},"2026.3.350":{"name":"skykoi","version":"2026.3.350","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.350","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3c3876272cb9a5ccb1b1d57159bb5e49ecccc90a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.350.tgz","fileCount":2861,"integrity":"sha512-3rA7Luc2gikariXlBEe69sy2ExlOPESFYnDmey1X7trrQt3BcbDVSAfMxQQmnOr8FTLEnfi2fxXaLWyhtyFnLg==","signatures":[{"sig":"MEYCIQCArU5Qaj/Yx2a73hBvBSHJRC04kx4R4dmQYuG+UDpyzQIhAJxuXlcodTFBE7vShgTKow6RLWi0GvbmVzHhNsGihhH5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80082448},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8b715c81e3dc58989509e5f1c5b859eb685aebfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.350_1782357150670_0.8072495369726675","host":"s3://npm-registry-packages-npm-production"}},"2026.3.351":{"name":"skykoi","version":"2026.3.351","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.351","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b9732a0fd596f43473e1a745becf2f73c7fea68c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.351.tgz","fileCount":2861,"integrity":"sha512-EFrJ6kmKrAavegnT3V8bmhux5lwMRogxNx3Kg0t/BcyG8Dag4phBY32wq2pi4VLr26YGWoSMGUBOHTUUuhCsyQ==","signatures":[{"sig":"MEUCIB4+1hfKoHtuFt8jRt1Kmogx6Tfr/4IT6L4DCYW+UUPkAiEAlMVHG9K93ojZoU0ahx5NWlvJHQhRB1uO3U4pGWlaN7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80083892},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8b715c81e3dc58989509e5f1c5b859eb685aebfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.351_1782357905626_0.576100926170247","host":"s3://npm-registry-packages-npm-production"}},"2026.3.352":{"name":"skykoi","version":"2026.3.352","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.352","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9c0104e6e59ad1ba0f1ab5aef22cdc80cf93e8c0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.352.tgz","fileCount":2861,"integrity":"sha512-EEXWkEnGWs9N1woZ4qDgbgro+ifSzBQ2PIE2tHov6r0n56FHnwpAFssX3X3oMcxDvoyOA1X3rC0Z1GzdEnItJg==","signatures":[{"sig":"MEQCIGRPpV28Fn+4jUh7DyaR9tUhFABlYLQUDe1Xf5YDaSVPAiAvL7ceZ/rbYjkYUEpjjdIHQnnb4IGZYcGO2wW1HXCtjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80085590},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8b715c81e3dc58989509e5f1c5b859eb685aebfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.352_1782358086499_0.3972894839747052","host":"s3://npm-registry-packages-npm-production"}},"2026.3.353":{"name":"skykoi","version":"2026.3.353","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.353","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"55ff5efe771d0e4327582925cee38fcf280b651b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.353.tgz","fileCount":2861,"integrity":"sha512-XLwj2VKWOM+LTv+2eAXmm3CL968HFpptEqf/9Si3+JgJQcQxEga+k6x+VRkayCs2sYPRl7/9DF7Rd9CbABeAjw==","signatures":[{"sig":"MEUCIHqMX9Y5SWSLd+KcpuZHmPdyzUCXOKyvMiIz5zIq+m9AAiEAm/cgUTkWUaDSwHiLvXK9y3gDRialI7RhkErELmO04JA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80085620},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8b715c81e3dc58989509e5f1c5b859eb685aebfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.353_1782358465248_0.7373392956542","host":"s3://npm-registry-packages-npm-production"}},"2026.3.354":{"name":"skykoi","version":"2026.3.354","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.354","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"1d047c8fcad35f2a09caf5a3249e17e1861b2d38","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.354.tgz","fileCount":2861,"integrity":"sha512-eBADpjn96UqE4FbwcGIJdEpBOpgbeLpTSBLFOTsw8KKJJbCxHsnngF6evQf+mvYSYLHrTqDuTSNme3F6Nzc1sw==","signatures":[{"sig":"MEUCIHkiWfEjtceWkoRMFRkTRrIi4j5BZ2jsIT8380zTwNnFAiEAikHoltlyFeEig/gn2ohKO/EtcYMsu3gOTKPHpxiLIoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80085693},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8b715c81e3dc58989509e5f1c5b859eb685aebfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.354_1782358956192_0.9588741586932077","host":"s3://npm-registry-packages-npm-production"}},"2026.3.355":{"name":"skykoi","version":"2026.3.355","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.355","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"dc9551a5742a66f9c77a0cb328f2944a3ff5e7cf","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.355.tgz","fileCount":2861,"integrity":"sha512-85ayutKYWpV7ZJpCUTg+EtYodTn1YY+mVQnOKARJMPfMQgm9kC6kFJ1YOhRsa6G2Qa3ug48lFHB4r2OUWykZxQ==","signatures":[{"sig":"MEUCIQDAolW1cZLCEn7muerhEreI6z8lHsKGr7LvEna9xrjxrgIgPxmxBxXBIHo41VoiYKl7jkO4XvhFkFggil0fj5nUxyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80086537},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8b715c81e3dc58989509e5f1c5b859eb685aebfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.355_1782361150369_0.5201442656975743","host":"s3://npm-registry-packages-npm-production"}},"2026.3.356":{"name":"skykoi","version":"2026.3.356","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.356","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"63b06212528096dc1d8bb81e45f0d44c50485a10","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.356.tgz","fileCount":2861,"integrity":"sha512-ALKF80wgcDPRd605nq58/NAiJhZpc6pmlqTx3Jgzy60he9oHi3ydb2uyfOpZuifj+IlPIsXAAoS+l8Qt08Q0lw==","signatures":[{"sig":"MEQCIHuSJAapnt11Yp6j8avLAEjMDcterPOCEKdYpSO66VNFAiALwrSKZvQ+W/NzAs6LBurUGj6HG6ljt2FHsYaFYd96sA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80088531},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8b715c81e3dc58989509e5f1c5b859eb685aebfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.356_1782362795370_0.80636078756597","host":"s3://npm-registry-packages-npm-production"}},"2026.3.357":{"name":"skykoi","version":"2026.3.357","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.357","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"4f66a977464e75eef1300857b65593ee75ee4ef6","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.357.tgz","fileCount":2862,"integrity":"sha512-1XCvUP7y330Mk+8Y+BKNx+h+e0Gl1/zdZ6FXDsV0O8m7DnKVJdRnjvMyVFB1sFe1Xa2DxYPtzvuqthq1XVNYYQ==","signatures":[{"sig":"MEUCIGyEmZIKmYzuj29mRmFmGJ8yC8eVDwuc3JmK2+GF5ViHAiEAmm142aWY4zvb2O4NJt6/PIdzlYRxIYoaGTFs1LzrT/g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80117047},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8b715c81e3dc58989509e5f1c5b859eb685aebfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.357_1782369276629_0.8859455406914951","host":"s3://npm-registry-packages-npm-production"}},"2026.3.358":{"name":"skykoi","version":"2026.3.358","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.358","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e609d70da1b4dc06ec3a0617c599c1e9f3b82d80","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.358.tgz","fileCount":2868,"integrity":"sha512-5XR6AI4IIYDxe2GdZpBSUpqiyglYFJhZ164ha006fm4VqlanL7tIjd2tXmWYxNplrB3PQ/tBlRYtvxWDGHm+pw==","signatures":[{"sig":"MEUCIDFo9G3hF/JG5mdzrY3iK2CmuSjvJWBzfFDZYrV4g9fVAiEAnNmJdxk9Cb24ef15IFGoRSusa+R3SWfq41shoQArq3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80119991},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8b715c81e3dc58989509e5f1c5b859eb685aebfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.358_1782369400118_0.5933049311526428","host":"s3://npm-registry-packages-npm-production"}},"2026.3.359":{"name":"skykoi","version":"2026.3.359","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.359","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e3070d359f9de4134f56cb3ab52a17468cdc5054","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.359.tgz","fileCount":2870,"integrity":"sha512-W8SiVUYLOutrFM++PngtYFgFDU5lQxRpeQRvYAyCNq7IbiIGIpBWdLb6YINVFQQwK2nLYIrw93SZdfTZ4rtoqA==","signatures":[{"sig":"MEYCIQDIhCZ7CLppWd3VNOaQz661Qx24RXcMOHFn9W1aHNGT2QIhANhooM+ISmCUwVwDBoWLYBzqdR9L/9MDvkH3zhoMFqiY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80127637},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"f8d2662797bd23f3b36d15eff14031ee9e3620ee","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.359_1782374065344_0.8475437796794629","host":"s3://npm-registry-packages-npm-production"}},"2026.3.360":{"name":"skykoi","version":"2026.3.360","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.360","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d78895f52198c24b3bc17aa4ced133662cb253d4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.360.tgz","fileCount":2870,"integrity":"sha512-UxcJoNmi5NfTKFeLUAGHNASHNatbku9J5EM5cgaNoUCyZGL5VADAll4mg+2GtZJyzfvdZxEksMESm8P8lco1dA==","signatures":[{"sig":"MEQCIGxD2w1p79UX8u1kM/EObiQ2mplhXNGfs1ysY6yoEK7dAiB4R6Z6Utn0OCA31HO2Xg3qU+i8GEAyWUmT2+xAf7/oRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80127889},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"c0309588cf00f440ec9eea0f194b99159afc6fba","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.360_1782374277015_0.8773892513272654","host":"s3://npm-registry-packages-npm-production"}},"2026.3.361":{"name":"skykoi","version":"2026.3.361","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.361","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a3342b322fa12d4485a50344c5748e22139b6bc2","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.361.tgz","fileCount":2876,"integrity":"sha512-o3Vb893JtjhisRkqHU2WV3ceL3uSJX9JQbnTOguEAK97p1r3BJuVBWRoL00unZOaXm/VHraNIQH+12ctOBz6wQ==","signatures":[{"sig":"MEUCIQCoQl3SPBbi865itc2J8JvD7jcu8OIhBvKA+uL9r/sMfQIgOa577Bouf2K480I2jDgWtzY+vpniGAWDrmxpCfcMj4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80150820},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"14c65670c826e62a10c09c253dc5731bf59cd686","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.361_1782376210042_0.9085219176994759","host":"s3://npm-registry-packages-npm-production"}},"2026.3.362":{"name":"skykoi","version":"2026.3.362","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.362","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f061b1ba889dc719d06df2ba20f78a75447c1cbd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.362.tgz","fileCount":2876,"integrity":"sha512-wJJ7KBl+Lhx9Ww/kBKcckUSE0SwG7IZKDku98bXOwBOpjI/4aUf4Sz/F/3CZC40dOQFC0txWWhpkCxPxmVZQCw==","signatures":[{"sig":"MEUCIQC3pzlZALoSChU1DpRS4pKX/5e4r1hb7olcYQ6XDxLcNgIgAy6WgS7qDZEJUEyl/JowDu1fJwQeG0EuPQPAnIFOAB8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80148359},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.362_1782377350174_0.2549622682565329","host":"s3://npm-registry-packages-npm-production"}},"2026.3.363":{"name":"skykoi","version":"2026.3.363","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.363","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a14b66722d589c20c74e84d6626bd59da1289ee1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.363.tgz","fileCount":2877,"integrity":"sha512-KMzhmtXugMvk10YGGrdyL9sTHcy2vp4nmS6hXKF+SKT+OXZQIfyZbQzWN93QbPscFR/y7ZxEkwcmIjFsXpg6Zw==","signatures":[{"sig":"MEUCIH6k0pdQieMIbdJqCNwFr9XPfOpM/b2RgaqTTRZHhURMAiEAlR0cXvmAesPbT+/rnEO0FYbKi/VNGtXOsJBzLHi4Tyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80157037},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.363_1782378135482_0.9703643130415323","host":"s3://npm-registry-packages-npm-production"}},"2026.3.364":{"name":"skykoi","version":"2026.3.364","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.364","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"1132a5c607d081265d09cd977ddb688a494646a8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.364.tgz","fileCount":2877,"integrity":"sha512-gDQFzEYMCUvevwo6b0YL7oakdxrZaHr57O1Ej0xXTa92GatjH9+05KoeYxFeKyDY3b4drkPCKdtOo0/s4/WabA==","signatures":[{"sig":"MEQCIEy8s/9SCgYYHm5YxBM4ausNcIXhQYOwphbmSc9B89qJAiBUPWoDtynUPl9srsuPqUYl6NLA+Hil2+uofRhkGW21Uw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80157110},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.364_1782378323142_0.45506848316427817","host":"s3://npm-registry-packages-npm-production"}},"2026.3.365":{"name":"skykoi","version":"2026.3.365","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.365","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"46163b6726d545c924d12ac11111172d9a83ccd3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.365.tgz","fileCount":2877,"integrity":"sha512-ia0h8eG3+aFymvvmeqFxPfBF5/CR4i2PAflsTQ84QEUHVQSiuGgFQb3QO7p4MehAC2hbRRnHky+BkNHeBoC+pA==","signatures":[{"sig":"MEUCIQCzEZfylvginHeQBKiLdoXEgy23VRLLO3DBsNrx6PXTEwIgf6DqSH73nbFR8AGlhnMYSlQljcRE3vscdQIVyxYe/7Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80159006},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.365_1782379361294_0.9026617278659035","host":"s3://npm-registry-packages-npm-production"}},"2026.3.366":{"name":"skykoi","version":"2026.3.366","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.366","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"42e55480296189bcd2d2c6487dd3b9f3791c4c73","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.366.tgz","fileCount":2878,"integrity":"sha512-ZT2PyqhcWeP7RVzEo9nTL5rfU3ZH02eOOZeJIcdXEj2CBuF+hJhsZIRrpYdEP68uNANaaklCMDxWsXXJwfMngA==","signatures":[{"sig":"MEYCIQCu/w+o1yk5U5LUgxqncxO8kCAieX/XcdRetS/bzd+XNgIhALbk0NkH5BQU9ci/OiTnmups1T588GekwdPCbkacZNiv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80163840},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.366_1782379862715_0.23745849120415263","host":"s3://npm-registry-packages-npm-production"}},"2026.3.367":{"name":"skykoi","version":"2026.3.367","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.367","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3f8d5c131f32571e048025164bf99e8bbe7fd041","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.367.tgz","fileCount":2878,"integrity":"sha512-mOKojMZrJJhxiHxZO35foL9DoFz6RgqNRy7R3Rz1hG9b1KgJHrQSq5nDQZMQ6b3pnzxNgelbgKNgmLxWDJeFAA==","signatures":[{"sig":"MEYCIQDt2R5w4jtyMs+xhxqkE7tMUA9Rzmqm54LMau33SA2HiAIhANZ0qKvlR400gd3rsSECeaZo2ctsAriBlkQeeB2rgzaq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80163777},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.367_1782380685812_0.37024069835144546","host":"s3://npm-registry-packages-npm-production"}},"2026.3.368":{"name":"skykoi","version":"2026.3.368","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.368","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a5ca7d736586fcbf7d5941fa64fd7478e1022493","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.368.tgz","fileCount":2878,"integrity":"sha512-61nXgsE3k8lRRf0QOCulzH0348sR8KZnnSXXknoTApaCc119oKZRYj+ln4qNpNI9ZDrQu8R/4MG0AmTZ4vfdcQ==","signatures":[{"sig":"MEUCIBj0Sjm0HV1CI57oEUo/faOgO06RFYXwbuh3YKxE6rDjAiEAnnKQNcTyAe8yM7JTy9T5RqEZyKk7IpZSR2vBQ4SclE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80162318},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.368_1782381977493_0.75496225719628","host":"s3://npm-registry-packages-npm-production"}},"2026.3.369":{"name":"skykoi","version":"2026.3.369","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.369","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3c91ac11d9af60d07a4e306c279dca68b80d2692","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.369.tgz","fileCount":2878,"integrity":"sha512-qXI3b6fHI0H2x620HJZmKi2jSC/igZXAmB24hmq4Srio7yRErAxQTqw5OT57okc2m3eMQ/aS0XuZRUvB1DOf/Q==","signatures":[{"sig":"MEUCIQDbQtWRKLsgES23PhtB7zl4OO6RGLUH2n/Ikh5xyjbOmQIgPxvu1Nzs46fI4yKta2jCMTqitYaQK52EFQlwZyVuaWQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80162342},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.369_1782382342084_0.6636156187816871","host":"s3://npm-registry-packages-npm-production"}},"2026.3.370":{"name":"skykoi","version":"2026.3.370","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.370","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ed9c3d2302a4f7e08fb06d47483930019db97eac","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.370.tgz","fileCount":2878,"integrity":"sha512-OQICszpUcW/kdG0f4/sC9AjEE5ulHuSqORIld3azyoO1VUyIHef0fEBBHh8N16BBQRc/9fjp6FK/iNxQEgieGw==","signatures":[{"sig":"MEYCIQDY7QzUCb23MvrZktJQRD4OYIb0sGlUXlDRYu+rU/cSHwIhALI/lFJZ4G1Gp95+zQ3QOMVcchduKC6QW24AT6m0e3WD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80162358},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.370_1782382858245_0.24062015039994922","host":"s3://npm-registry-packages-npm-production"}},"2026.3.371":{"name":"skykoi","version":"2026.3.371","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.371","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"33b1b0dfe18bf18ecaa8610e775f2fde91e053fb","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.371.tgz","fileCount":2878,"integrity":"sha512-oDiOwj9vD9n17ZcjgXjPsjd6djCsU2ZLER64lqJDJ1KWm3cU5pQLmUqOxKPUIY3SviatCbxRf5w1M38GuLFf2g==","signatures":[{"sig":"MEQCIBnqi7RDK0wi+TXJ3eTJ2d9TK5UgbVorYiVCnHcWA6meAiA5x7Iw4DtaxeUMclgfAOoof4kw5WYKXRo/hmTg4sAjag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80162322},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.371_1782382976535_0.9387924673818722","host":"s3://npm-registry-packages-npm-production"}},"2026.3.372":{"name":"skykoi","version":"2026.3.372","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.372","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c17ad7ae4c95cb804f22d4d66765c8fddc65f0ae","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.372.tgz","fileCount":2878,"integrity":"sha512-Go4/e6H9krOenCY51i6crMZLz6ZTE0mZ1otPbOmVoNkW4ozdD5UYTzmVrM/S7D8kfwYLpyVDILnzQeDxKa+kIA==","signatures":[{"sig":"MEYCIQCbZXcOdCS1nCNrIa5XFcmIja3VQ67OPvGL15of8uz8kAIhAIY4q77XpBgxAMcGY170iQ+ECTGScMIUMzW8M3LLxjlH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80163993},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.372_1782383080926_0.5830531627907627","host":"s3://npm-registry-packages-npm-production"}},"2026.3.373":{"name":"skykoi","version":"2026.3.373","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.373","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"1aa2524799dd0a6fae3a33d50554243db9a101cd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.373.tgz","fileCount":2878,"integrity":"sha512-vEOXD/r/Yu7F3jFtet52ycV7RdoBKQ5m+PjlVZUPpUsoK/J6NX8dunOrTKgLqIjJpLIzhSg4CB1OWW5qAoVTVw==","signatures":[{"sig":"MEUCIClrL7RNlD9d8dzoqET3d5Q8IGrpha+0omdzFa/y+kwHAiEA36j8HuZ3pczF9e3kIpyAQPq/mgsYGKE3EXj2Pv6RAsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80163997},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.373_1782383231486_0.3522989651256616","host":"s3://npm-registry-packages-npm-production"}},"2026.3.374":{"name":"skykoi","version":"2026.3.374","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.374","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"1e832ec286166e825dbe520f77158acd0eb9577f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.374.tgz","fileCount":2881,"integrity":"sha512-C74VFzS311UFhzQLCHbuDMk8sh9CNmtbcr/Qx9C7P8knVok9aHM1SoaUV+Bc/xlOrajJlpaaw10GD76ExtB+Uw==","signatures":[{"sig":"MEYCIQDrOo3aFbkm0Ez/5NZt+pAnUPVmiD+TdkJ9qYzjZJCm4QIhAKLVuM0eNFF3UBAbbzO74xjnlYOBy3MkhdKN6E7nB96H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80174572},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.374_1782414943120_0.25973877151268465","host":"s3://npm-registry-packages-npm-production"}},"2026.3.375":{"name":"skykoi","version":"2026.3.375","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.375","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"07cbea7e81671e2412a405c74207893d3487d22d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.375.tgz","fileCount":2881,"integrity":"sha512-7LDOQEkNr/AIL2HL5dmC72o3bJp6DcOjQVD0mBDXDl2olgPi2z+R5soLbJbH9nX+Zr1pDkYO7ppj1p3sqWX8PA==","signatures":[{"sig":"MEUCIAb/r74o9Y4juut8EMR6iz9YsI17sC9voG4GnwbPiKQDAiEAh0V83Ys12JYIUCLzcrCbE70xqp1s3xXohu33y+36w6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80175663},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4bd60b7c1b294bb24b257d2f381ec929031df39c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.375_1782415578677_0.817843715696398","host":"s3://npm-registry-packages-npm-production"}},"2026.3.376":{"name":"skykoi","version":"2026.3.376","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.376","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3d20afd6ba388f33bd1dad696de7c60e8ae62244","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.376.tgz","fileCount":2881,"integrity":"sha512-qjKjIzXjpWn7Yao3Qn5tof0njZSzUJ73iyfRtIHvSvUU1pGJsPF8L8JDuMsBhZ1EVdqYP5TYBDuAOJFCCB4kZg==","signatures":[{"sig":"MEUCIF7bUVKNc6oZO9TXgoE9hdxVT9tcLX+uHh1L76BiOP6EAiEAi6p0ZzNhTj/gmjt8SInYZFvBYxYIrmtBfa3THpg1gx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80179308},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"187c980e3bcb453b1c1e714a9b1ad1683467a2bb","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.376_1782416568047_0.6845559409804123","host":"s3://npm-registry-packages-npm-production"}},"2026.3.377":{"name":"skykoi","version":"2026.3.377","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.377","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2702c77e12be98e50288e386bb3d3696b7a6367b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.377.tgz","fileCount":2881,"integrity":"sha512-3NCWqcgqK4DkQONtESnQsXx9HPHtQduSgR2pOpsSIn2p6RTCQlfJc/LzQFmwVKq5uMBOPRcSm98wm7nIsgZCLw==","signatures":[{"sig":"MEQCIDXfQb/7Ebn0mdmhjGHH/Ultg4oENZ5ZLPhWL8Ut+GJ7AiAIx2r6cLwWwjgCBLkf+XDmMimOusE2Vw26C5h7orNTJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80179841},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1f06ec7140ac56877fc59bd376ae3bdaace5272c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.377_1782423237098_0.15720215099489843","host":"s3://npm-registry-packages-npm-production"}},"2026.3.378":{"name":"skykoi","version":"2026.3.378","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.378","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"447b9c9fa214d0697a74ed196ad789808e45559e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.378.tgz","fileCount":2881,"integrity":"sha512-ez8I20WRo+PY4TWh1WmI0XN/Gpt43EGo3Ee+xNRTyMCUnW4OXbweCeisl2/J4j0VFpPYGhg3Hq+Tv9tU4T/RMg==","signatures":[{"sig":"MEUCIF+TCH535ESD+uHhPBhTN5wlg6FUuYnuuRCZ7dx85osMAiEA8NEWxv3EdMQLzyT+GlV/xZ34fQG7RqTjeV488rG8B3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80179100},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8a7c3d16f2d54c3c6b82c013d407ba81a71e31d6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.378_1782424228215_0.7701407696905229","host":"s3://npm-registry-packages-npm-production"}},"2026.3.379":{"name":"skykoi","version":"2026.3.379","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.379","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d9140abf034ca08b93cf62ff047dd1727482c3e5","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.379.tgz","fileCount":2908,"integrity":"sha512-uBg3tuKu8eShhteVPytGVjWE3ysTI9gdthYAY6VGhlHo7RfT8HDa3i5PGwruUHAmhkm1Og9tSDDixmPnlqkjHg==","signatures":[{"sig":"MEYCIQDIJmtSYFIGapeIbT1tm6jZxbh6BIfSJGR6m7CB2oGgMAIhAMV9BDpkombc7Wy7M32LKNxloBRipoLJlThE56r3qzUa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80499851},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"5a28dcfcc1fe0d8af0eca62d0c4d66611c1bbc76","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.379_1783113520002_0.4299029858766208","host":"s3://npm-registry-packages-npm-production"}},"2026.3.380":{"name":"skykoi","version":"2026.3.380","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.380","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f6ca086425b112c277226f75ce91593f69329d23","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.380.tgz","fileCount":2909,"integrity":"sha512-NcfdsU2X/XUveIULlhz+oUkDCUb3EMfzSvQpuD7Lmv0dumJyAf0mGzQ+YRfIroFzK0VZU8rXJmrC/+sYzrWKLQ==","signatures":[{"sig":"MEUCIBOq/rnOgqVrj2PydySK80q5+8HAHz6hKHVXZ3w35hzYAiEAx3rFLMUFhJw795TwQ0jUVqhLukdfCcRoIVPebFblhFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80551860},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d1ff3945bd9625818ae99bf4fcbcfbbc2b4eb3ef","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.380_1783123916638_0.33636994901947803","host":"s3://npm-registry-packages-npm-production"}},"2026.3.381":{"name":"skykoi","version":"2026.3.381","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.381","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"fbc9244f7f932ea44a4ebef903650590dd35e852","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.381.tgz","fileCount":2909,"integrity":"sha512-KRd/5WIbBOUVJNXW4IscInYcqhH4Vm3jeLnig9QABaTBBKJpr1A8F2tY9ZPWQo2+R/FVBTRL0oX5i36Kj0d1Tg==","signatures":[{"sig":"MEQCIDFoPUR+6QCimx+l6rLkgz7Tn9QGXqW0J8HTrLYYmP2VAiA0tnaV+bq3bzFyXoxqv8VlD9g92P14DcUI/5tz4GSHcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80557031},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"24563d534b1eb61172d758368466cfedf458d6df","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.381_1783124960431_0.8674777457153455","host":"s3://npm-registry-packages-npm-production"}},"2026.3.382":{"name":"skykoi","version":"2026.3.382","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.382","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"04573c4353a901fe14f90ae37953cced5c7969f1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.382.tgz","fileCount":2909,"integrity":"sha512-3ylMm4jlVNgQ6rjtVpk7zNiV46XiPnDKvFDNwOhdt3Jee9Hs1fic2durWlmeJ6+nIq1KG+IbA/+eHF0q8EJOQQ==","signatures":[{"sig":"MEYCIQD1DKLHrWhm2lSWC5SOFj35De88AoMILZO2Bb/q5EK+KQIhAJ0PhZ3nowqcckJzIERAkWB1K9JOmqBUJhq2dvPZd8Rf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80565409},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"92a89a6bc383e5e25d2208bfa2aadfc0e4c8ed41","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.382_1783125559985_0.01174625303772725","host":"s3://npm-registry-packages-npm-production"}},"2026.3.383":{"name":"skykoi","version":"2026.3.383","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.383","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a82778bb8af639b8a3acf77788fcaf8436e0f4fc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.383.tgz","fileCount":2909,"integrity":"sha512-AKECNzrvHroZxpkjnegpy7EBHwxR8I8sPTEbDx47IWJYjToeB8JkIiVFLqWv1jSkLEGt+jlpIscCkgsBlGtrvw==","signatures":[{"sig":"MEYCIQC5MsGIMPUK7x/SM6fqXns/mBmMaaJsmUa7g5JcVtetcgIhAJLtN82k6W/xvEotTjgsBCAtDrxDslqK2Y8OGEu12hSx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80588581},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"db84242a373a6a32f61039b361dc1ea0a670dca8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.383_1783126558496_0.2979717432542135","host":"s3://npm-registry-packages-npm-production"}},"2026.3.384":{"name":"skykoi","version":"2026.3.384","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.384","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3cb452801ad5271b6a70e0b6bcbeb3f2605a98d4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.384.tgz","fileCount":2909,"integrity":"sha512-5UHJrX9Jd23IfvQ5QJyVHuZbIGn4CfuaFF9HR/LsZOFv6c2L3VpXGGfDZbY9KXbN5kr9YzWmjk6MkK6WG59a0g==","signatures":[{"sig":"MEYCIQCFfIE/hVgMCa8/BCJtMrJ6DRMdmjSIpLzHAQEsjYhVegIhAPZrswzBFAQNAnyZ7QO6FZNwz1pEhiz9ItZNFDDZ5fxc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80592653},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"469c6733b67e8ac63714df23b18fc373a6744929","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.384_1783142097674_0.6771687390577594","host":"s3://npm-registry-packages-npm-production"}},"2026.3.385":{"name":"skykoi","version":"2026.3.385","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.385","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"03959c448924055286dce9fe1b0a8a74d80588cf","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.385.tgz","fileCount":2909,"integrity":"sha512-lpYG5lSOXeLG3aobI/JM5X6wCbEtyYhWIX9rXObjG7rsSCTFKo42cEPw8y4FBHP4BES6I/gOdj0h9yekEXGB+g==","signatures":[{"sig":"MEYCIQD3UgDrBuD5C97gTvTK5XFgVd09+uJxQ1y4hGXLlJFdpwIhAIFobeKGNTSt26BKuIX0PrTLCqSB4i60jQZYBkKmV0UA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80594860},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8be16099089ae7979afcf270544c2a3b98ba01ef","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.385_1783142829924_0.0920903064319285","host":"s3://npm-registry-packages-npm-production"}},"2026.3.386":{"name":"skykoi","version":"2026.3.386","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.386","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"86bbdcfb5c8f352e490f99a01879447d97bcf288","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.386.tgz","fileCount":2909,"integrity":"sha512-T2Sxkj0lMP3+r3FzAqJVgQKSGHo4MgOqizFFLyxbNZp+PQHmbs6SRc7PO31poy0gArpqu9vkGmjOoCoHVIbQOg==","signatures":[{"sig":"MEQCICdTioO+i2XXZ0mUQRMM+IRzlm/Xlze0+I0rXD8pSs/fAiBcLNxSvBvITueZnp2Ew22FM1SWag9iA7T1QULQsiD6vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80596789},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"7bed84e93649610aaf37985e93feaf2a7d5b3b86","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.386_1783143531245_0.4273332755361541","host":"s3://npm-registry-packages-npm-production"}},"2026.3.387":{"name":"skykoi","version":"2026.3.387","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.387","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"867da27efe803a8108beefba51e61e940a3fee88","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.387.tgz","fileCount":2909,"integrity":"sha512-I/JqPnt6z6C6csM45KkbyI24472d4Ll3A7rWAYyQU+YoLnh8o4PCaO3uvirWoH01Vyv18jsX1I1TnqEdxp9bIw==","signatures":[{"sig":"MEUCIQD7TxdBQw53VG9iqvP69BdL9Iq3iOs2obCFgxZ7mAbsZgIgQ83lGz82nj+Op6th43THRy5me9JQLjRpROY9sRVjeBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80598656},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"3da965ac7a7ca2ea45d751cdb232bcf2f821b3f0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.387_1783144364558_0.05563495762286608","host":"s3://npm-registry-packages-npm-production"}},"2026.3.388":{"name":"skykoi","version":"2026.3.388","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.388","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"7b26c0c11f0a5c890e4382bcf9acbe845eadd7c9","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.388.tgz","fileCount":2909,"integrity":"sha512-aEOsqL1JpyCe74Lz1XDxtaVxZnwQuFtZBcf4k0gT2B8+wRgQpqTX5DcHuEoUD1cY9A0UrkTGHW3bXqPfMngCLw==","signatures":[{"sig":"MEUCIQDbZCprv81HQkRdDuvVhPWldzRo/5Y1nxQVDUbVX8OMcQIgNQqUYCq/NPrHwRu28vUwzzRgsCoBhcDooYyWURv/dlQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80600801},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"85e501fdf5cb3ae2aa78783c3fb1be787339e288","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.388_1783144887180_0.8274555972318964","host":"s3://npm-registry-packages-npm-production"}},"2026.3.389":{"name":"skykoi","version":"2026.3.389","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.389","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"dad9f45ea880a9d9a1a31a010dc7bc19eaf6c630","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.389.tgz","fileCount":2909,"integrity":"sha512-7C0dPWnH6WuaaTtn7JZgsTCm5sIoz+NB1ncfw5hC80mnrvMk6o0UcvZFX304+uZ3XkF/PeDipufATTzV8qZAVQ==","signatures":[{"sig":"MEUCIQDCY119RB1SNl/d0sw1Ghy3f9SMFU4jIKIUfljuARsUpAIgCAy58frorrH24Fk5onWAPcL7mZvaiUtlu5zE3XYVDPw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80601533},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8f2c1c5c744d76932afaa38b4887767695dc290d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.389_1783145511342_0.6427377190973391","host":"s3://npm-registry-packages-npm-production"}},"2026.3.390":{"name":"skykoi","version":"2026.3.390","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.390","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"20cb39d056e155e5fd7f870c9a4ca97e28cee18d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.390.tgz","fileCount":2909,"integrity":"sha512-TGNapD/4NMdSCLdpZ3JFfpp2jCjtNZGfRTsYp4/RhJZL+tcF+NzQk/pHUx6txA7WtjtUWYFvdYwl0ymoHFeNGA==","signatures":[{"sig":"MEUCIQDlRQLNZsIfEp7mmC8f8j0CxEp8wJXbvFJe/0IJZ22h/QIgJs9BMnOOSpkCupLBqhP0KZQcIBYIrNL77NH6udZ7CK8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80611108},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"ab22871097368558a8b8ef217e402257c2272220","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.390_1783184723902_0.7782093133658805","host":"s3://npm-registry-packages-npm-production"}},"2026.3.391":{"name":"skykoi","version":"2026.3.391","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.391","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"96fc5615f75329a1ac859209698346ef965ebe77","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.391.tgz","fileCount":2909,"integrity":"sha512-hzZa5G1clEg45DUHh/C6atM7e2EjXla0r9Txlj/m5zEQGkajAzvJrIihsfV4c6DywiVO3dx+yi5yHY815R9N7A==","signatures":[{"sig":"MEQCIB/fNBuC+tKxDCXqXmqT9WA+eKPXfKCMu06C7EmDyQL1AiAwnpSAct8xLV2CxjA8wvDMaAS/fFC2iM7yJ8vMazxh2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80615425},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8d25345cadeabd18cede0cc5dc8d198f5a352d2a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.391_1783185569045_0.2308431822776449","host":"s3://npm-registry-packages-npm-production"}},"2026.3.392":{"name":"skykoi","version":"2026.3.392","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.392","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8bad087b386cc37dba8ff7f1a7e659c57524e20e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.392.tgz","fileCount":2909,"integrity":"sha512-aM0Vi1RoWOBqGL2UZb3KuoeaYpxWCKSkNY9+UEowcv5CfGQyQf7ull3BOfke4kfGbgLT3tdW2HkdIrxtBZ+t6Q==","signatures":[{"sig":"MEQCIFpYHPQxI+5O4pNgqG54zaDQcravlDBJaNMa8KqIubzSAiBKp09Pzml6FSMCX1n+cVwOBezzcKH66gq7IXSaVWqysA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80619403},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8215efcf17f95f4006d2736bf7958b997c116763","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.392_1783186734141_0.06207100120856568","host":"s3://npm-registry-packages-npm-production"}},"2026.3.393":{"name":"skykoi","version":"2026.3.393","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.393","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b353ab0defc87562a6be83739d594905fedc2a54","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.393.tgz","fileCount":2911,"integrity":"sha512-2JbES2jNeKscduxRH0YQa6qMBLhGgiBtQnblDw5S57AnxVFzy+0RR10svr5N2OywUOjkW1tiG5uQHtgAIqr+EA==","signatures":[{"sig":"MEYCIQCcwcfY3MLVjuZxyS2iunrq8jWhXcu6u71kyznFvy8rsAIhAM+2WlRDwvE03X+/fnLv6ZJVwrwrDWL2DKCtupwwdG0n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80625827},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"544883611813e1d39cb06a2c2b4b83102d80a393","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.393_1783188283674_0.565767209375837","host":"s3://npm-registry-packages-npm-production"}},"2026.3.394":{"name":"skykoi","version":"2026.3.394","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.394","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c4427304d19976ce24e6a5ad77f886dd5830f99a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.394.tgz","fileCount":2913,"integrity":"sha512-mVg4U3RbHL4ZQopsqwKTJGnxUittrgVmIq5Q29aWASZJY3kWll5Dit3q+kfV912GYME9mueZKQAR+KPmeMgM4Q==","signatures":[{"sig":"MEQCICucCASzv1IyLK1qP34wYPPCzKGYtulE6P77GY/aaOJSAiAIMc8FE1OGt1wy/qsHLv0ClOL/l7P59imK2FgyjdZ8yw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80658923},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"6992351add61e5815e8b06a2c865571fc452ed37","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.394_1783225233494_0.46693399861933305","host":"s3://npm-registry-packages-npm-production"}},"2026.3.395":{"name":"skykoi","version":"2026.3.395","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.395","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"148995c0cb31036f624f10cc1eda788d76179871","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.395.tgz","fileCount":2913,"integrity":"sha512-orLZ1jQ15xrKR/EvTc5a2Kh/rUSZKtZ5BQep76sh1hK7PNYXdkbmlpc8cx7wtgtxxfWg8RxzhLDgr7wVwPg6+A==","signatures":[{"sig":"MEUCIQD2S1kN9REWZEej86b8VBJVwxflKiNd96roNZSii+xSggIgGII31V+NAy+nQ0Qy6mfHroOAn1W8UtYCDqZ2oy7azoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80662448},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"70854a4e4cf776967e77c950419581288e9cd1e5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.395_1783229542804_0.42568104253103134","host":"s3://npm-registry-packages-npm-production"}},"2026.3.396":{"name":"skykoi","version":"2026.3.396","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.396","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8cb232d073d40a0d5ea55191956e1bbb5663d239","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.396.tgz","fileCount":2913,"integrity":"sha512-ADOZoBexO46ue/4tjjF1Yptu6a0TJRaUS7+GiBIEQ/b+W6yGdIMzPzx6UoYYeilwRph4hhWotHD15sxNeo+n3w==","signatures":[{"sig":"MEUCICj2f6vfOOUSGQNdVF13CkJO45LdOh32kAhJbrE9Dqb/AiEA/RQZxx+D3nJL9uv/ceBAiMRNgHb1ghpn28MhVcRUo8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80663836},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"f04d9d1b95d14ee002388e4780a1d5eb6b7b4e6a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.396_1783229849267_0.30881556856298764","host":"s3://npm-registry-packages-npm-production"}},"2026.3.397":{"name":"skykoi","version":"2026.3.397","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.397","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"da53bb4cf9b4d9fc075a355f35cc293456b02128","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.397.tgz","fileCount":2913,"integrity":"sha512-oe8neNelDN0O0hZ0MXdabOwaIU2MjDWvqxukhRf+yg469+mxL1fZJDDDiiwP/KtqwxpYMlw4bCpbxMdxPyjOGg==","signatures":[{"sig":"MEUCIBje70io2G7gafMX1kwowLpeAqV9vcWpYi3/DO7v/yAQAiEA8oR+LXlkBI8fa9hHTLO1iKcg1cvp9ntBfO/TRbqZ3qs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80664595},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"fac2034f0711f2a1052b4fea1f9df59087a1c4f0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.397_1783230049940_0.06460003216079802","host":"s3://npm-registry-packages-npm-production"}},"2026.3.398":{"name":"skykoi","version":"2026.3.398","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.398","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b7d2c908543a0047546886b374623333be217218","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.398.tgz","fileCount":2913,"integrity":"sha512-hRJkn5cqmjLdgI8iDFH9YoGYNlHIV9Peh/ZMlYKm2RrTScIUILX8EIcqonlKIYH/TPRkxDu/qEsv8U8avK8xhA==","signatures":[{"sig":"MEYCIQDEFNYHbOOTR9ylWGoXIPQgS7ivnN4UKLy3i11KtUjUrwIhANxScil07o9h9QUyvymqah3vsC6ZgN6gW3AjOhjlNM6P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80665179},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d198f7685ca40c8ccc19ad23553366c8fcc4263f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.398_1783239097582_0.47459162383525255","host":"s3://npm-registry-packages-npm-production"}},"2026.3.399":{"name":"skykoi","version":"2026.3.399","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.399","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2652794d4f91247981abc66f06f6431c346e2194","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.399.tgz","fileCount":2913,"integrity":"sha512-CxYRWfOLYdv2lG13Y+aoTQQ47VQ9DirXFC8I6ukirH9DuLqBm/vTWPb6xFNk3Wo+1X5cY5HcEStdactkjP3FGw==","signatures":[{"sig":"MEQCIAcW2dLjnzKNPXzG5XohyilNdaKV8bSvnHBAfVRaTJxeAiBqoHuSwqMhcD+qChHuY9QIE5Z8OQls6Ay8PkujG0p3YQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80673174},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"21d8d782ab6ea79bc7b824497e1191ae58c42172","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.399_1783272803541_0.7050005874582501","host":"s3://npm-registry-packages-npm-production"}},"2026.3.400":{"name":"skykoi","version":"2026.3.400","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.400","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"965f456ae3d0d8adae68cc43a101a5c8f3536935","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.400.tgz","fileCount":2918,"integrity":"sha512-lMVKXug6/SsYtuSHX7A5+tdgReCb24Pif3f7PFYarXfZfd/YLHrSkXieqfJ1bWVLy9MDjhShGGip7yXeiM7slg==","signatures":[{"sig":"MEQCIDJ7TTAWrr8YPQuHa+VApkiXjlOL/BZNq7kNpQA/6MVmAiA9ah7KDi0AaJ6BQZMMrEJi7NswkTe8V6bXKK95xQP6MA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80729354},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"fe21ac47ba15b36de4d3a1556a27d77b7b33f48e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.400_1783276608458_0.31156922094546924","host":"s3://npm-registry-packages-npm-production"}},"2026.3.401":{"name":"skykoi","version":"2026.3.401","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.401","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3dac7fcfa82c56fb1b8e78e05f07df15d72116d2","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.401.tgz","fileCount":2918,"integrity":"sha512-h97vi4dK7UhED2sfR0h0DhPWwYdOOgZ381YasajBXLnL263ELtV07fuSKRZXG6b7QZlzj/O+AiIE2ap6vQlTCA==","signatures":[{"sig":"MEUCIQDi0uSkR2Rqyk2Lywz0iMB+pt/P6wdKWCpa2qRW2dUb8wIgLhCKklePGf9hhFbcV1sH0cwxjf/BSAJjIk/rfuoy5NE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80737122},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"f8747c6bc5f1d177f2e36e594edec061ab9bcf73","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.401_1783279010991_0.6151301088945555","host":"s3://npm-registry-packages-npm-production"}},"2026.3.402":{"name":"skykoi","version":"2026.3.402","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.402","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"034f4e0f0333b29689c7c820c29888ff0e21e7e5","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.402.tgz","fileCount":2947,"integrity":"sha512-b2U439FNw8evyt1TK2BIVywcl+JUJpb5vbZPoq9Q1YDBVvH+zZ45bEKONcqgU0Lk/IQhTYep6xCaOWmkQrUJgA==","signatures":[{"sig":"MEUCIQCU5YSZGJVyeHMcu6x97/lGuE1Tvv70+I1DWVNjzZfXcwIgCfiWOWdskqxKMg+q5Uw3X1LKvgTUEtImpxa/WyVHeeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82908181},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"df51fc8d7292a6e9b3d39098546938f83c6ec64b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.402_1783410775399_0.34770091548705584","host":"s3://npm-registry-packages-npm-production"}},"2026.3.403":{"name":"skykoi","version":"2026.3.403","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.403","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"29671dfb01a64b01b3455f89aacab13147a0e688","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.403.tgz","fileCount":2953,"integrity":"sha512-B1FNknEvMzIsyy7u6NRe9+dPrnMZ7RcRVNdlotZL+SU2XtYVeVXzZpRH4vfjNk51yl+mTRivIIJTK9sepiKfWQ==","signatures":[{"sig":"MEQCIHSWe1rp7N30oV3xn52u55Q2OC/47OFWUoEerKCPQmsUAiA/Pi305dEtSwPIVmqDNDLxuEvMSYw0yXkvbifCLrAdRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82951638},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"eabfd4ea9f828ec7e4d31e9f3103ae85a599a25b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.403_1783439787063_0.11942702447084597","host":"s3://npm-registry-packages-npm-production"}},"2026.3.404":{"name":"skykoi","version":"2026.3.404","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.404","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"1efc9edf07b49aa8d2a08fcf542afbde2a797416","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.404.tgz","fileCount":2953,"integrity":"sha512-HzD0x4QOiA4AgMnU8nPk0Yxbvu/rPT424MjPiSbmh66bCS6KN76Mi90RAIZv90wQdGIA044POK8jDsAscNE2qQ==","signatures":[{"sig":"MEYCIQDkmr1WhQ5TvOEEXRjPdGRxfbj1ilwhuEcQechO0B7RYAIhAO/VoL5hNi/BI1arhsbdqqZM4OhU8H+pReG1v6tu1RFn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82951958},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"07a44fadd4a7dc7427fb3b1c55b93389c33045c9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.404_1783440437709_0.5164204633890068","host":"s3://npm-registry-packages-npm-production"}},"2026.3.405":{"name":"skykoi","version":"2026.3.405","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.405","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3d8b3438892837f6be2532430beea4b8fe0cdc18","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.405.tgz","fileCount":2953,"integrity":"sha512-/AKUjID70dAwoLtbroVCpsF+jwELCJ6WMGYe1H21cUbjnMe0ZpnonoccDqzxedBkyN87bDoSCrzz8DBuYOFZLg==","signatures":[{"sig":"MEQCIAKBdRioCAisBPzlakPNYFV2KeZSC/RiW1UJQn0hrZuPAiBR0Rpdnkl2xlfL/DilOdSof87e1u/PzU9l1aOylO8ZgQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82962907},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"79c6c10e05bb99b0e5076e89be061bd28da9caf4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.405_1783441298835_0.49343290333983214","host":"s3://npm-registry-packages-npm-production"}},"2026.3.406":{"name":"skykoi","version":"2026.3.406","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.406","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ab4db8f981930b69e07f626c1bb4f6980f7f58ea","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.406.tgz","fileCount":2953,"integrity":"sha512-DsHde243UF6MOwh5S1tI3JuBjshAOSu9/cQA+SK7WG2ODvj81dGObqDtJA5exh+EwivWHDT7QzH9khVcW5iQbQ==","signatures":[{"sig":"MEYCIQDlW2Cl8DOXwG89L9nu5TU6Lz0Uit5ObxrMAi0e0EY8TQIhAP8v6og7miFEhwc1w8zMxdYKlUxVvKbD0emstlXM0gyf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82964262},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1e82738efa953d5361925e764c08a630c5eb4d95","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.406_1783443865291_0.25407952725315885","host":"s3://npm-registry-packages-npm-production"}},"2026.3.407":{"name":"skykoi","version":"2026.3.407","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.407","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"044962b3bc0c68384a32904ef8fd571aad7bfe7e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.407.tgz","fileCount":2953,"integrity":"sha512-hvkUXKkviLbFx+CMLnNvG9Z5mM4oHfq0uGxFmIAyO1HITinbTVHEM21yIWpOT1SnzMDGm0Jt/Gv5sws+2cPefg==","signatures":[{"sig":"MEUCIFMYp3WzsJzd0Ycfxw9deQKQQWdoH66MAdeLI+6134HbAiEA0ZPS9c1cUtQNcJ1Qp0O9QUvfBoto6ZI3YFs/FBbVeUE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82968466},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"5b02b8f03117747c3be7138b491bfa289da87ebe","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.407_1783444517125_0.6251242626258906","host":"s3://npm-registry-packages-npm-production"}},"2026.3.408":{"name":"skykoi","version":"2026.3.408","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.408","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"6eb2de2ce3aade50bcbf1278aae6e0affc5fa4fd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.408.tgz","fileCount":2953,"integrity":"sha512-pzhoOZvG6rR0gxrNchz99QOPABRksfXagXz00kxgBbZj+Doc8mR1GGmiYdGT+hGqZ96O1ENk5ecayguA98UH6Q==","signatures":[{"sig":"MEQCIF3kXOoYI+hwX0aRn8PiL92KHHqpiGTKtRCp1xHE7BOZAiATgdffT7DvQYtO0m8VjILiYuJ1fC1yd8dRyva8mOzKPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82970561},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"7a95db64ad00ec7f1f6f378934d4456b8cb42ea3","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.408_1783445528519_0.8181080214160983","host":"s3://npm-registry-packages-npm-production"}},"2026.3.409":{"name":"skykoi","version":"2026.3.409","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.409","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"819fec5e80fe8e4b7bd10a0e30235107f54065c0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.409.tgz","fileCount":2953,"integrity":"sha512-96mWjcAbLK9g/jEir2i4wYPQUqun5ww7gNoHPMRqQTu2NcC88bLvu3p66kuu2VHstbiygMtbzHF0WPZrvEiedQ==","signatures":[{"sig":"MEUCIQDWKRJHMsBuw14p+o6+PxXR63cJF21ZDKhOFVJSfc1oxQIgHIjhqxQRZdmeaOyEIsv1gTkwswGQVwzoURYqH70scLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82976119},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"a6f0fec47582add64e76e0f0c6e8251e7024e000","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.409_1783446050894_0.024536329291442227","host":"s3://npm-registry-packages-npm-production"}},"2026.3.410":{"name":"skykoi","version":"2026.3.410","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.410","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2567b725bef27de601acaad172f95dde3e1cae08","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.410.tgz","fileCount":2953,"integrity":"sha512-A17dOXZiiYwM5sTF9wFDlwCqUy8fAN1wrXsAgStCQbkPOLywibWgjun807i4Dx8ZRNrpDYdwvcGrphiORXlY7Q==","signatures":[{"sig":"MEUCIAwwDcK9a+JGdk+8kHaq5t70I+IeAsPf9j7WPEPgV5dsAiEAuh2Ms5uhA5HwYaJWtrqPJTYQ/CLbivf0Smt3d9vHYAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82980624},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"7eec7af0e425f61d77321727acf7368de18845f3","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.410_1783446833952_0.11627945389943584","host":"s3://npm-registry-packages-npm-production"}},"2026.3.411":{"name":"skykoi","version":"2026.3.411","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.411","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d892cdfc361090a941a52de4185c8d26c3a89076","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.411.tgz","fileCount":2953,"integrity":"sha512-jAKV7OSR+6WBwg6LKCLQizfzEb0BqsobSp2+SWFgmBt6JKrqc5TPg1X+FEYHdzZqHerp0oktxkHVVR5LTtC1UA==","signatures":[{"sig":"MEUCIQCACl5QZykTFBXpfdcuVFUdFaq6+39FZh0Ud5+s6r083gIgL91YrYAa9tn5ip1gt4xaYDjwf+YJeYWTLU8dmUO8Lb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82981462},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"7e19b5eca2e42d77e371c95c7c341a6bffea5584","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.411_1783447655050_0.7746727226705106","host":"s3://npm-registry-packages-npm-production"}},"2026.3.412":{"name":"skykoi","version":"2026.3.412","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.412","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c6d7957fb0d99655ec430a3fcd9777329df6e2ec","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.412.tgz","fileCount":2953,"integrity":"sha512-K4liduHs62/4N2npIc+rbphn88gOfPm0x/EYJ30GhX7HGCpfSRkbNA/E/5aZ+pigNcN7AsrsKT8mG2PnWW+NJw==","signatures":[{"sig":"MEUCIQD9MnhBEC6nqMa73cHQ2OCpfUJYo9Y3JECqBRaiAPMwKwIgMXl7nOegkPNoeUgJR9KAJCftNwqFCiO1q9MrNjOsnco=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82984910},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"3c1f4303085287e073eb5100e7a43b764ea847c4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.412_1783448293589_0.6782028021965891","host":"s3://npm-registry-packages-npm-production"}},"2026.3.413":{"name":"skykoi","version":"2026.3.413","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.413","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"84ad813343ed0ed9093a8f12ff1acaf7046df797","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.413.tgz","fileCount":2953,"integrity":"sha512-WRIFj/XCnDyPbZ5iUxxWRrqAjl+KsC9Gbg6zbf31Qz+1ipqHecoWVox7mmmGR1nJ+rZ2iRgH9aLa6sUoZT4/Ow==","signatures":[{"sig":"MEYCIQCETfHzAeONr5cg06wD5GDjEdrdMnc9i1tSAT594ch4rAIhAOQcr8Kg1PCUYCOeR9pI/Q9v35l5gKqSCFgcyIkWDZ+m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82992150},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"7aca16f5f011343d666f42ed37d08ff22210b553","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.413_1783448692925_0.06691777428863799","host":"s3://npm-registry-packages-npm-production"}},"2026.3.414":{"name":"skykoi","version":"2026.3.414","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.414","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f3358e9b2a13f9ecb69f0b8f7e5263773aaae9dd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.414.tgz","fileCount":2957,"integrity":"sha512-7qElh59MEUMbx96X+VbqG6/qIgVJmL+g9biD4+vUR3v3joPKu7AUqnDMJtDC6YSq1zSZTrTrYfxipf+wLhEalg==","signatures":[{"sig":"MEUCIC22ihy9BMMtdujKuVNOwvVJp2KfWKkMTmrnekKzXu1+AiEAhbjMTR7TDc4dduPGwOIn4A9t9xxgcDKPRqQwo9l4Whg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83019723},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"5452ce594b08d12dd41c25206b09169c33f03595","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.414_1783450167733_0.8691843837347821","host":"s3://npm-registry-packages-npm-production"}},"2026.3.415":{"name":"skykoi","version":"2026.3.415","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.415","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"70a5a724fc22e1a5717397efe797c43787f156f0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.415.tgz","fileCount":2957,"integrity":"sha512-PD0RVe1ixUgfYMvX9sbrmEZM6qblosLyABDIyraMoXxaIpKrPJrI4lnw5aX9e7TUVJSyEKOp9PF8VuU0V1pv3g==","signatures":[{"sig":"MEUCIE4ucaAUsyRKYSwnB24sq+GfNVUqH/uH8H43IsRQBSm2AiEAsosblsorGU3ZmGp2BaJp0w8Ld/JOB2xSvACXAMdwsmA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83000248},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"20a31a87dc6567ca6d202618d3ce1e886287b178","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.415_1783451479540_0.018057821506664462","host":"s3://npm-registry-packages-npm-production"}},"2026.3.416":{"name":"skykoi","version":"2026.3.416","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.416","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b83b52c0dd8ade8026140f2dd821437976cf7a66","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.416.tgz","fileCount":2971,"integrity":"sha512-E8s2BI0e9GU5T0XSoocVwhy/Gh03/YGE9yVfMxvBUbu7atMncw3E4TiII8rp5AicS/OdhDWRuMvigdIA0qIeEg==","signatures":[{"sig":"MEUCIQCtYyjOu4hNnt+IkNJpQkvhyRNEB0sMHiDmtV35zObbNgIgN6PT9DTQeQC/Ndp0pV8ffmiDtrg3XU6womytfInK9xU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83059552},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"cdf123c5b475aaf71845b8a0588e71171c6ddfa6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.416_1783475055212_0.8341536071769375","host":"s3://npm-registry-packages-npm-production"}},"2026.3.417":{"name":"skykoi","version":"2026.3.417","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.417","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2735b3b320b3d7d6e5949b41aef46597cd091a3e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.417.tgz","fileCount":2972,"integrity":"sha512-CDRvyYbW/9A7TThtE3kmhCyDg49i45sGsT09F62q7YVuqnj19OxKbLQuBT2WfmqYomvPxTzIVjk6iQuo9sC/3w==","signatures":[{"sig":"MEQCICieiokwLlx6mbAkEjowM+T1f3RWGjrIj5fncm3kernmAiByP5h9kHAefGBb66xrj6QgPpktFMC80mBWPbYkbQVCDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83068267},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"a1aeea957430bc183c0efdf45c419fca89668381","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.417_1783476112128_0.7343616338497572","host":"s3://npm-registry-packages-npm-production"}},"2026.3.418":{"name":"skykoi","version":"2026.3.418","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.418","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f5f5128f43f23aadcbc5679bc8b18527e6904bee","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.418.tgz","fileCount":2972,"integrity":"sha512-FqOTSmfD65aqXcuUbdd29BUz5VG0Z8kpF3FZ04570iA7La4o4VBf6IfxznKhNHUJBHgw9ZLJ4PjiPDN66EIxnA==","signatures":[{"sig":"MEYCIQC6HoW2Ae2iPtqL2lO6VJNg6dbXRIs+o7YFhiaS/f5rUwIhAIjs90tBUvQ5z8fQv9cwy6/L+/1KFMiZ32mTVS1Nafpb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83068857},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"652a77caafa0e13d607b74f7486a01d329400f1c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.418_1783478957986_0.8297528774521166","host":"s3://npm-registry-packages-npm-production"}},"2026.3.419":{"name":"skykoi","version":"2026.3.419","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.419","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c89609313616ba0d47dea31a8e501dca6d5bd771","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.419.tgz","fileCount":2972,"integrity":"sha512-PMDlf+uslEKDyyJalTVBbm0RKnDPILju2IiEaeKGQ+iDhukq3okZstrt+uWk35lBkbcCE8zY8UhcTOSI/W2RTg==","signatures":[{"sig":"MEUCIQCybUS/eJWeGo7SGy6yPfEyiGZZBlnIAWy08/eyhTAnlAIgRN1YnLG/ZgDcpWeD5taFv2nYYs24F0S8tz9VbeEjoTo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83070408},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"26f3a1e9fffa9a1d6fafd7addc6b625528a96703","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.419_1783479317346_0.7979218857340022","host":"s3://npm-registry-packages-npm-production"}},"2026.3.420":{"name":"skykoi","version":"2026.3.420","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.420","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"97c50206167d7a05e806f06b4cf0d83f1f0970ac","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.420.tgz","fileCount":2972,"integrity":"sha512-5xH5sBfNqCK6yNFSF/jSdOdP09k4WN9m3Pf3+LuB6awoZTj7Z8pQq1HP0VuH2zQBEmFue/raH5u5964IznEpUA==","signatures":[{"sig":"MEUCIFsQTEAI6ESeto74GUUtKhZVSOmuBCDrR3nIXY+zu5AXAiEA+nQdYPYhSna33wnnI0Wg2Q9qddFX7/GZq855Iish7AM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83071049},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"772555178dab244ee828e45810678df88bc682dd","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.420_1783483815443_0.9169071344398898","host":"s3://npm-registry-packages-npm-production"}},"2026.3.421":{"name":"skykoi","version":"2026.3.421","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.421","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3abdf9c0f1d3716e625c4571d2d2d40ecfb2202e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.421.tgz","fileCount":2978,"integrity":"sha512-M4qyhbfbSbbiWxL9YwYacyBV5AnosQngTeU2N2up+QOwY/2PhABAnYZDc7tpU3wScZmKzZ0cuc6ssSWY8+RfBw==","signatures":[{"sig":"MEQCIC8jcriVs35JotvI3hsCbXXZzuRcoNkdEAhQEH1AP+DJAiBaPNfgr7H6cIHr1Dbmi2zuA4SW/WWjJCAz6pH4SgN+Dw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83244739},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"43ef6b3ac5cec492b588b190ebf16bf12ac5590c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.421_1783495552444_0.6872120913430406","host":"s3://npm-registry-packages-npm-production"}},"2026.3.422":{"name":"skykoi","version":"2026.3.422","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.422","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"27b1b956d47e0fd51a8998041ad1bef001ef651c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.422.tgz","fileCount":2978,"integrity":"sha512-0SZ78mCtvNKNjY0gu3GsaN+zG2EtTxibSLkw9nB8C4ZMqmf/ZA4CsJbvhjHQrLAjMzVCgwdrOD7S/FXkpDVMXg==","signatures":[{"sig":"MEQCIDAs3Go99SVOCkEwOeQesBSPtjkfmxZQkSyFJ9VHFXEhAiB/zAb9tD1n3EsBu334P2YJyQymsDQSYrSm+0ZXj+NZtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83248101},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8feae0c052f638cea5e8ef2852a63d00dd8b99b4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.422_1783496942820_0.7770294086759204","host":"s3://npm-registry-packages-npm-production"}},"2026.3.423":{"name":"skykoi","version":"2026.3.423","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.423","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"621e7c7eba892d623eba1d853e52e08bd76710cb","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.423.tgz","fileCount":2978,"integrity":"sha512-lSFzb37EkFLCIRRwi7HinVwg6Td+hFf1BhuWdVqGjWuc61tV/pTzdNhRKUPXWzC40TPxzkjyMR9ppVucnbqD1A==","signatures":[{"sig":"MEYCIQCKuQygoYxBrF8kKE7yEpmX+opHFEGHLNUrNOwQJBe//AIhAMV+cLhWDjOrk1Ed+PsEuj3qHdOTJm8JpzUhK1Vozmii","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83249981},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"9a45691cc261f513319d8f69082ecc35eee7cc46","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.423_1783497469654_0.7208615754513987","host":"s3://npm-registry-packages-npm-production"}},"2026.3.424":{"name":"skykoi","version":"2026.3.424","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.424","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"10e3b4a3b23e2e153267c1d0d8aef7f0d9edfa9c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.424.tgz","fileCount":2996,"integrity":"sha512-g2ufXXWLe4HIl7Y6u+yyLuBclYw9rrfoRcZy+BQz0ncSIXZSe/Odlu3U5WTAGqnNRMwp6Q6pP7UfhO1MIdAptg==","signatures":[{"sig":"MEYCIQD/eBnlzxIzg532fQiPojY0tvdtvM7p8HTRWKx9EdW++gIhAM0Rd1nE99nmVZIes704W6nfbQ05ajMFDWPunWJsqV1u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81165960},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"17f5dedbb7356a1e9ab6e8adc7b5ebf466f0b214","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.7.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.424_1783746554096_0.4474228967575071","host":"s3://npm-registry-packages-npm-production"}},"2026.3.425":{"name":"skykoi","version":"2026.3.425","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.425","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f36d770591d80a45c5797a1ae526a0aad07e27ed","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.425.tgz","fileCount":3008,"integrity":"sha512-TwLRPQ7BVuWy5m+7689OOENqtKwS7XthMLXawC9RIpujxjZ8SwRkV3C2Ruc9KYVR1qChhOtPg50t6IeadyzGdQ==","signatures":[{"sig":"MEQCIBrmgsTAa42EsIVgPdmlNr8a5IxqF2ZqmZMTU5EY9qAKAiBqHIC5mZfXNibVgziQ3p+NXMTRou+/XbbwD/pMJRCzQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83533945},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1bbdf63bc390f0f8abaeeeca154e29cc40e36b32","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.11.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.425_1783804674956_0.40254814184455756","host":"s3://npm-registry-packages-npm-production"}},"2026.3.427":{"name":"skykoi","version":"2026.3.427","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.427","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"05ddcad1bc38f71f5758b38e56c92ca74980e0f5","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.427.tgz","fileCount":3148,"integrity":"sha512-T/ntZJbnFKWrlQLhHhovkwGuAqz0fPQ+PlZn2xN9S3Pnct+WEAGcg7zUkjdmK3Lq6Oabo/GVTn4v5TZxdUOiGg==","signatures":[{"sig":"MEUCIDH1ESvjULCDM2hXm17QALSIYJgM5b8st/wymBmh7L70AiEAzw1iGMuyTUiPVzHneY5iA1yuYdO8WSDPd0z3OxxR1WU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83165916},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"80efbe3012017df2134dcaf8ac8abaeca91254fd","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.427_1784190933331_0.9423595876284654","host":"s3://npm-registry-packages-npm-production"}},"2026.3.428":{"name":"skykoi","version":"2026.3.428","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.428","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9c0022c493973532a04e953e179d5d7214151ccb","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.428.tgz","fileCount":3149,"integrity":"sha512-q/MTSyeNZE+fkHfJhn+NS/8GFo6dbyjsoZ2wpdvNfXGkpQlF6f278s8KEZma+NuOykdzjsW8GNooiKAwQM9y5Q==","signatures":[{"sig":"MEUCIQC3hW/o5vR8u7WgjgLPXcBgoWDq7LqeTpZIiZwGoZlVxQIgaUMxcxYe6cwR4Eky63jBcapWN+ATgcYzVtEigBQZuUw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83173320},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"a48ac1b8b8195a9bd650e9d9a1b2d4c029c9d9ee","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.428_1784222605964_0.8558068616645933","host":"s3://npm-registry-packages-npm-production"}},"2026.3.429":{"name":"skykoi","version":"2026.3.429","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.429","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3c22e0aed371f9928f03d5e6fb4b99da2a21aa75","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.429.tgz","fileCount":3149,"integrity":"sha512-LFJk1OK2dtGpHNqdiV5hOMi3jdvOSYN83eWMZUB7VCIEl6EaC8qdXt1p8Jk9oXdcVKfnuTCC4fLi/Kavit+S0w==","signatures":[{"sig":"MEYCIQDVj3uo7FZgyCR7E29zF7AI/pSowvZhnfSEfk+3Bh+prgIhAPo62pof0eZXiXXXc66hFeQp2G0f/y/nhvxKQlmUTJb1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83174159},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"a223381f9aafe741764fb1963f7ea236728ba334","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.429_1784224023085_0.981898585826283","host":"s3://npm-registry-packages-npm-production"}},"2026.3.430":{"name":"skykoi","version":"2026.3.430","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.430","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2e57ec896702aab90fd7e8b0d02cba29ebd31614","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.430.tgz","fileCount":3149,"integrity":"sha512-rfRAi+uDPkIN5UvLR3DF+S9mZrUo9RjZSmdKe4FHyyPcfjAXLC36jWEF5i6Qg+pOXNLq9UmiXKEpBo2KttH/IA==","signatures":[{"sig":"MEYCIQCIjEP2VUzYM1Z4+YvD3OswAV+bGV/AZuQ+Zz5F4NKzSgIhAKMjNZtbioQQVkZrj03ZfiBWDASClYFymq/dWIvnVJUe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83176690},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8c7e0cdbaa7e911828182a09915cc97a00e21de5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.430_1784224526068_0.19099168795434873","host":"s3://npm-registry-packages-npm-production"}},"2026.3.431":{"name":"skykoi","version":"2026.3.431","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.431","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c10c897c521279189ed478787b38ec5973ccb6a5","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.431.tgz","fileCount":3156,"integrity":"sha512-E5dA3VN5TWP9IOHem52NOv9ridsLABnJ22tZfCV3pluGL56eRCTQ8DRSPcUKqnBY1UvncizxCwyPLYBNiYwm8g==","signatures":[{"sig":"MEYCIQDNK3lDiKvJwkimG/qS8YObARAg4o0eggGx/o0+jPOFYwIhAMhHPrS9z1sSFh6WeVuNBbLY7N6nyZNN92F0FdpMdXEE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83195167},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"a03e0f5ac243a8f0baa5b1306c541a0ae49dde24","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.431_1784227887912_0.9052376756426808","host":"s3://npm-registry-packages-npm-production"}},"2026.3.432":{"name":"skykoi","version":"2026.3.432","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.432","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"6b41dabad0981bd82f1b512f73a8c9d794352c6b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.432.tgz","fileCount":3158,"integrity":"sha512-Ae0++VVg99YC4dVzqb7uZPMg6wq1vX4XlQXpGMDGrybMApKBxTYcZMXngN225CkijMlu8fK2ASZ7skh3sFqr2w==","signatures":[{"sig":"MEQCIH+m172Nn2EUzJDumL0/grS5dayZZx2d/vjBLqbLOGvoAiAhbIDvuAd//SOKQEW61GgqmQiHTcjHWZ47oWGpXHVPGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83203897},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"09d13b7732c12d602736a72805787f0816926219","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.432_1784229638565_0.21568370782385338","host":"s3://npm-registry-packages-npm-production"}},"2026.3.433":{"name":"skykoi","version":"2026.3.433","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.433","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ccf66405c3a675166a618140e04cb021915340b7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.433.tgz","fileCount":3158,"integrity":"sha512-dX96TF7Vw28+YLRx+wzM6pMe+n4A3r8sMGxypEsWfMvETJjr86EXYdIsUCrTXLprx86pb5OkragrNvmFb/qSyw==","signatures":[{"sig":"MEQCIBYnqf8dXLVHmVeRL1UAXd5UjZS4WLgjn0mw5WlWG2v2AiA8koP7CkwoakWEPGEuvFQbF7Ct4pwOK6k3+we/7Fgmig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83204842},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"b00ce41e415c63a802b0ba96330ce2df707e3b46","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.433_1784230242271_0.8216318699235514","host":"s3://npm-registry-packages-npm-production"}},"2026.3.434":{"name":"skykoi","version":"2026.3.434","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.434","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"51ba7b5f72955f41dac86136781c94d2061111ed","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.434.tgz","fileCount":3158,"integrity":"sha512-gGBQRVqNMCIMZi2jcsH379HL/7I3DQ0GzsPCfvKxeC1W5ahb0GeDNtzlqQyVCjew8G0pTBCdM4SAcrKy6sRWYg==","signatures":[{"sig":"MEUCIGQiRkDWwlTDb9ywJf1CkPtJ0iVJo2ITa8BJ1T1Xf8ueAiEAop/GjCcFBfIEMkKCnecAIAkgju/B3aXHYW/rJ1WfGg8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83205527},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"edbc22807cb52a37c67b6d9217707a2c5dd2ab96","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.434_1784230932662_0.45623227107692754","host":"s3://npm-registry-packages-npm-production"}},"2026.3.435":{"name":"skykoi","version":"2026.3.435","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.435","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8f833cc10994f35f29d0a9bcec3d2a34d6b2c725","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.435.tgz","fileCount":3158,"integrity":"sha512-muor6//ES2KkyGiY9lSiq5okOLOKqYMjF6hR6S+nMfjH0jV3ZEy8cmXnUx2g54bRSuc3i3lCbFqp8d3YqCWfog==","signatures":[{"sig":"MEQCICJlgvp7NV6OcGvi2CsOyefp1qbn2OGtDiYImCn8HEhvAiBcpjqXH6YwMHzLBYDtQxNTIulF193/bF7Iwt9bESk1fQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83207511},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"a42db32599d31dc55b7f27ce183d4eb788a86cea","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.435_1784231621575_0.31666367897356373","host":"s3://npm-registry-packages-npm-production"}},"2026.3.436":{"name":"skykoi","version":"2026.3.436","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.436","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"7b710f6e537abd638f99dd1f9c1a4c15f3d222be","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.436.tgz","fileCount":3159,"integrity":"sha512-ryb8KHAUkxo2XH9U4amCWP6U59cYGilvm4nYPcbJ/tKdL8o4dj3IhkTxSHT+eY/1jWIxCjJB1H73H+VBIgCStg==","signatures":[{"sig":"MEUCIQDKppzYeMXrHfv5q7skQb+Ps4l0rw2lyWXJ3cUumI2sQQIgZASqAMG2LRcZndBSMUu/Al6lhhVvf+s6enr4UK4iWFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83209350},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"89c6ceb90f348e90630d72a98dd86ac1ac83a099","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.436_1784231933538_0.2743136782447828","host":"s3://npm-registry-packages-npm-production"}},"2026.3.437":{"name":"skykoi","version":"2026.3.437","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.437","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"692b6c53d798ce2170aae44f58c0e84a99621c77","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.437.tgz","fileCount":3158,"integrity":"sha512-hXzqCPM1cFYb4FEccC1eyPd8459Qmxer8QhGfEOh8c7u5MdsykocRuxGasfAkppV0jPcnepLHln+ixhknPnB8Q==","signatures":[{"sig":"MEYCIQC9L3Vcz/m7jZ5V7H8Ciw8q1Js9sCOpUJgxPfNYuSBO6QIhAJLQjd8v/UCTjAyCNoqvmRRZefbt+ObIxi6fBe8219vo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83209269},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1101b85256ee2d026262c1382dab1987573738d6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.437_1784232193500_0.2570867160545156","host":"s3://npm-registry-packages-npm-production"}},"2026.3.438":{"name":"skykoi","version":"2026.3.438","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.438","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3ec614e510b539f999482e1bdd473130628786d4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.438.tgz","fileCount":3158,"integrity":"sha512-HuK8Q54e6INUVbJC2Rg7uMA7XiGEZWGza//ybeZFct1ovcwawabFP8WMN0Lj8VK85+GtSdJULunemW8JHHOjbg==","signatures":[{"sig":"MEUCIEAKMPmWgn7HN9pesfiHfQqooyvob400D07JmULF1RhmAiEAzWZCADhO0/SHoFbeGISkFbcSCWwWQoWlKmfLUcP1JJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83210416},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"803a599dfda978a6ea9fe730db92f7bb6faa9b72","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.438_1784232592930_0.7445808972157757","host":"s3://npm-registry-packages-npm-production"}},"2026.3.439":{"name":"skykoi","version":"2026.3.439","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.439","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8d29fbb4bb6693798573bec3c1011eb22f90870d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.439.tgz","fileCount":3154,"integrity":"sha512-cITg4YCt9pgov56OMwsxccmvhJVwSkMquqtTOU+ys/DbI+NXSpaLtQhxOlYLeil6pRXIfP/cEZzQEIin4RkcJA==","signatures":[{"sig":"MEUCIQCuq6XZV/UdaXLSwGzpVFXK8ZYVYpVpbdvjHE2d79yBdQIgJu/rAUY1nZkgD4PtAy59AQbbGu0PO64IKwHr0Yb9T/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83207175},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"f49e07216734d443ef2ecce115f05a5581662729","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.439_1784233635856_0.7736729895669459","host":"s3://npm-registry-packages-npm-production"}},"2026.3.440":{"name":"skykoi","version":"2026.3.440","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.440","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f0f861b0f1c3a117f3ed71d93d79a50bbf170af9","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.440.tgz","fileCount":3154,"integrity":"sha512-+gnZrkpcMuxoFCI1TPaJl+Be+r8rDcUXgfm8benZBHbX4g0o0hQctM7tlKY5zcRYS3Kd3M9di8HEgxZjqtV06w==","signatures":[{"sig":"MEQCICOs+8KcqAVFG84T2Km3nnPC2XRblfyqqs2vNfChB3DeAiBQAH2iDhfi22p7WBrNoTzLeatsdZfQou/G1Zy03+v77A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83210357},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4fc31b4e42ff9235a07eb45337652eba06ccb251","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.440_1784234438241_0.7619453234009097","host":"s3://npm-registry-packages-npm-production"}},"2026.3.441":{"name":"skykoi","version":"2026.3.441","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.441","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a5006fdeb1d5924d6350179dfd0ca1b83691979b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.441.tgz","fileCount":3154,"integrity":"sha512-F7f7XAfm5S6pcgvA3zVl4sj4uVNCVGJZ9hhZVZTyeIZDC4DII+ywG4LQiG0a4I4TAdNBKVM6QnQfVJAKdyd56g==","signatures":[{"sig":"MEQCIBQe7fEmq7o4Qidi/yY+mWJpXgEfYPybln3+3WDfhwqnAiAEW/oY+kKSIbnpng1o5dRhG2nmL8Gple1Eo1V4pMocGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83211589},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"37ea11ac3dd5886437352a34190835eac33dc20c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.441_1784234795869_0.17609584005059475","host":"s3://npm-registry-packages-npm-production"}},"2026.3.442":{"name":"skykoi","version":"2026.3.442","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.442","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"69904615ec74c09fdcf380698457cd643a7ab29b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.442.tgz","fileCount":3154,"integrity":"sha512-ETTiHOrwckWpXYH/UQkGaRl2ILQ0bpNDGhXGqeBnI6IEQmzh0a0ZaXvzWN7uV+9cLGqyDtPfasgjiUqs5i03/Q==","signatures":[{"sig":"MEUCIQCswQUo5kMzAiLxaMXAcupY6QBYKMA8Yd3dI9pCFnOYAwIgINpSLd/pQxw0VovQLnwAjVIkqX8y938U+/m2FgYmoQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83212939},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"cc1e9820acbf8c283ddd154481f516e91dee3ec0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.442_1784237546286_0.7179187914895107","host":"s3://npm-registry-packages-npm-production"}},"2026.3.443":{"name":"skykoi","version":"2026.3.443","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.443","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8e9926c082b38b193fdae583f8acc77b80a9afe7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.443.tgz","fileCount":3154,"integrity":"sha512-n9uAD+UQGECN8yPy+caRSh6k/5mcfys5nsjwjB0XKzFgYwu/dqTYlNRJET60lvgcibmuuDkOY1SPnaMLZR3FTQ==","signatures":[{"sig":"MEUCIElrzB6dcLtI1pfLgdLDAQEpNPiMwVN6YfjZC0SRnUQHAiEAmxXrarRElq4zT6UyyR7ij9pX6WgypTBDVa3MRbM3Mug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83214470},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"2027f12be9df3aaa9a14a549999f6486a346cc74","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.443_1784238559530_0.2788700854946726","host":"s3://npm-registry-packages-npm-production"}},"2026.3.444":{"name":"skykoi","version":"2026.3.444","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.444","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d81b6cb7743d15d7244b1646a39763ddba74d6e5","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.444.tgz","fileCount":3155,"integrity":"sha512-NVY45JLXnn1v+J864hvxlu+jHafdROeiB6AZQzACU4HN7EltfHQsgeNvO51TR4mGii/6yI5K8axhEKj4wWk4OA==","signatures":[{"sig":"MEYCIQDpwznaFJYEpElfc+YzfySlFrO+ySl5/Nd4QvKNaql7fwIhAIqt/2xwGSj46UpeJz6hA0Ei918Hv/LozDx0MNAYErmq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83218760},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"28f3cafd7f2aaedac86acb7345d4a81af16cb298","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.444_1784249949028_0.03133029159176015","host":"s3://npm-registry-packages-npm-production"}},"2026.3.445":{"name":"skykoi","version":"2026.3.445","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.445","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c08cdc89b0c8048361ac6892920c0de55661fe4c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.445.tgz","fileCount":3155,"integrity":"sha512-TkKOHKYuk2uzmF8YQU2/YbPwKrur1xYlymlxj7EI4WWlvG79PE73eud3BMH/lrVhBnV7iLOH6/5jsjY4Zby6pg==","signatures":[{"sig":"MEYCIQDh83eNdPFfJqpgGaxduqvueN8Wc4chiY5PixL16QT5yAIhAIJ5zPq0aXRa6YYFbtl3zIKa1bqG7MxIeiNwi4vfLziy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83221602},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"a9fca9a491ad1c6190793c39bbcf9b5f736c6386","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.445_1784250461385_0.6896834505331406","host":"s3://npm-registry-packages-npm-production"}},"2026.3.446":{"name":"skykoi","version":"2026.3.446","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.446","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"7536d943d206e3fd723e331d68d5ff632562170d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.446.tgz","fileCount":3155,"integrity":"sha512-4Uxveg46bjVWn6xI1vzf1wwHRJWj57oLB7sU2vhvGq1Qo86Gxa8UdvB3ALvMv5Qs5PFk+iwurmZCAd5nk+KJlA==","signatures":[{"sig":"MEUCIQCR3S6Fzh6h0ISEFEUjgWBvOTzLLzCTcmzfYfzcoW74vQIgHLyyu3cFoK8De3uxO3ygGmUrwWxna0ntyKpkTuGQVME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83223547},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1aec4d1e5ec0c7802926a272e8c724c6797dcedf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.446_1784252461269_0.4449448117913335","host":"s3://npm-registry-packages-npm-production"}},"2026.3.447":{"name":"skykoi","version":"2026.3.447","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.447","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"0af6a13d32c9070d7d37e5d1b66686c0d55deb4d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.447.tgz","fileCount":3155,"integrity":"sha512-zpZ7aLluRijGUOYlT2F/f997bDk06iS7kfbTSlbyQ41WazHD8ehtUR0WcLe56XJ7qghcIO1I3SLYheeitu0XxA==","signatures":[{"sig":"MEQCIEr/tGUGvArOaluFo0K7jX0kPXx0Ez0ZR4CQVK0VJ0XzAiA20G3AH/ARMdK0hNwAzRBUAIWp/h3k9nS84kWdC4mlig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83224623},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"6e937130bf1a64601051f85454b09955bbe7f2f5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.447_1784255812661_0.5400563906105489","host":"s3://npm-registry-packages-npm-production"}},"2026.3.448":{"name":"skykoi","version":"2026.3.448","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.448","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f2b5a4837c09890812590a585ec103c8de22f95d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.448.tgz","fileCount":3155,"integrity":"sha512-I29VCUc4i+lupoqs+tW8/miF4EoJHp1pJC5uNl7PuYBaAyazf0k3dXwKM1Sflk6bXmLqedD3zkNH0HVVUzJa2w==","signatures":[{"sig":"MEYCIQDPxvCCiXUZrXD9BxuSV3jkKihdH1wbApGbRV4ONUBJ+wIhAKDrz/SJQCFQR/jZdZqfQVLvMfRjXEMHuIfAw5owZLX6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83224623},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"6e937130bf1a64601051f85454b09955bbe7f2f5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.448_1784257751397_0.5366099839508931","host":"s3://npm-registry-packages-npm-production"}},"2026.3.449":{"name":"skykoi","version":"2026.3.449","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.449","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"44e3f0d1b5d70b2c33aca303ea2772c5e590a427","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.449.tgz","fileCount":3155,"integrity":"sha512-FTgAyEqfa2RnFXUq7cG1IzFjDJ4bpUdRIt2tjaQvUFsA9x5wkC3r8SOwdKfckrscwAPHhNThHSej5Ro61CkRyw==","signatures":[{"sig":"MEUCIEvPpl4vEeOOjeT42d5HJsTa4VguFZzfH6ZhK4Msv/0yAiEA4QvHNHXGxRBVTE0hgjUygVuERcewz3PlKn6oiddo4aY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83227604},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"86924e3ac973be1be5c6a0925ca60bcc8a8937f4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.449_1784258448609_0.5453193992627496","host":"s3://npm-registry-packages-npm-production"}},"2026.3.450":{"name":"skykoi","version":"2026.3.450","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.450","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ef751ff39dc159bf140fe625e576c0d3e9f2a905","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.450.tgz","fileCount":3155,"integrity":"sha512-UnYL4iOBe14XqT6UhmRwtEig+Xy7wGFAnob9WsqtbLpiBzFH+4hUkLmbesZU4uzJb6aoexX+36ctUbGpRxxn2g==","signatures":[{"sig":"MEUCIQCqfRZvnyXcswatOYRUNgPwkgvQUxxpTBkSCKLecqf92AIgRnxDV39mNsbATQGl6Qfj8YBLfXbOusRs+parioeBz2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83227917},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"ede3e4ac514eb11fc3a8cf99059ce54f0b8e1240","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.450_1784258698503_0.7146811879665447","host":"s3://npm-registry-packages-npm-production"}},"2026.3.451":{"name":"skykoi","version":"2026.3.451","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.451","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2c7217fa8aea1b2f63b417348a812b90c48d9a28","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.451.tgz","fileCount":3155,"integrity":"sha512-/lIF7jOMragPnrSt46S8ei2O0CPf7bLklvlT0S05ewakkifnXkMEv8umT2+p1Gy7zwrA99ENsyQfjKzkSz8jqw==","signatures":[{"sig":"MEUCIB2WEDCKoePMgQXU0BOTkraBxBs6Qr2aw+JeAiOVeUJsAiEAumnHTkEnptFZ0voHnu6kC6d/N72URZd31mjIpzvgybg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83228489},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"f70bb541d1cae803f28e119f6f15047305146a73","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.451_1784268189574_0.3664763553346244","host":"s3://npm-registry-packages-npm-production"}},"2026.3.452":{"name":"skykoi","version":"2026.3.452","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.452","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"450446ea7a3a280c5a84eec6558d424a2d177558","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.452.tgz","fileCount":3155,"integrity":"sha512-mSeVy1Sm6/7vURoa7jfdaD/3sIG5PzpaY/IOM7HtJQTGsHWg6jVwKrI1TEJVlJ9IpvKHlgnhu7pXV9PhhwsXAQ==","signatures":[{"sig":"MEUCIEnU4Zq4NWttQZ3EnQuJbxNoW/iQ7fx1gUZajYfS0jdUAiEAu9sQEI2/lM9i3ZvWcLgi191e+pbmCxY013FwO2pwu5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83224900},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"aa75fa744ffc5ba531d40f1b3e113d890beaa762","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.452_1784269097161_0.015078375126814203","host":"s3://npm-registry-packages-npm-production"}},"2026.3.453":{"name":"skykoi","version":"2026.3.453","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.453","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"7dc06d094597bee49913b9e943ff710b461f0a09","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.453.tgz","fileCount":3155,"integrity":"sha512-nySL8A7csh0hM1u8C2XolWezXLHFXQHBesFIoSkm9uect7jyTBOMEHjzV1HxGLgjn5WDEQHfI5ubvRsQY7jr4g==","signatures":[{"sig":"MEUCIQCiRQp23ZAYCcQ0tVmwea8veW57SlsBxvH7B1fnnxrzhQIgUz9FV9ybtvOLZGUTOhQbKelnXobJmoN1Pv6dPwsFy0g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83225230},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1d865e831bfe7d578f401f875b71ddd57532e6f3","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.453_1784311532465_0.8617402420477109","host":"s3://npm-registry-packages-npm-production"}},"2026.3.454":{"name":"skykoi","version":"2026.3.454","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.454","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"00aba6dcb03c7f059f52abcc44ce2ef98475bfc6","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.454.tgz","fileCount":3155,"integrity":"sha512-ffY8GiZY2Octaczo290VBU/NiZ5NsO5mb+U4TA+HEhVXi5ItQkBmZ3D5v+wxt+JPHl7VKz3eNsKIXUwm9F0GtQ==","signatures":[{"sig":"MEUCIF1KEo1VrdlHXHK0NZrl5JvminJ2GfzZ/YrNLvKcARvdAiEAsAh5AwOdIksp/B6hjG/lOFD4STkAf6aH94xl/PMfbqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83229302},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"32bc8753c5f36af9f1ed059ce16d01caf86c3fcd","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.454_1784313444704_0.7888579998961369","host":"s3://npm-registry-packages-npm-production"}},"2026.3.456":{"name":"skykoi","version":"2026.3.456","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.456","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"bfb36c291444b98fac052c5d8c45aa9fe3882daf","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.456.tgz","fileCount":3155,"integrity":"sha512-jw7LxWg5uZ5IWdd07fdiMXapyftOeGLnRCGhCBtwDQHMkcYTR+USY5qr1H4+JlKDqsrql6Gky01JJhqFbt4P6g==","signatures":[{"sig":"MEUCIQCYNPWUNk8yXBYlx7P5DAS0E/Wh+VYiKTexEwVhEuG+0AIgXvX9x4zBqMO54r2PYOoMyjQbD8n+gihA0rz7m7RTDdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83231885},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"2e1d28b53b7a8275cef758b124a8cf6fa62f0b88","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.456_1784314468270_0.5396172013237812","host":"s3://npm-registry-packages-npm-production"}},"2026.3.457":{"name":"skykoi","version":"2026.3.457","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.457","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b08a462765abe01c95676e408d41d4748a1966fc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.457.tgz","fileCount":3155,"integrity":"sha512-Rwf+I0dvDUBHf/AdTwLCji1F6ooBiWx6FZRLY0tjbJbq76kafWaNA0S5OxLSmT9BzGlhi2MM74HbTtGx07g7qQ==","signatures":[{"sig":"MEUCIQCg+YFk7/Sne6NpVXXKfTawtWQLYXOGdNsLvOrQsxjqMQIgHIl2fkZFc9EVILqFT6oCbh2q5YTHZG53VKBySA03feY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83232448},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"0af9791d9103a4f7ed6edb7396db3c7b601e8dc2","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.457_1784314833209_0.7001650005516278","host":"s3://npm-registry-packages-npm-production"}},"2026.3.460":{"name":"skykoi","version":"2026.3.460","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.460","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"021d1db1a1144fdf7608a35b67155ef8d726dce8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.460.tgz","fileCount":3155,"integrity":"sha512-boxzaTPrFqGk+jFoorjCfBsVKbw8VMCB0pVR/5/zwXpqzdQ0xTfTa3nDGN8DERWh4efuJuyG0vylszDjvRLxHg==","signatures":[{"sig":"MEUCIQDC1vMAgwf9WUN/70KrpYHY5/s1i18Doh6oqTVHArmxMwIgAupPORtIFsiAZdMGW9gVa2WpE7yArG+C2pKWYvw1ENE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83232791},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"ce97e3096950d9bef116d88d36b155de237db0f0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.460_1784316609140_0.3980101979516961","host":"s3://npm-registry-packages-npm-production"}},"2026.3.461":{"name":"skykoi","version":"2026.3.461","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.461","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c8d9e1cbe252ad939f5fc2c1aa1171d44873deb8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.461.tgz","fileCount":3155,"integrity":"sha512-Co3ZA9AApzsZ1HQsjrpQJCfnkSgcBSTIhzZI/MZZzH196RPXDsThKaWw7HvdB48J1DcUBWXwYHfRjbekyXifzA==","signatures":[{"sig":"MEQCICc1xooGg1vnsxdLw/MGMJqjj/91jZ4mjP5nqLOotaavAiBtD5bKIuG1+sATjA9JM8XIQLsUATc7NDUY8UKHMXPEPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83235177},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"632b6f23899a99a937003d85a07ac77515688dce","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.461_1784316993447_0.7965570380519229","host":"s3://npm-registry-packages-npm-production"}},"2026.3.462":{"name":"skykoi","version":"2026.3.462","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.462","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"6d941be047e50b18ba210a4ef1c9fadef5c086a6","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.462.tgz","fileCount":3155,"integrity":"sha512-iaTNX+sGYZURQ9EbnR2/1qGWFzRfnqsYeHDarOGKBUj+jj8AD1F42AB05QzB/EIzh1ZE2xSZItEdEfzSWVjAVw==","signatures":[{"sig":"MEUCIHwBxtuemPXDlOoSlw0BhMiokZg9zPC2Ljnuvu1lNtS/AiEAubBsd4MXT6KDYNYubaO1TObEeZtMCI5NSz96zleQu1g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83235423},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"ba1e31ac9e30a7d3c932f2661a003da7fec6440e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.462_1784318106832_0.08081774962519184","host":"s3://npm-registry-packages-npm-production"}},"2026.3.463":{"name":"skykoi","version":"2026.3.463","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.463","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"546793fb8fb2b29ca295932f2187eaaf1a0b4839","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.463.tgz","fileCount":3155,"integrity":"sha512-WAKykP9RRsnSe8NkKYVAoN1NnJekWmfUkhKij+9j50NAxGTRjOb+x+JGyUE4mNe5KK3aWsRnaxoSGAI0LETVsg==","signatures":[{"sig":"MEUCIGqR9VG4TlxexCTOheltMpp0jCULJWa9qwWhU4J/fWTrAiEA1VoubcE2U00dlXup6ZU/shVxm5tpcFiWV2l+TKWL3xg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83237884},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8ae154b08411f627fc3f18267b6281fd365d5d84","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.463_1784318564496_0.4054656189008983","host":"s3://npm-registry-packages-npm-production"}},"2026.3.464":{"name":"skykoi","version":"2026.3.464","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.464","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9e3066e7370952ab65262dc0b89f3cb29a4e6ab0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.464.tgz","fileCount":3155,"integrity":"sha512-xYnNOLoVV9svry/ig4C2YTLt/4qpyPzokMvgcwILPsEgOK8/XpTb+lrXthGRqx9xNdqg+gr4JRKv2H7TPckKZA==","signatures":[{"sig":"MEUCIQDVg+NqpdSNLbvADU6zKxas4eEo7fuf9W82QZpNAlbZAgIgK5NcYEF+Wb+gnJ7KfBTwiyzflm8cN9VmRjL73MHRgN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83237811},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.464_1784319606991_0.19628553653981773","host":"s3://npm-registry-packages-npm-production"}},"2026.3.465":{"name":"skykoi","version":"2026.3.465","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.465","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"75690f1fb9b5c96283474cc7f01b4bc1b99a833c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.465.tgz","fileCount":3155,"integrity":"sha512-NIfvjhPkU5TYmiOlnd+Ib3Rsj4PKuIMecCgp1YkX0MA0J+tIwBJd0xlbq0EGCgqSmTIQyQqzC6Lm3PTOOc78SA==","signatures":[{"sig":"MEYCIQCLj6pPljAUY3j+miBxELk8JmhIcMPih5NB1LlrChYpkAIhAIMW6kYSwpS9nV05D4NQUsDfcWcJ6l2jXUWp7zZkJqKY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83237838},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.465_1784320166362_0.8980298081277858","host":"s3://npm-registry-packages-npm-production"}},"2026.3.466":{"name":"skykoi","version":"2026.3.466","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.466","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"44ef9473dd002e761828f5058c5dd704277daec5","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.466.tgz","fileCount":3155,"integrity":"sha512-6wkXa1m1Xb8jkxbKbqW2UH3vvAdrygUtNvFc4DzeJ6fyLYeaVba6r4aBYjRcK+6MD+PMWooLC7/HHbuh/ispVA==","signatures":[{"sig":"MEQCIDC0MxCCDeG7CBnakVYr2WJWuuDIT1sO4bpeML2wsIlYAiAo6lDZ5GlsY7cwaUdSsCZ23OxC1iLhDLjrcPh9J6k1zg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83241790},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.466_1784322519389_0.7844532059740215","host":"s3://npm-registry-packages-npm-production"}},"2026.3.467":{"name":"skykoi","version":"2026.3.467","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.467","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"35faf604be60d133afe581fdb2a79e59556c1523","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.467.tgz","fileCount":3155,"integrity":"sha512-0kcZHy/Kk7U5B9Il+9gWLLAxVI04MxLF29EDqBBEKBmSFwzXBz+AUGsWEpJ8LoxqthQ6u6nt9eyX9tkv23OeMw==","signatures":[{"sig":"MEUCIBOBHl/RGYjg1S0IWzjl6NzHw3BLX2TTonAchUBIZU2rAiEAplV5U8kfPCHqa0AHu7LOsjBpSPwkskaVG06aRZG5Ekw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83241827},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.467_1784322770218_0.42683372789812246","host":"s3://npm-registry-packages-npm-production"}},"2026.3.468":{"name":"skykoi","version":"2026.3.468","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.468","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8e2c4d871892172786befec833e5458dafc0d715","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.468.tgz","fileCount":3155,"integrity":"sha512-gWVK4jCANIhUNrkNEmHHzS/OfMq4JH3k2DHzV4A6nxwDEHhx8Gv96Ka05NZnMWU6Q7o//LVzO8a9neArZ+UXGQ==","signatures":[{"sig":"MEUCIFYP9Xy+C6ioNzdxgxh7NVtnVwWSTtFyFcH+VjxE6NmhAiEAgCUUiw2YEirzbFlbXIbWUfzEgFyC7g0vy/PF5mfna+4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83243365},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.468_1784323555680_0.7960802752028273","host":"s3://npm-registry-packages-npm-production"}},"2026.3.469":{"name":"skykoi","version":"2026.3.469","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.469","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"569be589b970fbcff7abf9dc36abf9e83177c075","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.469.tgz","fileCount":3156,"integrity":"sha512-u0bEpf/npcvVyEPHtLI/+LxHzUPrYylirsPrM/zPz3CWNm13iDKaZl9IeYOt3cBx9dVo1+pRSW9mEt+vI1SiGQ==","signatures":[{"sig":"MEQCIF2c8TGs/mi1xBzzoiC3NC2V05u30KT4+xXgAg3SN3hPAiB4lWZuHZAIKywBZZ9bTN05Tcl1T52JRnFjAUyrJhMIkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83251397},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.469_1784324358934_0.8000020491807989","host":"s3://npm-registry-packages-npm-production"}},"2026.3.470":{"name":"skykoi","version":"2026.3.470","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.470","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d060cb671bd5c0195efddc725218ecc696686b49","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.470.tgz","fileCount":3156,"integrity":"sha512-GlcneCS4RDYqs00SqZelf4SBwpRu8BOOFpzaMr5lmGBhsm2793dxmpDnBaBAsZIb3kO9DARimLDJPMlRj9QKCQ==","signatures":[{"sig":"MEUCIQCLDgr/UwpjHwbzatKQaL5xUVw3RGIcQsw2Z6DhTgJX/gIgDdEjb4jqx8vIuXRQ7bqZHpAHBNrekEuWPLTGDgescH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83253355},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.470_1784330766917_0.5452637244968497","host":"s3://npm-registry-packages-npm-production"}},"2026.3.471":{"name":"skykoi","version":"2026.3.471","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.471","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"0fc405d1a239085da3c0e21319ba050e53e8ad51","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.471.tgz","fileCount":3158,"integrity":"sha512-qjr7TsVAqJ+w8NynQk+0B1lN/YJour3Gozxi8Wfz3hUZ3vPZXlXBcBc1y0ys3mro23Ewm7C58Bocvg3rTuuOEA==","signatures":[{"sig":"MEUCIHo5lECiLhATQ4X4d9GBMAwr08QV46HqU5Re/6CycBxDAiEAy4tmo0KfX0GPc0WvQiHqnqlspr34j+tPMr4/NSxdICI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83263113},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.471_1784332127053_0.891964505945581","host":"s3://npm-registry-packages-npm-production"}},"2026.3.472":{"name":"skykoi","version":"2026.3.472","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.472","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"1ca8938df4700504e886d9885416c44a4c61f042","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.472.tgz","fileCount":3158,"integrity":"sha512-NU3NCzXoWjcdzCpJBWn+9yU32+EGwjFBK7vXP9vYWqc34g2JHGKVn/efFoKxJkoBOhluKmUXzksSm1isKwDOjQ==","signatures":[{"sig":"MEUCIC4xmABQNg7Rtrufd9FZ4Yzm0eD3rCSSinhEutaiELHWAiEAvrY7gmVB3fUAjdPElP3v2/yeP8Hoh4riYuI52p2WkOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83263562},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.472_1784332345664_0.5881680408698418","host":"s3://npm-registry-packages-npm-production"}},"2026.3.473":{"name":"skykoi","version":"2026.3.473","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.473","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a7d67fe7bed126000ed98b5fa1b60611e5565803","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.473.tgz","fileCount":3158,"integrity":"sha512-SMKZTwIi/N6H7J93HTzxxxFZLxfdlkiEta8anw9eoxKJx59pHLIEkomaU15LXS5KOaYCFgFtW1ajwuZJh+024Q==","signatures":[{"sig":"MEYCIQDyfgnGaJu0W8+iaKudEcoXHQpO3/DZuXqlFuZfqcMsDAIhAM2ROnrt8VpkWR0/1KSueoO7Ihd5jO5307/A/f+Ntspr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83263688},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.473_1784332637558_0.548676767131248","host":"s3://npm-registry-packages-npm-production"}},"2026.3.474":{"name":"skykoi","version":"2026.3.474","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.474","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"71661e0558475ebed9e4a6df3c9364c316a0c102","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.474.tgz","fileCount":3162,"integrity":"sha512-n00k0ZSNA/0FSBC8AVt/vR4HadulFnt9OxXgAOLQj6zqDBxVX7ZreAwyP8oE0BXTEa4qHFYQjlJtPpEPtWvMCQ==","signatures":[{"sig":"MEQCIF46egxujLRi/JYtW04hBH91rSvpKGNdmU5nuyKXHx7RAiAq8qjMmuNnMcSGpwtpFJhesXcEYPy9vZnQGFyx5rXRWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83283203},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.474_1784333574165_0.3725636354582107","host":"s3://npm-registry-packages-npm-production"}},"2026.3.475":{"name":"skykoi","version":"2026.3.475","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.475","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"56a3dc899930fad0d658d66c655cfddc4ee73459","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.475.tgz","fileCount":3162,"integrity":"sha512-JG6pz68Et6wvuulXjz9T58rzjOiPpe7Wnze2fSZIdZPW7LdLlZI3bF1xjUcghCQWDqJGmys2q88cH7aFaM2k2A==","signatures":[{"sig":"MEUCIQCLK8SWyWRMQYrgXqNmI7WH6xYuD7MAsG/15CfBJypJyQIgD0VHrCtadHD2f2bPt2gCuMTyKLD4sF6gQVc5/a4pyGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83283216},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.475_1784333860028_0.0002296006527759964","host":"s3://npm-registry-packages-npm-production"}},"2026.3.476":{"name":"skykoi","version":"2026.3.476","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.476","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8e1082b6439d6f5918cad2a9738e5825b7c4f4b1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.476.tgz","fileCount":3162,"integrity":"sha512-cQp01ebe+iJ3+Ej2N56gHa8Zt6Sfg4Eph+JjHpzlMKs2EeTLsID/srQ/DPTYiyPHoWdibLKbcWzL0ED5b73iLg==","signatures":[{"sig":"MEUCIBd6RkzZPBP2NfmJiR870Y3/tS8gBRbKZlNIVpCcKbJEAiEAs3RW3WnXcxgDVju4ot6t3iz9g0r4geWOsZ4FXmAJhDo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83283349},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1576c786b24ea63e8a8302766f83ee4835faa74d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.476_1784334070400_0.08680674560092805","host":"s3://npm-registry-packages-npm-production"}},"2026.3.477":{"name":"skykoi","version":"2026.3.477","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.477","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"5a930d5ba8d27303098a6249af7467a1aeee1b47","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.477.tgz","fileCount":3184,"integrity":"sha512-/1mTFLol4hJHr+fxLxXtLTs7lMVKJ3VEQy1MUZaYgK97Z3LT4SpgxdcHA9J2LkOAD/faduSXIEAGBWcE5D30iA==","signatures":[{"sig":"MEQCIQDDK83WZpL6K8R0K++jjIiO4Y3qxfmUMEZmDM+4B3ybzgIfZNQ9qFq34oToK2XfRod1DDX46eJ0fBch1hlUGE0WRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83428022},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"880b0fda7f871524c54faca2ae783d21f2d3aed1","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.477_1784405670550_0.36249696265733466","host":"s3://npm-registry-packages-npm-production"}},"2026.3.478":{"name":"skykoi","version":"2026.3.478","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.478","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"77bff3048c6f5db35e0ee94c7c9bbe9ee65b2e8a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.478.tgz","fileCount":3185,"integrity":"sha512-JgA9h2J/fWvJJw9Nv3gVYORjBvsn2nicKSsDwrAIoqoQVdYvnHTGWwQLQdEZOGSOU3E/QZO+w0eXGXSmrtxb6w==","signatures":[{"sig":"MEQCIFW7sGipxeQDh3blgqHK01thD8mENtKHHriBgv3XOnmZAiA8ggAfDxH0L0ETC56kjwHM7NPEeIQSOqTGVr9+YrzBxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83434090},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"c76b7d4748fccaddb7cff8390568a21cc887c90c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.478_1784442028052_0.5221115226918773","host":"s3://npm-registry-packages-npm-production"}},"2026.3.479":{"name":"skykoi","version":"2026.3.479","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.479","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e11998e14181846abe3f89042f187f0776e54d87","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.479.tgz","fileCount":3194,"integrity":"sha512-JfXPfaJzysFyGjotFP3qY37h0UTEcgKECmCqUomtS9EwX3xD2TIFMmppa1COxeEMLZe0DOidCOjnSIkmKy3uIA==","signatures":[{"sig":"MEUCIDNTnTsW/eg4jNLaY/1LAl8OCsw6HYLTblpbqSdWWsJ0AiEArJA6FTqK26lARHZxjnEv56Ib2xi4ThAxaoUhr3GR1Wo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83780659},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"40b1932d0f91c8f77c48fbfb8ebc3d785a10d508","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.479_1784445650079_0.22752866424821017","host":"s3://npm-registry-packages-npm-production"}},"2026.3.480":{"name":"skykoi","version":"2026.3.480","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.480","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"045c9a0139fadad123772778fa9d58621c63cccd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.480.tgz","fileCount":3194,"integrity":"sha512-H3fN4nMwghdLO6ZgTdg5GCfjX+t6Dn3I5OV4PYqJSnoBFr4bHU1mK4dBtq+TjLApHi+c85MVJ1lyP9O0Si5ubA==","signatures":[{"sig":"MEUCIEHeDDuGGTjZepy+NkBkPosUAWg+/rvb5qPMrDKK1vpCAiEAzeJqmVqBhX+4qBJwVWBWCXd1fBgDxbsctz8zUZW2zX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84084415},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"6a4f65220779364726084d171aa894302d7096f0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.480_1784523289551_0.15085997550526753","host":"s3://npm-registry-packages-npm-production"}},"2026.3.481":{"name":"skykoi","version":"2026.3.481","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.481","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"785ab39366b292cfcef8d070411f0dc85ba28fc2","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.481.tgz","fileCount":3185,"integrity":"sha512-iaCGGyoPIrPzecdlLb47j4scUnq82rnIP1H2u15UtaiQB2M4tdD5Xq2TV30HBa1Tt5HnHDjrIP5j4TXGE1oHig==","signatures":[{"sig":"MEUCIAPjzK6UsaiaQ5asGpTMcuv46X+zsoT0uOOfMKYXhiHDAiEAxmzUZWOT9Gn3dZFzcxVEerLkOB7L1WBJlNBc71RG/7Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84191839},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"a526b76db2b672335a7bc26b22632634bf1bb88a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.2","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.481_1784722501729_0.6892046010593964","host":"s3://npm-registry-packages-npm-production"}},"2026.3.482":{"name":"skykoi","version":"2026.3.482","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.482","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"328ab16dfe051f6baa099a2919494112eb192e06","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.482.tgz","fileCount":3185,"integrity":"sha512-3JPEH1PWqUgKSqRqL0QGcfAootdIo5prD/sWBqPUkg/DQaAXgagNtAUWgzTcRteSEYQXy9SAUsLbK0AICTDy1Q==","signatures":[{"sig":"MEUCIQDQvrV2KEzbSx8Aldzbh8+kY5/VdzVRSqB70Wq98rylbQIgJvGsGIL5L6m3GMdMbgct/5uBIU0UCCXscx7PGXMmCSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84202177},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"2a5f17ce767e29586439b3593a1bf91fcf1c060d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.2","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.482_1784729101312_0.22709121265975862","host":"s3://npm-registry-packages-npm-production"}},"2026.3.483":{"name":"skykoi","version":"2026.3.483","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.483","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9c9b5f0284a2d0743c1482d4577d49a60bd9f397","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.483.tgz","fileCount":3185,"integrity":"sha512-zngjt4KbAKeTbJ9epTjQMLR57ofRTH/fkrB4R2T+xKMFtTzvSCpvK8ASciHo7JhZj/SykVoNgLErEBrfF1Vx7w==","signatures":[{"sig":"MEYCIQCbXFxLTdBY0wusFSEpoeHVrMdUq2ULYpDp3//VhB8jUAIhAMZdv7piQXFtISgeXkUqIbhzCd6Z/ugIsKjh3MdPVGbP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84205035},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4da7151c8abb86c86916eb89c68a2e9e36120466","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.2","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.483_1784738453095_0.336534073582649","host":"s3://npm-registry-packages-npm-production"}},"2026.3.484":{"name":"skykoi","version":"2026.3.484","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.484","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"267646927dfd13ad40d612dcb63ae881552a582c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.484.tgz","fileCount":3199,"integrity":"sha512-JRpBsPMwstQhBuETPsj4C5Xukjt0Yx6OFvF5JRQ9jOk1Q0xvQZ3JC/HXPHYVFpGKNS53ZuDpxx3sD5hQlBDBlQ==","signatures":[{"sig":"MEUCIHyPSCBSsoG4Rh1HjXF0KcoqRxp/llUEGk114NRO1xmAAiEA2je2ch8Jh/9gVx2BR/RbSdWkT0l5RmuplKQ2yrH043M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84167379},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"790bb6b21087ce820e51ba9b8bf587e6ce2ec94e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.484_1784757111868_0.8225003113974718","host":"s3://npm-registry-packages-npm-production"}},"2026.3.485":{"name":"skykoi","version":"2026.3.485","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.485","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"52931f837a085ac64ff997aa47d260c518c6c2e7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.485.tgz","fileCount":3199,"integrity":"sha512-UhWpMLlyhlWvz5GrMYxFL4lfi23dFStbt3M+YZKgKLC7zYoXIIOj3DP/CxI8rnR6pcuUfWer0fjBc0USqat/ug==","signatures":[{"sig":"MEYCIQDxT+gG2qiImFTRc0u1FR94p5jsK/y+FefHMi35ltfR8AIhAN1jTis8v0mrdOmPzHB/MGmpd7neTp5nCG6FdV0hXlxK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84168601},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4196d1ebaf77848a4805e3ea361c32f2ed5136a5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.485_1784762063273_0.674854603892566","host":"s3://npm-registry-packages-npm-production"}},"2026.3.486":{"name":"skykoi","version":"2026.3.486","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.486","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"47150eb42b717bf49c32b8d0e395e193aec79eac","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.486.tgz","fileCount":3199,"integrity":"sha512-knTSKajtlIWGIGn1a3R6aE8ObY6Czst1zdKrElQ1K4czaBqvczB3keSdnb57YE6Hew0d6E736UFORmukJG4nxA==","signatures":[{"sig":"MEQCIFGXOdG7Mx8y+wNPqtEz7GwoA35lZ7ehVQpHDoCsH6q1AiBewnHDsbSFyiKLCPZqvXLUSbel21fsXkP631berd/akA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84169703},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"c171fffcc63755ee2f2a5145eb5a9659ae358543","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.486_1784773770897_0.35019030730667544","host":"s3://npm-registry-packages-npm-production"}},"2026.3.487":{"name":"skykoi","version":"2026.3.487","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.487","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"5aedfe86b28ab36df4c935f029f542c4cc833224","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.487.tgz","fileCount":3193,"integrity":"sha512-Bi7ulcWPDhfR/9RgVCuXNeH+mSyr6ZBvB2qDnyWcceXijsYq471pUTYA44STr2sguXcjslyvabsnS6h7A0cUjQ==","signatures":[{"sig":"MEQCIGbozmvqP+YSw5kfLDIqUlE0pWx6IUNWA4lSZf/607seAiBNXJhsgL2YEgc06p0dZRxaJlySmw1nc+tQBSAqYYrlKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84285326},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"f00fb43e6e9be2c9f0206d5c75cefad8f9ec89da","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.2","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.487_1784916433785_0.9867972270838943","host":"s3://npm-registry-packages-npm-production"}},"2026.3.488":{"name":"skykoi","version":"2026.3.488","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.488","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c169735d64a5590abbc8da6408d5efae7a6465ea","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.488.tgz","fileCount":3207,"integrity":"sha512-e452jw/Gv40ErkK8v5RCmXVEjar8jXoSP4FKiJr6N4Ktc9vTE2XRZlrWM8ajZaGHLAtjGhDehys+BNVafqxZQA==","signatures":[{"sig":"MEUCIFIOhuSE0lcTUlbKL4LnlsDrGtCJSjRw/oHz8n7CooLHAiEA+q2LBPuJV8AEGk5UW3/R8CpT4h3wKlU4TXwwJXwCXzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84252052},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","_from":"file:skykoi-2026.3.488.tgz","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"_resolved":"C:\\Users\\stars\\skykoi-runtime\\skykoi-2026.3.488.tgz","overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"_integrity":"sha512-e452jw/Gv40ErkK8v5RCmXVEjar8jXoSP4FKiJr6N4Ktc9vTE2XRZlrWM8ajZaGHLAtjGhDehys+BNVafqxZQA==","repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.488_1784925838831_0.03819760174925868","host":"s3://npm-registry-packages-npm-production"}},"2026.3.489":{"name":"skykoi","version":"2026.3.489","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.489","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"da9dcaea059961ed5cb7982e1e9535f7e3896635","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.489.tgz","fileCount":3207,"integrity":"sha512-Ou33vvokgmuEDkkB+2PMjQNQMu9sLnAC/j7u9L034GppV0IjwGhFjfi0FTzInWrevidunekNTAN3HXpJgQosUg==","signatures":[{"sig":"MEQCIHppaWKBTuckGNiFDmF45l+CLs0zNDW7z3StazNJKiblAiBYqUpIPv99sqdcMGCSI7QtRmJNG88YVu3bnqP9kuL69g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84252961},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","_from":"file:C:/Users/stars/skykoi-runtime/skykoi-2026.3.489.tgz","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"_resolved":"C:\\Users\\stars\\skykoi-runtime\\skykoi-2026.3.489.tgz","overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"_integrity":"sha512-Ou33vvokgmuEDkkB+2PMjQNQMu9sLnAC/j7u9L034GppV0IjwGhFjfi0FTzInWrevidunekNTAN3HXpJgQosUg==","repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.489_1784927140328_0.04797520248450304","host":"s3://npm-registry-packages-npm-production"}},"2026.3.490":{"name":"skykoi","version":"2026.3.490","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.490","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"971f5906715072ebcc11cc91bd4a190bf174029c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.490.tgz","fileCount":3197,"integrity":"sha512-ZGl4HcDUEClCd16s1rXVP+jPdhEHgEJd7/9Lo88m4+/Wq3S0ZrieyTyuE4hfSIqxDRNcJQygGd5h6dyGdDnSAA==","signatures":[{"sig":"MEUCIQCA/zYcXOKfJule0I4gEJjwXNObxPD9kYp+79QPRL0diQIgYMSycdqPGQxUf8TjwbjZaZIx6eBGc4vwkh3dz60s15A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81999416},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","_from":"file:skykoi-2026.3.490.tgz","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"_resolved":"C:\\Users\\stars\\skykoi-runtime\\skykoi-2026.3.490.tgz","overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"_integrity":"sha512-ZGl4HcDUEClCd16s1rXVP+jPdhEHgEJd7/9Lo88m4+/Wq3S0ZrieyTyuE4hfSIqxDRNcJQygGd5h6dyGdDnSAA==","repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.490_1784927727568_0.7047327496554849","host":"s3://npm-registry-packages-npm-production"}},"2026.3.491":{"name":"skykoi","version":"2026.3.491","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.491","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"cf98eb99584a1415488d34d074b24749b82118cc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.491.tgz","fileCount":3197,"integrity":"sha512-ng5pW6UpX/9Xyz3Xe1Ycoh0JMZXD8IByUpw9BXob0iDSOCuhEiPOt8xTqI3MTj2hgbmgiNeFFNJTJl0fqUm3Ug==","signatures":[{"sig":"MEYCIQDuGDYNSgPM3f1H15EBX+k+YUdEsGc3XeJ/RB3d2F+gNQIhAPCjdHzcy1+XK54v3JSeZHldVtUYfTLad5AwfwEq1GR0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81999364},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","_from":"file:skykoi-2026.3.491.tgz","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"_resolved":"C:\\Users\\stars\\skykoi-runtime\\skykoi-2026.3.491.tgz","overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"_integrity":"sha512-ng5pW6UpX/9Xyz3Xe1Ycoh0JMZXD8IByUpw9BXob0iDSOCuhEiPOt8xTqI3MTj2hgbmgiNeFFNJTJl0fqUm3Ug==","repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"11.16.0","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.491_1784928391893_0.1874553588753094","host":"s3://npm-registry-packages-npm-production"}},"2026.3.492":{"name":"skykoi","version":"2026.3.492","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.492","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a4ab5272f5a147945995432326fefb19bd70f4eb","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.492.tgz","fileCount":3070,"integrity":"sha512-cI4Y/Hd7Ftp+KjavKrz+ghVvTl2sr6p/C8EOE80Hlrpz4eKTYoXR8jgPt7Hvy3jo2wBBBBmijI+neNwC73luzA==","signatures":[{"sig":"MEQCIBp4ZrrJGuBSCQ4HM62Wxnkz2ZjGqyfjvouE2X0WNam7AiAUXt3kJgF0sfjZdM2LhUfdFJhz2iLfHaCyHLcqD8TalQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84119240},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"2ad5c1f8c8b6f90190d3a862886cddb40de3890e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.492_1784929130707_0.20263347139503107","host":"s3://npm-registry-packages-npm-production"}},"2026.3.493":{"name":"skykoi","version":"2026.3.493","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.493","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ad11bb6bfbd45c2469f76216e3862ebd302cb495","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.493.tgz","fileCount":3070,"integrity":"sha512-r9PbB0697V5+FL02aSt0BjsRTdnoCqaEuaNd7y+1hKfXudUYp4wMZfDSJlpH+HQzXCbZY/DYJuoGzdlaXr/aEw==","signatures":[{"sig":"MEYCIQCFAgOnVe/ZdzCXDuxYaH2tpXjvE2EepGXA72ZFJPx22wIhAN7/3SWkrSnupvCXr8ILDIOo55M3aVnSNrYs0flBkQHF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84122001},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"514a54b03a3f0e46040894e997321c655a3fa651","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.493_1784932358150_0.37140242777488663","host":"s3://npm-registry-packages-npm-production"}},"2026.3.494":{"name":"skykoi","version":"2026.3.494","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.494","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8f656768b49de0f205ba2745dd2a096e0e78465f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.494.tgz","fileCount":3070,"integrity":"sha512-pFdwCT1QK59xVUcu4Vy533E1ekwPJLcprBN6f+eflcyuygQdnDnw+3zx1BjypwUfmg/WiiJsQ854nqi5GfteZQ==","signatures":[{"sig":"MEQCICExrSAK6jY0QmHxADv3LIQhxc5g1Aj7zwwQKb/WskIVAiBQdSKVPQb+LaJmXzlyPSMlhnYbP7iVmBRMq36cWm/9NQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84122778},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"9544d026775d117c0ab7684ee2680980104f58aa","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.494_1784932976850_0.309080820316159","host":"s3://npm-registry-packages-npm-production"}},"2026.3.495":{"name":"skykoi","version":"2026.3.495","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.495","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e1f50c079832af0900f59e97a638adb28c833c74","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.495.tgz","fileCount":3070,"integrity":"sha512-y2V0iXzTGZJeD/CYwyQp81ETFA23OHMCo/lUBmvPZmRAP7eHkQjD3xomQNPR1YZHxtb6UAdXq9pNtFIiQBxiIw==","signatures":[{"sig":"MEYCIQCCwoW5nuaW6q6YbTdXSV7BiwhWo13moe0oJzy4YBSL4QIhAOf0GebG27YYifnNUCjanvAxEvqD9cj1QGr44hwV8Lne","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84123565},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"28f3716b1baa098c40187715898cadadec082e2d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.495_1785032415002_0.02373505937510223","host":"s3://npm-registry-packages-npm-production"}},"2026.3.496":{"name":"skykoi","version":"2026.3.496","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.496","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"010e7a83af9c2892265e964f675f9ccdc713c79f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.496.tgz","fileCount":3070,"integrity":"sha512-pgbbpxSVeyYfsb66AOvfhWfyBBrPWSa5m1uAvnUzsTeDwd7AkHF3jSTeN9P0GpUx8BzVwv/ewY9VqUoxiJ7iKQ==","signatures":[{"sig":"MEYCIQDwVYkMBc2LjDwgcwB7iTzGNHeHKCHM0gAAfENC0ChHdgIhAOnOXPi865WBLOrOg4fb0Bq+99rmDXAxhQo+6aXw5ETf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84128215},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"12f94ef222781a443658e07588b2ce88940d874b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.496_1785033587962_0.060480494920891914","host":"s3://npm-registry-packages-npm-production"}},"2026.3.497":{"name":"skykoi","version":"2026.3.497","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.497","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"5a0a650f26adfebfb7d49924d3c40902a71a111b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.497.tgz","fileCount":3070,"integrity":"sha512-q6ORKEp11PP98Awlk9EX847km1ZDnBFKummmDsWekkD8L/1fiGGgCGYI3CEfZrP7d8ZgLfCE2kS6yGW+kSc5Jw==","signatures":[{"sig":"MEYCIQD/sZhGBrrKKlgIznaWcsoNHLlZ02cEe4Eh6Apq0L/3twIhAK3JKZZxaAcgNN4JVowKWR9WZ5e35uW0rYcCOpHbkuUe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84130735},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"036ef7206e2591637412cb527c7322f634a98f32","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.497_1785162295747_0.34914317319611454","host":"s3://npm-registry-packages-npm-production"}},"2026.3.498":{"name":"skykoi","version":"2026.3.498","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.498","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"47809159ab44e395995433fbced2e77545ae1420","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.498.tgz","fileCount":3073,"integrity":"sha512-mgSFWoPPWbU8s7fHgNqbhoGHhr1sLm6gCxeNq1YESoVYIMnu46lHgA7N2mV6rjkVvdxEAKyqBpp/2KOuX8Iwow==","signatures":[{"sig":"MEQCIH1zupYMBfK+oh5SsM+uGYBWCim64fZB+Hexc90DEd1gAiAZNLXMcSc5x8etBXeWlBYMx49/G8stAJMYUedf/0mD0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84156753},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"7e8582022b8629496964ffdaf21cf7a34ebc3c56","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.498_1785284637023_0.3378265806145462","host":"s3://npm-registry-packages-npm-production"}},"2026.3.499":{"name":"skykoi","version":"2026.3.499","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.499","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"cd8678d64ab262c7c2cb882fa02f311d979504b3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.499.tgz","fileCount":3072,"integrity":"sha512-kmuZV30I4qk2AZyxe/kMBBXlsmcl/lvqQCQi7JuwTWldP5twXY7Fy+vnHmLzwzFLrT4fDsDsCxM9hoVjqkSxWQ==","signatures":[{"sig":"MEUCIFFVnKL372elFlkKnYjkoVxwbfU1L/F3lLg3ZxRhzqYnAiEAt1Fd5VagRZ/I7FZHzMTE48BIf1a9yeikZ4IS/8feLIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84162258},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"09353b2296848336744b2a9aaf296d47ae6248c1","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.499_1785286782558_0.25750096578115356","host":"s3://npm-registry-packages-npm-production"}},"2026.3.500":{"name":"skykoi","version":"2026.3.500","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.500","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"22edf5600af39369198ce304ca763c02872b4c65","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.500.tgz","fileCount":3072,"integrity":"sha512-mPvX+hwF8LyFnd53OaQyeIDB2ru5GkHzmzIG3IcyV4vWYhuu2vs4+d2ncu7e2Qhr3Yjqk1Mbdbn20nt6LIKWTA==","signatures":[{"sig":"MEYCIQCrBVV2p6LK+jZFBrY40omuddIk9k1NI4/nlVrf9+nMHwIhALmv6Pu8e6aJLMI3eYbYPrc+sw8YJE5KBfWcE/Alt+qN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84163194},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"662b75f87eea407bc0dcb439d3dc568ac6f9dfa2","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.500_1785287066227_0.6209214636547964","host":"s3://npm-registry-packages-npm-production"}},"2026.3.501":{"name":"skykoi","version":"2026.3.501","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.501","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ef3d20943e6dff88674778d5f6fbff682303b9eb","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.501.tgz","fileCount":3074,"integrity":"sha512-UdhAO5b6m02WGpS77RtU3I48zlHMS8A33nLipV5L8rHDgF7PZNMxgnA0jqeghIXYUboO/SZ0GQGpAiTNsd1UFg==","signatures":[{"sig":"MEUCIQDQ+I0dVzFYTLmcey58daZ62Z8M/O8QsN5QAXbimNKQDgIgTkbJwIw+F3exv25dBl5M6cFNzE65wWngqGx6jjQgkj0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84166342},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"0cb4d37b0cf951232d876c2c05e573deab401b92","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.501_1785287529163_0.6536248946662446","host":"s3://npm-registry-packages-npm-production"}},"2026.3.502":{"name":"skykoi","version":"2026.3.502","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.502","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"1660cba4f7ba949434c51f160ae3ab4ec22cac78","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.502.tgz","fileCount":3074,"integrity":"sha512-itjapce0m82IeqRrKlWGt5GHTcew/4ez0XLVQ54TJJXgYb+KdUPbJOgiIcXth70Ib7pZFOE02bBYAdkkk/WqeA==","signatures":[{"sig":"MEUCIQC6ngxR4/8pFUB7gQHN1fX7sg9/ac81jq3evoyuEckOZgIgBWud047AUofmVS+3qrYdMzAIN3XnsAhSufIE/VOemvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84166594},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"7264ae8d615490aea1587aa695a42440265dd7c6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.502_1785290641596_0.23266016494604247","host":"s3://npm-registry-packages-npm-production"}},"2026.3.503":{"name":"skykoi","version":"2026.3.503","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.503","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"697c7e9325ac2e6b932bec275094f557011aed0d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.503.tgz","fileCount":3074,"integrity":"sha512-egrGuWEfJTl+EW1B0+4SgKkJMlxquHcdbhCuKQlhJ6uMeKk7ZAa9dCbc+xHNLwPDms0Ly4SoOJivD3ruswHLHQ==","signatures":[{"sig":"MEUCIH2Ej+ohddwsKX0PSyImNToaXFCasO5y/X+YMf87ZWWlAiEAy824DVR9Z67Q4nVlfYKOSNzXTWC1yiiGERKev9uigsQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84167787},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1ef9c03f444b45d4ae772d2ab07fd2363fd25ea1","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.503_1785291134347_0.3318983070196766","host":"s3://npm-registry-packages-npm-production"}},"2026.3.504":{"name":"skykoi","version":"2026.3.504","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.504","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2c226032e2215f08478ae7ceef177d7c31b7e701","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.504.tgz","fileCount":3074,"integrity":"sha512-JI2lp0yFHbjCWP1Xoek8sDBR+eW8CNVZajJEv+eoIpaHjeu/IVu25NXE4fKbvRRu5Ya+hqFJjSzWR5QXIXff7Q==","signatures":[{"sig":"MEUCIQC3B5mqZpc6zlkSiC/W+y/8CELQqgPp6CbyDWcRs0XpPwIgF/t0nTh9P7KbNwyoMeaUWQXmmRUmE32VJDx4vGUP+RQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84170047},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"f8f50a51f8eb7091ec5fe4062ef8260f6df9bec0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.504_1785292126192_0.2692314770594346","host":"s3://npm-registry-packages-npm-production"}},"2026.3.505":{"name":"skykoi","version":"2026.3.505","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.505","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e1165526fb8afa51cf1799dc4ada79170ea24e69","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.505.tgz","fileCount":3074,"integrity":"sha512-XrN4nkPpxZCpZs1M4RgvOMHhxVf2ezMEsgGMf19QMv3ftCM5suIxpSB6j/t5y3mP9FdvGSGdMKnXgbaPNrev5w==","signatures":[{"sig":"MEUCIHI/LlBylTBM3KlyCjkcDYfFPLSzlT7Uc4H9yNywM0npAiEA4Fy7df2z6/2mAst1GLcISIH9AXcw59dF23ggb0UhUmI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84172384},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"084bed064815a9099fe281fcdeb3570895922430","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.505_1785292591961_0.9745466915263028","host":"s3://npm-registry-packages-npm-production"}},"2026.3.506":{"name":"skykoi","version":"2026.3.506","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.506","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c20f3bb0c335c566a51c36baa5b4037ab7d2cde0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.506.tgz","fileCount":3074,"integrity":"sha512-lC1l+EViLbZapvzkOj/l2J2VeIdJRv7o2Aj2/kUz+tmZmwC/9qj/3NT6XewmFSvWUc+9XvUonzhGG7VdctXKgg==","signatures":[{"sig":"MEQCIGR+E1d/qG7wUJvYF+axDuOajrgZdiplPu1BuGhofJxaAiBRrLiKDoQuQEzzaV68TTHSfrDwKJBTsix9pTCzROPXOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84174228},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1bb1e3722d3f80823cca7abdac128565aae7b0ce","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.506_1785293989692_0.4865838004946059","host":"s3://npm-registry-packages-npm-production"}},"2026.3.507":{"name":"skykoi","version":"2026.3.507","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.507","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9c4eb7417c45c367cee68b769b4917d3ad284afb","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.507.tgz","fileCount":3074,"integrity":"sha512-TxuTEiUJAddCjhuBZhUon5nHsoFxmmu7MoV1RezWHxwRoqjUbU9/QHdxpFgf3rpdF4uhEypmLXWLgqNCj6AwxQ==","signatures":[{"sig":"MEQCIBCs3V+I8sPiWmTz1qNS7IM+UbVsiSzkqUgwSAStPYHtAiAXCDenqU8myUlFkr+ymqel6n8eXLjlicinBgig9dYOPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84174832},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"e5324b04121c3e3e81e46b9de76dbd398359fbfa","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.507_1785294454399_0.3208300947293372","host":"s3://npm-registry-packages-npm-production"}},"2026.3.508":{"name":"skykoi","version":"2026.3.508","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.508","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"afd2c0db142de876bcf8b07e859fc61187ff9744","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.508.tgz","fileCount":3074,"integrity":"sha512-yxXpmsvUYI7bIMy78unmwj8hIUg3Rm7JxSli0GfFNB/8tz+/lF1FEtocKffRovm3niOEEpjLA6wjVGJlh4muEw==","signatures":[{"sig":"MEUCIQCn0HIi7B23HBKJFFHm7jXC/t5tQ4xq6/pTEsZzAUs0+AIgTQQmPFtj3p8w5kIXndPmcsVZZ1n1zyePynxNuU0P4Sk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84175133},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"6492b4a867610f221761e940ede4a461d566414c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.508_1785294878533_0.5240245100879319","host":"s3://npm-registry-packages-npm-production"}},"2026.3.509":{"name":"skykoi","version":"2026.3.509","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.509","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"bb4dca31dc24ec2e3b93e2207340b5f74a56011b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.509.tgz","fileCount":3074,"integrity":"sha512-2Q0khyzJgrOR1/Qvb/3XmAPlWgm/RKlFEbbfv3BXz/qOzrBA1tVBNP4A7bpzfo1/m3WrwK+acyJ9pUOUJZSk2A==","signatures":[{"sig":"MEYCIQCOwCq8MwpiW72jK6bMj/KoijecYQr/J5c5lOjMJfceHgIhALprVk7V31b53fNyf3b/qsAfFHImyf9Ctn+L4HDoL1kI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84176007},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"54199e79fdb12f5dd515a3d4bf85075c39195d8c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.509_1785307863775_0.04926398732890891","host":"s3://npm-registry-packages-npm-production"}},"2026.3.510":{"name":"skykoi","version":"2026.3.510","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.510","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e760f49bd13c932852bdbbdfa3b6c2002262e275","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.510.tgz","fileCount":3074,"integrity":"sha512-7lvRIMGFRnsjgbfjlobUUKU0EAeX5tmSQUIaY364zF1wHSqV2CJcf+g/afszk5SnJnXOr+aKA7Xk5KdN4ujFAw==","signatures":[{"sig":"MEUCIGyL74bHiuuadGIecAo1cRCeOMLRUrTxrI/J64zn1BN/AiEAuY51vkyguPZv1iqeg9L2YOM9TM3F2xj9jEcSVyP9c20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84175991},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d60b0aa31ec036d1de668604a2511988b833dc46","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.510_1785311057835_0.44687279105212774","host":"s3://npm-registry-packages-npm-production"}},"2026.3.511":{"name":"skykoi","version":"2026.3.511","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.511","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"4f5566de4d7cc64cd2fb23124706a5a3a697de5f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.511.tgz","fileCount":3074,"integrity":"sha512-XeJ7xHVlYJSoX1H4eznJnwzNR6Qi9Ubkchr99b/lWMAOLYYKKrKhI9EnRYjw0Z2C8YCgY4M/bybRSMeYWXyetA==","signatures":[{"sig":"MEUCIFGIyJ2p5MOyVI2RixP0d32axt5j9IttlKHNtrk8IAOYAiEAjptDQheW7sPESyDj+JW+rO/ssIDV7I8VoCvaOQ4JA48=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84176340},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"51d4b144e3155768589583f41a607fb78373a805","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.511_1785312219757_0.852423444917781","host":"s3://npm-registry-packages-npm-production"}},"2026.3.512":{"name":"skykoi","version":"2026.3.512","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.512","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"18d41c8545f1650c618a6565710bf42f8e66c748","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.512.tgz","fileCount":3074,"integrity":"sha512-M6bjm7lbNVfR0PWFVykX1D1ZIOIUDk4J0fOggB763qQ4p2eLqPf1vutM1Ut7s3NSVl3N2vkBOl8ZwdQ31hu6TA==","signatures":[{"sig":"MEYCIQCDlL3kelxtWHqED4D4T/pR3CB6VeY7w7MnQWAO49oEvQIhAMck8654UXtDpJltYBxYaVr0+3xLcCYRpt8oDzZF4sz2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84176457},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"936d3618cc253af7adf03cec6821a7d7d73ce742","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.512_1785361935169_0.39086116092255296","host":"s3://npm-registry-packages-npm-production"}},"2026.3.513":{"name":"skykoi","version":"2026.3.513","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.513","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"88d264d7f8b2e6f6657ab6199a78fe87013bd202","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.513.tgz","fileCount":3074,"integrity":"sha512-kIhNeXOYg1odZT2LMJi4OXotS0vpNK2TnryxYym9Kcqy0YEUlECvfSxh50ocCqUar6zKGBsN4DE4WIsU1l27rg==","signatures":[{"sig":"MEYCIQCqSr07gE5vz3YXJE1kp9wezLRGZApwm8CRCJzw4nWhjgIhAOBKOP2MJlaMJndu6r+ARU8x+rYQyg0/sNA2HNYQ6//d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84178295},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"6d9b291b4cc32f91ae988bcdb7f1ceb6948fa10a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.513_1785363035683_0.9222643916650164","host":"s3://npm-registry-packages-npm-production"}},"2026.3.514":{"name":"skykoi","version":"2026.3.514","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.514","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"350bff86fea1e85e9a2a182e37c5af97dc849f6b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.514.tgz","fileCount":3076,"integrity":"sha512-yKU93n8ZIMdaT13a/H2ecnWJfNbEwP9riMCd2YHW3vKc767k6qVBbfq5q0DD7+UB2A31mPUGoCB3a9lsnuKUdg==","signatures":[{"sig":"MEUCIQDYGts3B7I7XgGXFoAvLBQdklMaEK1xwRymhDIX+aP/gQIgRH9le+rKOC3v/Bfgze75d9zCBJ7Rf0J4f8wKJQaBvV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84182230},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"3cef85a05b0daa9e4490c1781c005be16aa5496b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.514_1785365853990_0.25987900134738684","host":"s3://npm-registry-packages-npm-production"}},"2026.3.515":{"name":"skykoi","version":"2026.3.515","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.515","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"6f05ad8161d65ad83e81f629b8ecf67b53d5a3a9","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.515.tgz","fileCount":3076,"integrity":"sha512-mSaUH6ABrjZT9GLjAX/3HEFdsws5tG+qhDPwnt1c7YlzMNNgDx8E7a0nFxjKDsTmccF65S1LYD1oOrO1OGFdnw==","signatures":[{"sig":"MEYCIQCzTF+XP6YLfpBV2j+DeDAIt8evXRD48KTbRWOL9Tm5ywIhAO6kXCDL7VZWHXjY3ff4fYR26ds1otsfvf01nb+NRPFY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84183151},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"0e8a1d56e95b11d84c274b9235d256062a1a0bc1","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.515_1785366416639_0.41025337978070975","host":"s3://npm-registry-packages-npm-production"}},"2026.3.516":{"name":"skykoi","version":"2026.3.516","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.516","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e273a119a66d0360cafdfd0cf2efb13beb25ebf5","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.516.tgz","fileCount":3076,"integrity":"sha512-9pv5rJE6P6sj5CDHuoKAgAxmDiM/Orc/012lTDTwRm5u9H/Op/W/gmtwpkrmjQcJYpkSJTTNbdJKxovvArw/tA==","signatures":[{"sig":"MEQCIB+v6SoNcw0GDnMh8xTtBoRIA/UlR/YduhyozamVSagXAiA0GP5cUvlEk7ILr93SKvtKDiDOnfudQAUdPH25i6hp3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84185528},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"685336b8335f9b06a610a2a82f2bf63d496d908a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.516_1785370786142_0.8148834533008626","host":"s3://npm-registry-packages-npm-production"}},"2026.3.517":{"name":"skykoi","version":"2026.3.517","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.517","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"7aeea9d6b311103e58c5fc3c9d005e783146b8da","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.517.tgz","fileCount":3076,"integrity":"sha512-rbORcYkTsU3Xme9YcEm4119hHbHWG7iAQCzk/CITbRoA332naGCSll9zxIqZXEFGkAg7GtgcFM9CwAFKGdkp8A==","signatures":[{"sig":"MEQCIDoaVkslK9fLmOlDmIhSff9vB7jRv4Mqf4oZsfgYElO2AiAoWxIVLP8DpmouFtWpDnsylbqGx4TEfLxJf1d/iDj3BA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84188732},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"9ae5245985deee48fa3c229a5b0e397b04416e60","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.517_1785371642168_0.13113213765354126","host":"s3://npm-registry-packages-npm-production"}},"2026.3.518":{"name":"skykoi","version":"2026.3.518","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.518","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"98c4798a55341273462b11318c3e3b3af7d6f643","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.518.tgz","fileCount":3078,"integrity":"sha512-Xvbdp8v0a68e05+RRgdbf8bIeQ/aDN2qTzPPwR49FxUqVOh8qTU2IvBeUfI9Zrc30VJ6kSXGZb+nR20XY4N1hw==","signatures":[{"sig":"MEYCIQCOs1sYAizRYNc5FchJ1Wu/iLNqUUODUQPyjNklX18cWwIhAOVI2KLjRybvVMvX1+HqCUWBEUgcYu4CIjfY4nQPEthE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84217894},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"51aae1269d893fd17e25ec1e0c285018c28f79b0","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.518_1785374040556_0.5673671865969816","host":"s3://npm-registry-packages-npm-production"}},"2026.3.519":{"name":"skykoi","version":"2026.3.519","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.519","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"dc76c67165ec4d31cf89bc992c46615658a199a4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.519.tgz","fileCount":3078,"integrity":"sha512-TM+O7X1kAlvFTqgNCbbqPPZkmfKpmlfHQ7yj/5u8a3Pol3dtIbaJ7whsVc3gzTPyypVEL1GShuRbUf5+KWQMGw==","signatures":[{"sig":"MEUCIQD6dwrhoeCVcB4YLwGkagsbk26bDwnj4NfuiD66ZsJTuwIgdvaMTl6k0Tx0L2EgIuqC5EpL1I73t0FjL9c3MAKm/G0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84219097},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"2186d4d959adc70116c953d1d55c3376bdc150d9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.519_1785375502874_0.3762308047835472","host":"s3://npm-registry-packages-npm-production"}},"2026.3.520":{"name":"skykoi","version":"2026.3.520","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.520","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f0b219a10ebf193d7f72eafe2e9c7c9a82e762d0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.520.tgz","fileCount":3078,"integrity":"sha512-GUk93TZtHyoF7TfV0UsMQO6jsQEhv2y6BkVVSm8q2xfx/fkLNS/MsZzobufVNHz10T+oNZ7C5GJTZihjBzJ/xA==","signatures":[{"sig":"MEYCIQDoiNusyYGhiWS4FNS17n2IwXFAbC/Oyz7QsCBn1VnRNgIhAN6AAUfl/cyZbJd6qjtL3PrqY7FetBIb1yJ0XxlZmZt6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84220980},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"31c108e471640f3b574888473c336e7e85366fb7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.520_1785379456204_0.0532580857036169","host":"s3://npm-registry-packages-npm-production"}},"2026.3.521":{"name":"skykoi","version":"2026.3.521","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.521","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e805263eaefbe282c3ed2046cc1f25cb050311da","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.521.tgz","fileCount":3078,"integrity":"sha512-STUtYDLZktir+zTH6GrLpaDrireukZHcDBXyzitYxe6rzlka2in72HSYeKhdI4qB7nAJ6FHNmNi5qIoQpYAo2w==","signatures":[{"sig":"MEUCIQDg2ZAEx4P5ujEqQOXcVGJW96FjshPvh8pDEzereLgGMQIgcLk543JChAtuSJTHAEjb6bgWtyvbPjnZeeoMpmFh3EE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84221958},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d9927a827a7d01f0f72bafbcdafb3256a28aa77d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.521_1785380172031_0.01275879816507608","host":"s3://npm-registry-packages-npm-production"}},"2026.3.522":{"name":"skykoi","version":"2026.3.522","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.522","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"0377dddf678ffe390ac6b90affde0384c2aa3414","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.522.tgz","fileCount":3078,"integrity":"sha512-UBhT5AeuT/eLaQ+uZ71i2aysL8cfzBrCKWn+btiSq4R46PuhGVvHn1fg40+xzXnydUgva2jWvPg5xhqXiJhJ2w==","signatures":[{"sig":"MEUCIQD9DepG+oYdQyBTD5SmKYIjkAfQl5eVacPeYgpv1NdGkAIganT3k4Y6RRZBTvt/Ge7zPazt5JSCLnzC10Irg4LvMbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84222402},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4d66308c94df69ce12a46f8520a30a1a2d2f3a04","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.522_1785380444323_0.9835513768908406","host":"s3://npm-registry-packages-npm-production"}},"2026.3.523":{"name":"skykoi","version":"2026.3.523","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.523","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"92b1a766b66d2b25692d7696f654fc6d1df92b44","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.523.tgz","fileCount":3078,"integrity":"sha512-V2EqtD6JChhpBMUYjHNfd1+wDYgr/DyqQJHETwz4medCy8ls5N+QnG9237eSOxRNAA/X9Uc5PCqeXR6pPgBaIA==","signatures":[{"sig":"MEUCIQDebidoUcwImQJTuEYzY6X9tyF8W1RKOH9jTOdaMs940QIgCO7VKqWzD3hzfrIMn7JRSGNhUHAl6K+h0gUuG31+c54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84223422},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"bf0e5fcf6ddc9cad2f3c72944d0fbad1d88163a7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.523_1785380875905_0.7867108610638145","host":"s3://npm-registry-packages-npm-production"}},"2026.3.524":{"name":"skykoi","version":"2026.3.524","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.524","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b799f50c89bb0ce89b70bed179e0400e79d4cec5","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.524.tgz","fileCount":3089,"integrity":"sha512-MVAR+ktfUg4p1dRraDaqz4sNfLplbkiDu8smbprOBKmgvgXztiU2wnYBlxRW0ct14773Sav8gfW4svI3IatGrQ==","signatures":[{"sig":"MEUCIQCb/i/0DCpnoZ5XVinF+hu9eSJPRVtVRc+MpFMhJLgQlgIgP1IsjXIvw07ucOfeNXQBXBg7ipO+g4yTBGFbT+xtGbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84268160},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4b1e7a4dbafb9c1db97502162befcb88376ad4c1","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.524_1785457553663_0.37966240663327855","host":"s3://npm-registry-packages-npm-production"}},"2026.3.525":{"name":"skykoi","version":"2026.3.525","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.525","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"61e1d5bd17bcbe2a312c82c2ff0e05d721ccd3cc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.525.tgz","fileCount":3089,"integrity":"sha512-ZejQijyKgRZjHXghgf2Vn+S4o2IUGBsKQJXaI66kJ4TwZNyI2E93iS4i0dLSMrw2rT7l2Wvtt6wHvmcgMfiyzg==","signatures":[{"sig":"MEUCIEQcob1dM4Q2sWxTbj1zHMNBp1cvYRy8i4madWROXMYNAiEA5JBR9qq48hyQtFbTaOUSqTrx7lU9aODZmIc5X7DMTWU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84268164},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"fcb4ba9aa5a3b1415a899c7d17047057ae359fc1","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.525_1785461073071_0.774709305829298","host":"s3://npm-registry-packages-npm-production"}},"2026.3.526":{"name":"skykoi","version":"2026.3.526","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.526","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"10083f401bb300f4f89d8337d7f2ff618735d920","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.526.tgz","fileCount":3089,"integrity":"sha512-G6lyKTS2mAuKwaVoMWNrKg+VdXfiuYNhAjdXrxTNK/p4YjhzZTGJhGFyegcHJ1jcRRyyfes/xVnVkLtn190jwQ==","signatures":[{"sig":"MEUCIQCFQq7Ixj07QC8mo/57Yu7lM0QyLRsdUmLZs/aSuaOmQAIgbLJ3LHbKav8dQS8CcORJnX0b8lpVTyzK/mFYgNgs8oE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84271101},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d670f85f84248f34aee09e2885a88881a7a61a8c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.526_1785884008001_0.10847012457578042","host":"s3://npm-registry-packages-npm-production"}},"2026.3.527":{"name":"skykoi","version":"2026.3.527","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.527","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8ab3f75784bee9cc301cddf002e7343423b4d481","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.527.tgz","fileCount":3089,"integrity":"sha512-6uv3xlm8+6k1xNoQKIP+Jeq//Z0BkxB1QMUx2WiOLbsortVh0J7X/9Qu17yn4ZDvwUgJihcQzQOKysBaSTAIRA==","signatures":[{"sig":"MEYCIQDb6ye7jcNHaYspdrQpA9xDxOdj9m6cTuEFlVz+VILi4AIhAIKLxxn+nnh3j1+Ntf79m0PCP/7ffhp8+q3HuLfiTgEi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84271177},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"ec3540823d7d05f7866449987d8e8700dd37cf0f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.527_1786049644194_0.506395717003786","host":"s3://npm-registry-packages-npm-production"}},"2026.3.528":{"name":"skykoi","version":"2026.3.528","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.528","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"290de780aeac7d915c93b6cd5ef6154218885a3e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.528.tgz","fileCount":3089,"integrity":"sha512-iY1fmHoz9ebOc3EIiYiSFaqJQrt8BwIPL9Ie3h19JkP6QWWoBIhzrEmHJiR3CwIjNVrtTDCp8cvGMhYxoiH/ZQ==","signatures":[{"sig":"MEUCID6HBGPIBXSEdts5Z2QOI+Wpj+DmjwvxrmTrVNqOEeKlAiEAwPX0iOmPi+cnwcIeVB4Us3I7NQnPyki2lPt4miEFA0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84278244},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"70e3653631aa163a52a129bcdbd7d511bdb28a83","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.528_1786052379994_0.26421719093004525","host":"s3://npm-registry-packages-npm-production"}},"2026.3.529":{"name":"skykoi","version":"2026.3.529","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.529","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"afeae7e6e913a5f71f724da93f2d1c1e8d4f574a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.529.tgz","fileCount":3089,"integrity":"sha512-XzPXgrZIzCsYt2DVWtSBLV1gCJzmqRsU17SglR2N5yzdysTHYJLaUwxIcHOBoB67E3KXO043pbkeq3U2M7tlVQ==","signatures":[{"sig":"MEQCIDnTRNgktR8JGtQs/J94BbptU7SbmlQ8JP/d1k6NA0uRAiBeIrVkBSzg6/7agMcCoezgQZDdWDFeoMg7L85uluVmDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84278184},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"70e3653631aa163a52a129bcdbd7d511bdb28a83","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.529_1786054167445_0.7317370980962112","host":"s3://npm-registry-packages-npm-production"}},"2026.3.530":{"name":"skykoi","version":"2026.3.530","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.530","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"814296f2793e56707eb4c88fd36ec0862c10316d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.530.tgz","fileCount":3089,"integrity":"sha512-IIxMi2fgKjcoNUCjVXkLrkmNUNwGf0ELfqEDt14VXkAwYivlqCt/DlvknRk7mFXjUL3NrZCKH7U77bKsosk9ZQ==","signatures":[{"sig":"MEUCIQDangvZ7nPem+gzHhHhh1L3L7ulHIkAOVAd7nIBjWluIQIgPQU0IZlrcjA7zLlcl6HMTN9ed+lvVLmHhyVyDchvMOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84280935},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"e93f96de221be042232e4ab4f21baa4af47a6ba5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.530_1786125741884_0.3969900672330391","host":"s3://npm-registry-packages-npm-production"}},"2026.3.531":{"name":"skykoi","version":"2026.3.531","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.531","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"39206f4408bee6877130e58445269a25d2059b91","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.531.tgz","fileCount":3089,"integrity":"sha512-BoY8BFWYqnj+tIKTvunyKtlGpA1QUSoD/rCStzJejzEly2puAJrIGDLcZFVW7ade7ZCfR8//wGUN903poR1urg==","signatures":[{"sig":"MEUCIQDTXvquIlYOiOyMDIsoQ4o76I2mzK1LlC1tUfu6CxmVQAIgeaCz7xRV5PW9wHB+dtOVRoeJ8BvN3VROAQFwKc4mDdI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84281131},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"44e970992d57c310d39513b22aab4dfccd063701","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.531_1786126131564_0.20566832624713682","host":"s3://npm-registry-packages-npm-production"}},"2026.3.532":{"name":"skykoi","version":"2026.3.532","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.532","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d67486e4336e7147b30ac68649deb4838002ba9d","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.532.tgz","fileCount":3089,"integrity":"sha512-YyZznsbqHOu0Z5NhzJeWqQmEyk5IzjFIa8W+tLHOL0WhRE3SICiEkSOWNR6f9FyQ9ha1oWoKxpPILU9p1Z6mlA==","signatures":[{"sig":"MEUCIQClxUlIVeXczAlZuKmCHwQzHKkH8KXZB5giZs0ZywCtNAIgbYH814nui0PP0OEPPsTdIYNeu88u2Kr98p/QnABItJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84283732},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"66bd13e8dba00af647957b873f6b0d1f202cf1e4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.532_1786127402955_0.006889804984786307","host":"s3://npm-registry-packages-npm-production"}},"2026.3.533":{"name":"skykoi","version":"2026.3.533","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.533","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f01f2a57707b8516d70029f942e31b87d36847cb","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.533.tgz","fileCount":3090,"integrity":"sha512-HQEmM1opekOMNtX69aYtxtdw5jB4TtRkE7bcLR9U1naaiuqGS4QESbfvvJYvVOrzomUBTumtSGMe7AgW98C79w==","signatures":[{"sig":"MEUCIQCduU8YTAm4dr2/70I1Bmtu29bzwXXZIz8hytHucKON/wIgHpOggE9TWwNbFGdpkBa7pBjLik/4Iw7JpLoGRxYGFcg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84151599},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"444a34cbcadd4b7957506cadbce6a1fc4ae67cb7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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","check":"pnpm tsgo && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build && pnpm ui:build","test:ui":"pnpm --dir ui test","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.533_1786152500948_0.20901532490165708","host":"s3://npm-registry-packages-npm-production"}},"2026.3.534":{"name":"skykoi","version":"2026.3.534","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.534","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b7b22b69b17ad36f56c566b271b9b7728bfbb55a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.534.tgz","fileCount":3236,"integrity":"sha512-8Gs0qIonPFE2jhaBkXOGtd1RWa4V6BWYAi07KfjfLUN5Ny2QdurTUTFFrid6WnWjRPVgm5BOuRZcMe2QjOrBBA==","signatures":[{"sig":"MEYCIQCHUzozDwdE6toYIhW1E9lTVBnWdbnAdeogUjzr/1djKgIhAPfM6o0n8YczZb2pVzPFNYegSkoKRQ8qoUOSr1CR1s3V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84475155},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"2cbb419d1d82fb2a5fe8f83504cd7ad4cbc2ba6a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.2","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.534_1786391815344_0.5496300309580329","host":"s3://npm-registry-packages-npm-production"}},"2026.3.535":{"name":"skykoi","version":"2026.3.535","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.535","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"4f811b069944c953a34f8d18eb7d07aebd59d8b8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.535.tgz","fileCount":3099,"integrity":"sha512-FwdPuopgW6g6LBYTjb1Sfky7erD/uluNpWC9VFmqQ6/VWdgzBiP/g5/acUpuKhQRLHeLPjWEQyySEwYqjeyPyg==","signatures":[{"sig":"MEUCIE4OTaZCcaKBVuqWfzP4CnKYvTKf+DYHOsZmGKjqn60xAiEA2qo41lGEFWr9QdNh21tu2bxDMcqbww718o/BLJQaa6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84252759},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"afac0ee933fc4a5f11d06778352279385868ca1f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.535_1786392374714_0.6429302831837624","host":"s3://npm-registry-packages-npm-production"}},"2026.3.536":{"name":"skykoi","version":"2026.3.536","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.536","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"066a67259d28ddc06755505955162b150639ed55","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.536.tgz","fileCount":3099,"integrity":"sha512-vksERcVi92uQaQv8rRXECT6DzrnEW8a3I9csXw4YTh4pW5RnbG2eno1HSlerv/6z2fH3A4YeInz2F3JgGK7c4Q==","signatures":[{"sig":"MEYCIQDgTWbYb2BBgQ5ECzOZkkSsxfb2xtgWgc1sqtN4q4IKKAIhANq+gQFFW5YO78jA2VTQ+d5VKYbgEgmFuej3J5EjIevr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84253543},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"2cd1cbefd46f0244f4adde5f28d91ab4845ff799","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.536_1786395500826_0.21875965831184674","host":"s3://npm-registry-packages-npm-production"}},"2026.3.537":{"name":"skykoi","version":"2026.3.537","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.537","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"0a1c0fc0c7417b69b76967302c73dbe11efd12a3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.537.tgz","fileCount":3099,"integrity":"sha512-GTqwdhplnG73liSt0dHraYD7+Fx9UFiDsiVvMyCcIpBrXD5mkB0EsZ0l3wIoWPZJGYEUSnmlUhi67npJBc3LOQ==","signatures":[{"sig":"MEQCICuc3MkYw+htnkC763jTSQmFqfv50nVAO6USCw72GojgAiA5Z3F0fNZuCs52Aty+G2qrAuKGnVyBtlxkTCOCmIp6lw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84257454},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"b03cc14d6f5b561b688dfeac65fd3b1a164de228","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.537_1786395676451_0.29813637104181123","host":"s3://npm-registry-packages-npm-production"}},"2026.3.538":{"name":"skykoi","version":"2026.3.538","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.538","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"64df7c5476fb5a2293407d55668a10c8eec73842","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.538.tgz","fileCount":3099,"integrity":"sha512-Os12l6rel2hESZe1rPQ5Mv5ZPYuJBXXMnOZ7dpsFPgZ8y8nDICxZAVWJj0pg7Ma8VBe7OZv81S1Yw/FFhP4tIg==","signatures":[{"sig":"MEUCIQCPrIVST3CJsic4zwuu0vmoGQgFMmJmSNUECg7VmbVBjgIgQNd7CIjOEEMVVNd3aG7HuBqNDpTZvZ9dxOHU8kq1FBY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84264021},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"68a9b892b33b65544d04fa33497e73f5655423dc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.538_1786398432378_0.5413020321450592","host":"s3://npm-registry-packages-npm-production"}},"2026.3.539":{"name":"skykoi","version":"2026.3.539","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.539","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ab56ae6d601f26a65c77b34f49e19efd94923d44","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.539.tgz","fileCount":3099,"integrity":"sha512-0uPsGqIOK61HybvlNqu33y62w3j/yx3WeceQsuIS6KvAkSuiT9dVsKqBdpPgqCIoVYNVJU0MGk/W1HpfvJlrGg==","signatures":[{"sig":"MEQCICXVawOLRgddbGtmuper0bku8LOQGZmdpnvY286fI0fIAiBFS/Ad64UD3c7vZQrViYmkuJpOWGuhbxwpMdFTeGDugg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84268690},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"f58876e668efcebaa7ac0186bad07431ac6bb1bf","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.539_1786433818781_0.7450002519774617","host":"s3://npm-registry-packages-npm-production"}},"2026.3.540":{"name":"skykoi","version":"2026.3.540","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.540","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f2a113968c498d4c9db46e01353a3e863fea547f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.540.tgz","fileCount":3099,"integrity":"sha512-ze2xFlYkHON5/GPKnztDLiQPQLPDUnfd0zo+MAzsXNGlGkMTZNvPI9RI5aqxHdeRjqkCLXjNkhmhdyGWXmB6CQ==","signatures":[{"sig":"MEUCIEQLsyeMIYt0hhVXSj+HfeTSivqZGdR+UrwAhJ7491/VAiEA7HQPnr0KASso1gEYuqG38lF32T01KjkjKQK+V4PdYGA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84289295},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"96d5fabde2bdacdbb4562c99ec4c0068efa844e4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.540_1786434519038_0.5151978228722425","host":"s3://npm-registry-packages-npm-production"}},"2026.3.541":{"name":"skykoi","version":"2026.3.541","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.541","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"6e1b421ba98ef925cca6d8b1def1ef543a9c35ec","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.541.tgz","fileCount":3099,"integrity":"sha512-4G9g9MVNKhHxJ4PdMCFCjGSod1UnGQ84XYggXsqn0uxFbThiBz0lh2eVcpNmiF9t8CFD0+z6art4IRRw1zbwcA==","signatures":[{"sig":"MEUCIGtbktfSFqOhSOa4fYvkj9FqEY4LvIue1M8kKVKfOnzfAiEAyl3mQEMJgsZABLhHmsQ+KBGwwYLmeEpeDuEcyp1vK6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84307031},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"45af170490ec38a3704ad37040e92e90cf39bd64","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.541_1786435151450_0.9517080509469857","host":"s3://npm-registry-packages-npm-production"}},"2026.3.542":{"name":"skykoi","version":"2026.3.542","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.542","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a1ca222f28f9d686856cab58cfe7c5a1233a9499","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.542.tgz","fileCount":3102,"integrity":"sha512-acGfNqtAk7eWlkVA0EIQA1Ky+bsxHLMtBLRy3IIxTObDxSY53c2dhO+bG5AiIdanfbEiy9c9AhiJspC9SnVvdQ==","signatures":[{"sig":"MEYCIQCFvvTN+u/OfTAIMcdVQk2L6oZacSHcJ6ETRU2LBWxqLwIhALuydnsqJj4Dn25zeh1FnncDa+MCiPBzHc2q/XrJty2f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84313735},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"64473b49335d2e96d5df342c328482618a2fc928","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.542_1786435580475_0.49839898418157835","host":"s3://npm-registry-packages-npm-production"}},"2026.3.543":{"name":"skykoi","version":"2026.3.543","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.543","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9ce1ee352c849256c4b9fa7882113ac18e0d8ddc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.543.tgz","fileCount":3115,"integrity":"sha512-sZrJUJRG2qbXNJWWox4DauRH21p52xxP9KKrWKKWn/iK1wCOvLcLr3ubskUX9699A3XJCUnzzxdaQe1CdbGZoQ==","signatures":[{"sig":"MEUCIQDmCiDJMUs1c4uLGy6kB5koyh07hTXCqcTxp+SuQlicLQIgAJbR1hhkjEfSYLY8UsI3K/tpE1JqtyNyEsF317eg0ms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84392700},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"f488117f7cf6060e6d2cdbc8dd01cea8364e2dbb","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.543_1786437943940_0.9090948608359708","host":"s3://npm-registry-packages-npm-production"}},"2026.3.544":{"name":"skykoi","version":"2026.3.544","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.544","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"cd6b4915b8bdfb7e53a48666f7ed57afd0fde2a8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.544.tgz","fileCount":3115,"integrity":"sha512-iLqcyIdfeq/sZS6CH+EM4+ZBSXan08g6D60MIRr+kiIIu+ZEFnSI20lX9/hUFwlbEv4uoUs7dH0+R2SWN0YWPA==","signatures":[{"sig":"MEYCIQCb/tWfJpK9OYbqce5RbbHDpnC7o4B+scGEGOJdHzXWuwIhAJfypqYhyqe1AMZ4H+jEIPw8gcBEYrVNZd8+EFX15wpV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84394118},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"91bf8090a8dbdd2168ee5958614f4f69a1e68b3a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.544_1786441485562_0.5638859669919036","host":"s3://npm-registry-packages-npm-production"}},"2026.3.545":{"name":"skykoi","version":"2026.3.545","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.545","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d255d5bade26c4f35be267d72439c1885c410a9c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.545.tgz","fileCount":3115,"integrity":"sha512-BMO7GcPIGQmk0T0Qk8x7eI9d2+k+YSom48bD25KawcBJ5x/tGwqprx9Dbln9Ugfle7UBXc+I+lt3fINwl9sE4A==","signatures":[{"sig":"MEUCIDRgKQ69uiFTkkAl1vOQaaTMMopceO1gf8ci9wc50NEtAiEAu+Z6b8poqoEG+wHkiTsrACFxqRmw++MYD4PCBkXFydI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84395986},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"aca6c4842f2128dde6485a877d5a4380a1e3865c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.545_1786442587811_0.344995803146414","host":"s3://npm-registry-packages-npm-production"}},"2026.3.546":{"name":"skykoi","version":"2026.3.546","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.546","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f7700a86c5ef2fdf333beaea2696d81ecf18fe4c","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.546.tgz","fileCount":3115,"integrity":"sha512-h5bE/v0PukQhOUperX3uvL7P8sjZiEkrd/1Z+vd4M2YXBx2Dd26yQGbMH3Et/LF+/yTVr7UpOwOUcbGdIxShPg==","signatures":[{"sig":"MEQCIGXYHwn3OjKCyVs6tMnbQD625/j4H72eC3Ee68jPu+i5AiBc2/BTs/xEdd3PX+1XWl5SEE/gQjhc5p99wWrz5d2bmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84397126},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"64c38ce9a1b7d092f27846e927c846f49092604e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.546_1786444169161_0.6425129621533181","host":"s3://npm-registry-packages-npm-production"}},"2026.3.547":{"name":"skykoi","version":"2026.3.547","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.547","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"653b0cafa8fb455cc47771f34f361930b1780f31","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.547.tgz","fileCount":3115,"integrity":"sha512-CeFhpetVSR3tbw12GJXO3xUrgcm1DGJ21yC5UPSn20bAQjRQh6EOtFRwkeHJzWhnGukmRlZtKcAWv8AcDAeP8A==","signatures":[{"sig":"MEUCIEw5GzUA2Qhu7k/3x8TEOknqIE/vQUKxJAL8kgYv8EcyAiEAnY5YlKTkYMrlmeUwcRkg3upHOYquoStBhpucw1RAae4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84397102},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1446a8b6e018cc6546c3bf21624880a964ef3e5f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.547_1786445072363_0.6019702412270955","host":"s3://npm-registry-packages-npm-production"}},"2026.3.548":{"name":"skykoi","version":"2026.3.548","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.548","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"8b9b73f79e972012114396207c2d3bbea01cc610","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.548.tgz","fileCount":3115,"integrity":"sha512-EEeqgVLDFUK/+XUj/NfqL93p3Wz5wVWblYfeHQGmQNOeOghxrvZ/KccQEaquDIwomBvtA+ixjZpWL5/QS+2wBg==","signatures":[{"sig":"MEUCIQDCKSRvFldydTlafh/j76Yj4dgTfQMolTJrUHj7bDf+HgIgSjsUF4mJMVguxbKi4sEkq7tCVNowhTNFvj1EA6WVqa4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84394442},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d908e5c069446246de7f2da068f3d78a01c1502b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.548_1786463383779_0.007010173490287652","host":"s3://npm-registry-packages-npm-production"}},"2026.3.549":{"name":"skykoi","version":"2026.3.549","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.549","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3d713fb0890c6f87357834f19ddae429885ebf28","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.549.tgz","fileCount":3115,"integrity":"sha512-FQiGvsxajVluNP+sOxo4AKriEosFG4OeeoF8rKZi+Ls3j3pBVuqiB3pbNNKOkb491mUYyP2m9qFvGUNUa7PEvw==","signatures":[{"sig":"MEUCIQDV/YswoODB8mR2Vnqcz2++g39ud1jLCMRM+eKff6mP6QIgKoL0mI9+LWmAUvTWM8A4a29LedhAfXRPTBbVgSW/48A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84401468},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"10eed43276524fb3bd61f137dd69b5b94cec702c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.549_1786465706355_0.8796069300193445","host":"s3://npm-registry-packages-npm-production"}},"2026.3.550":{"name":"skykoi","version":"2026.3.550","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.550","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ca06c0b8186d0aa99944aae3233094bdf78bf950","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.550.tgz","fileCount":3115,"integrity":"sha512-Eyi6YZ3TBajbHw1YzgUPCqO6O3H0wUPVpapczM66eutW106ILPJNloqDDyXIK85f4zFR/d1gxr68WaznxEeeng==","signatures":[{"sig":"MEUCIFpB1blGQgAplUjAeK/QTGBOZp99Qv7hEFMzbyKV0Ds+AiEAmJgeHbrBt8zhwAtuvUszuNX6GJpMaR9/eodxCs4sBfE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84408216},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"260114295b4bfa9ceb209e1f937d0cc0264e1f9e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.550_1786467664240_0.48686328876202434","host":"s3://npm-registry-packages-npm-production"}},"2026.3.551":{"name":"skykoi","version":"2026.3.551","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.551","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"79cf86a49e243e2d5433182d1c356e65bc6dff50","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.551.tgz","fileCount":3115,"integrity":"sha512-Wpc/QmS5oy1hwY8IDUftlaz2zWwiJ3anIIhiHjofIB9leatxQj2Ew5LmEt0/yBnL0YEMnNgmxuB7O2Au7bERyg==","signatures":[{"sig":"MEQCIFnw3anj0T7ZZCD9Yed0ro/1MAwtSSiW/shuH+sPDnzrAiBRQYsSdn1UvfdrgQHTmLvl99v6otJ8TY3Lyf1XTWSSMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84408862},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"98a92f762b548bf90ad0a794848810e701dc1a9a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.551_1786469835423_0.6670307101023956","host":"s3://npm-registry-packages-npm-production"}},"2026.3.552":{"name":"skykoi","version":"2026.3.552","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.552","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b9a4e386ab799de38a7a4417494e3290d09d0cb3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.552.tgz","fileCount":3115,"integrity":"sha512-8fZhObOyIStoR+wG3eZWUAQOQ+85tBkDAnLvq/wPyq1hHrKhKSic12/uK1jE0I3dKkyNi1tuHl+yO/nUYmgvKQ==","signatures":[{"sig":"MEUCIECGJzYx6/s75qTXsayHhanY3FeVYiQd300bIpLFNlwcAiEA2J0xE2iY7r2vqN+PKrcpCacNwhuaZgVSq6zbDZKAx2g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84412477},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"ffd0213a313b46149ef7d7f9273467720ce588f3","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi — Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.552_1786478166061_0.4734260026965982","host":"s3://npm-registry-packages-npm-production"}},"2026.3.553":{"name":"skykoi","version":"2026.3.553","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.553","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"42c062a4dc328df289078fb5bf2b3d4c9107a203","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.553.tgz","fileCount":3115,"integrity":"sha512-IcFuNHr5Sf1LxHLhSSX4cOv/36j6zHU5Vym5r/lxz+jDfTP0OPXq337wGI912EERFfOHt/TO8nMqxaufFnoT5g==","signatures":[{"sig":"MEUCIQC99C7IQrLUrejzBkrqY5CC5J1YaPtt0C0SWEBDSXf1QAIgYalVAkORHNbdd6mA93WardZIj3PdviumfIJIu03Aspw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84423069},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"db5a7beaa16140877bfd6ea7fd5616ffd8e54e1c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.553_1786481438878_0.09388700978261433","host":"s3://npm-registry-packages-npm-production"}},"2026.3.554":{"name":"skykoi","version":"2026.3.554","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.554","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"032d1b58ce8791cada481db69412f9df4e893025","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.554.tgz","fileCount":3115,"integrity":"sha512-yZKHoG43jPAYA2sT0OXAkX2A2LgR+Vx51JRGkWmkx3xletn2d/DcNsfuTD1oflLsE8g3NHIksT1oVnK/QV9ONQ==","signatures":[{"sig":"MEQCIHcBEbn6zLizFjiy4SOvm8k+aH+2hEKCkO7mF8EYNkG5AiB5E+AGvwRRDza9lff6I6Q0OG134fyLXpB/XxWd4O7Kbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84423440},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"588316f624cb4d6bf6250fb4fe6ec7c6d32a809a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.554_1786482660033_0.8314027678107223","host":"s3://npm-registry-packages-npm-production"}},"2026.3.555":{"name":"skykoi","version":"2026.3.555","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.555","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e8568d583156b737a356f4b77107f3f10de3554a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.555.tgz","fileCount":3115,"integrity":"sha512-C1M12Wmjs7G2lci3HC3VefgxJmJ9xCSriHw0sSfELv7y0LBupcIN7HtgBiqjA5hoRnuoUA63TUgomLUGIVkhJg==","signatures":[{"sig":"MEUCIDFZOjagkcIMcvaVt8DtiK8PD6ko5DL0qyFLGgRqanfWAiEAodqz/vNf654UodOG/jZzaBa3hZAZM18DqSfzCIYI0n8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84425776},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"894f2752ca86f3596788de364003f23a60edfd34","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.555_1786483995406_0.550825041624162","host":"s3://npm-registry-packages-npm-production"}},"2026.3.556":{"name":"skykoi","version":"2026.3.556","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.556","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ff5964dd26df2ff29825270a2c2265bbbdb655f3","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.556.tgz","fileCount":3115,"integrity":"sha512-Hg09o6o7sEqa8ujkL9+WFN4PXFFin9IvBkkR+S5V5WtGiR5NJkcXcHHzTuT3m4mFX8GjcuW3t/F3j+iAEudiig==","signatures":[{"sig":"MEQCIHrlNtxxmTLOMWnKPu6ciyexonpEabxajgsnbWtq758VAiB2HWLCnPeSyrOPVzwgkccYtk47w/NMLP1lUEoPAelJ8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84425990},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"05c6e718875a62a982a4f0ea885910354f7060cb","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.556_1786484885373_0.3116829189591115","host":"s3://npm-registry-packages-npm-production"}},"2026.3.557":{"name":"skykoi","version":"2026.3.557","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.557","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"72cc347a75ada62392a43e146b600bcc75586974","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.557.tgz","fileCount":3115,"integrity":"sha512-PZwgFAzLW+AqStEowG/dImXqDCou7nEjxSs6kF8vIg8PL4HdkYDZMm1AjUaa4Urue/cuDsrigPhIJ1SI4rz1hw==","signatures":[{"sig":"MEQCIBFCP8m9DCh75h15A65IJQxXkKsj5q+2wcCM51nPQJsPAiB1QBBsKvqtSA9WG+UQIhtD+pr8EAzW+OK/1tdBXjHtzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84426382},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"35803e80f0b28da908c90aa9d6328dd642467e7a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.557_1786486247045_0.7914336930725148","host":"s3://npm-registry-packages-npm-production"}},"2026.3.558":{"name":"skykoi","version":"2026.3.558","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.558","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"7c5ef26f18998acd400790d5f5bb39550403b50e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.558.tgz","fileCount":3115,"integrity":"sha512-LQRqzazxMWQxdpVzp4XAruNRTD59Xw5upfj5Tk81/rhttVakugD2ry4CAW+C3uee4qapyvMf1qTVu7bcWWel/w==","signatures":[{"sig":"MEQCIGycHZK5dN2He9mhpErOaF4HtffeQH9HefPqw2uRbwzUAiBWW6cvLBbC3uJSKhoOMb6EopG9sMzcu21deEHwIry4CA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84432741},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"fb4ae1c33d2fb327e58810ff6424174f32ca0b37","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.558_1786489074319_0.8489277500911026","host":"s3://npm-registry-packages-npm-production"}},"2026.3.559":{"name":"skykoi","version":"2026.3.559","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.559","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c9b8ca8ed8c41cfb0ba9e5328f47643a76070428","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.559.tgz","fileCount":3115,"integrity":"sha512-ANGYMomXbThn1FI7aNYyaJ60Xkfc3Yq8mJzCcELgEPuhHGIIWV17nAhYs1AghWeMM91XCD3hdCZY78nW4LqySw==","signatures":[{"sig":"MEQCIAjM20bW8IfQjBgvWVZQw1P9J5iG4cQOp7DLymWWmSrmAiANlbY7Ho5q5A6Qmvrp9XNZYiovot6TsY86WYQZd0EYfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84437352},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"ce8861fd94b76b441cf4f4088131fdb2c80f15f7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.559_1786491345053_0.10298184048709391","host":"s3://npm-registry-packages-npm-production"}},"2026.3.560":{"name":"skykoi","version":"2026.3.560","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.560","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"4f3a1d5e1033b2808366583b91c7fe1a007ef0c1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.560.tgz","fileCount":3115,"integrity":"sha512-UEVJAB4TC70eb9Dc1FaPsBMLSzysExlsjGcJkdbhk5scNZ39BKd4QE+vsIFHbv5bDv5I/7JFC37ePhA4HumImQ==","signatures":[{"sig":"MEUCIDsHPsptJQQqNiSAKyXi9XtqaMNHWdDkKYj8G9c/FVdQAiEA79XWw0x7168vnjQy1KXqC1STilsUprEcd7OZMgF+uQg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84439490},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"b82edfe025d44922187f763f621cc6384febcd2b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.560_1786491467637_0.7082787852234198","host":"s3://npm-registry-packages-npm-production"}},"2026.3.561":{"name":"skykoi","version":"2026.3.561","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.561","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"75226eef5532e565f57a06c01c2d752e0e4124df","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.561.tgz","fileCount":3115,"integrity":"sha512-4PfgTYYogi4n2xwqwYAWoOLFtWMAeo/EAm243Q7dSElsWJGv9XHAsWnnS/BlW+aRiZgTF44qEFm5oExOQuVNqQ==","signatures":[{"sig":"MEUCIAvDQ73xYdqN1VQmNhxpXyWE/oEpsKyzDmYXbT+mPytEAiEA7S9aax+4hhmOnyloqiz43U7JeRWWU5AWSeSF1/zlHhk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84439857},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"78332f8a0cde778c1f26a45602d5b40d2a84c9ab","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.561_1786492046778_0.11696500012459965","host":"s3://npm-registry-packages-npm-production"}},"2026.3.562":{"name":"skykoi","version":"2026.3.562","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.562","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"29534a579d831adf3aa39eb51ccb6692a6e93dd8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.562.tgz","fileCount":3115,"integrity":"sha512-lH51IJ/LptTiLFHoRvkb36/IsSke1afnwAFLq6HfOY6+9eEOEVaKFhndKGU0MHDXQmSFaz/dxhDrrpO+Ibaprg==","signatures":[{"sig":"MEUCIQDyuw0dimJpLuMgEUcCn/6hnYNh+4baSp1z5hIxFVxijgIgJRGaiW0lBODIJ3Hr21erQO2D7l2qWlDA8iKjEfNcSac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84440266},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"5514a4b49526ccc57c0139ce72f6538cd2da0457","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.562_1786492646152_0.014852903828992181","host":"s3://npm-registry-packages-npm-production"}},"2026.3.563":{"name":"skykoi","version":"2026.3.563","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.563","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"44ec855dba5bb78eac231c54f85a439b690184dc","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.563.tgz","fileCount":3115,"integrity":"sha512-NyQ3eM4BVNi/kMYHspQVx80IrGZadzyW6PqP/TKt6f86Ll7xhrXldWtFzdVZQHIzt1bv28y/eL8jxsOEPh/KeA==","signatures":[{"sig":"MEQCIECKQTHJZ4+7PUk4DqXU/iK0KUKQzBHGT0BcVL1kSptZAiBINyJcTPefCXn8gS/5fXHRykJee2wmKg6sUyy4OEADoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84442542},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"fdbf739db4d5582735401220499423abae8a591a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.563_1786495845630_0.8340886636793883","host":"s3://npm-registry-packages-npm-production"}},"2026.3.564":{"name":"skykoi","version":"2026.3.564","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.564","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"83836040b96227c1fc5f23f199fc0e6aaf7bce09","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.564.tgz","fileCount":3115,"integrity":"sha512-v3OCYTg1MMZLa3k8TQfi2TxpPc20CIm9N+ioxetKKOOtlZ9p4YqotesIBRGpYXeQcZobLD0UlS2rwfbo4vnLoA==","signatures":[{"sig":"MEYCIQD1PDfjybTpysnYgXC4xR3W16PBtAreJ7M3tGekZo+ipAIhALSYDAGTMN0XFfQ+ADrv43VMvtKT0MOdTCxTPN6j9pln","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84445659},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"b891d1903bae28326c0f79a694487601aa2bd3ae","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.564_1786499457439_0.8391988406329447","host":"s3://npm-registry-packages-npm-production"}},"2026.3.565":{"name":"skykoi","version":"2026.3.565","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.565","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"05a9bd2292abfa274470cb8bcc7e855c54fcacc4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.565.tgz","fileCount":3115,"integrity":"sha512-MxXwK+NfdcDAa53OxJKCN6enJay3XFKtn9Xg3yv9etP0x+01+aVNRWt26S0wThZr9n9FUUE6j1VCK3fPHdQMfQ==","signatures":[{"sig":"MEQCIF+YRndnGpBE9doLlPRJEo6KktI8FpQ++d8vKIAPFZrqAiBn6zHpWRtx9CWoSV0ik5uLyqgbMP/YNJ7w0L1hchKf2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84446233},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"ae45e1fb6083f207e08563f68123fe455126b287","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.565_1786499549588_0.33265134048038947","host":"s3://npm-registry-packages-npm-production"}},"2026.3.566":{"name":"skykoi","version":"2026.3.566","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.566","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d2def5f6a2008400fb6651186fd0cdfd56ff980a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.566.tgz","fileCount":3115,"integrity":"sha512-Xiq1m4dQy6AZ/8RE3yLi3we4GAq14PFdkS3ZjTWfOVrevhLeeB4/0x/jKp0ECnLaAtfqPu6WNQXyYhDpLJtcRw==","signatures":[{"sig":"MEQCIAaEMnqBlmsLcXDJqG9j89poXR72hw6XMQq1/k8Y0NVrAiBJ875QdPQxjJn3+wBhPmH8OQ3cE9p1oh/thHOe4u080w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84448878},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"163c8be59f3d1179c295bed5b26afb2d7ca75e87","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.566_1786501401761_0.14540457772923365","host":"s3://npm-registry-packages-npm-production"}},"2026.3.567":{"name":"skykoi","version":"2026.3.567","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.567","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3f5c6d63a67176fb00d85a85dad0c708a66688ce","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.567.tgz","fileCount":3115,"integrity":"sha512-Z0i/eERksP+s1f8GG21Mt0Zv91OTPVmqzMbgyidHswoLKPI5++iCHZ6M/rvPh9v4FL9hDM/fCNMFGIdYVfWZXg==","signatures":[{"sig":"MEQCIC+I95jkiX3aKIHVbgrA933/q4gHtRO1YOfUGvVWYCa0AiAdhGLKsnjAVvKoRlTWHyZhTXUQJ47O37QX3B4prNEERg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84448871},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"53d450ab53b5250b3604f35612cc228ab2fee190","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.567_1786503081577_0.3470399182008157","host":"s3://npm-registry-packages-npm-production"}},"2026.3.568":{"name":"skykoi","version":"2026.3.568","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.568","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"42824f29ccbfb29646207d8db635fe99e7c163c9","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.568.tgz","fileCount":3115,"integrity":"sha512-tTLHm1ZE0Ot4AdnAkAxO8WYcfM7xDvRf+tStguSBjPXD+klH7UuYvt32T5oVeWA28iWemuAR44PEfSFiwwYnYw==","signatures":[{"sig":"MEUCIQDxGc41+7ISdJatlNS3hCuHZd5NXlhpwJyGxy7R6I0BXAIgDQwzseyKsEDCIa3fPJsM1jrSwwcEe7PhRLSCY/bR5i8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84450241},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1a2f18447005021ff09f5b5748dd53f11b1f1487","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.568_1786503483988_0.4125760775854297","host":"s3://npm-registry-packages-npm-production"}},"2026.3.569":{"name":"skykoi","version":"2026.3.569","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.569","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c8d00403622ee61f7e5670568ae65fe1e24d299e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.569.tgz","fileCount":3115,"integrity":"sha512-NU7UuqQ29GwP2fNe0uPcsoObEdsTIT2ufsSJXpsPs0UaVf54sMeWzKCo3jjgIQOfVu3gTiieaZrcghirKl/jYQ==","signatures":[{"sig":"MEUCIDFkMD2ndNPH3d7ufU/dRKwgkotMjt0JSjDyCLTipzU9AiEA5K/ZFPx+7I6WbhAQq0xYH8BRrzNOgALNXqBhF4MLfkg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84451389},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"bfe7d808241af5ea4e8947cf920fca43a76878f3","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.569_1786503685345_0.05507298621278478","host":"s3://npm-registry-packages-npm-production"}},"2026.3.570":{"name":"skykoi","version":"2026.3.570","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.570","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b003c0a1486676a85cc546de553fcf8d920b721f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.570.tgz","fileCount":3115,"integrity":"sha512-rcPFkOjYC+T/Dgv+U/MJR5x00nUuk5IoFSHWv30l5tMQ9PRYxH70hKzygxb/j36AM5En74JNrngFTPSugfAgIg==","signatures":[{"sig":"MEYCIQDuSvuioaiqYOHhHbHTKckcgWpG7KyRHVC9GUBzpxCoEgIhAPnRrRR0fq49pIpSZEcNlvrqG/mtyhCNq95j/IMO/4xg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84454595},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4c0c5acaf2b914f2331680ca4bcaa6b7873410a6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.570_1786507293238_0.27761825460459044","host":"s3://npm-registry-packages-npm-production"}},"2026.3.571":{"name":"skykoi","version":"2026.3.571","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.571","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f8a2041fbaabd51b9544a215b54edb3b201d5806","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.571.tgz","fileCount":3115,"integrity":"sha512-Ivb/vyUKkUE1QrQB9OJ5X+BPrwb2KIrrLE7MCapCwjMVG9CFLVoqFqALgNWaOxyTtSzBR70mCfGDPvDAgTf6QQ==","signatures":[{"sig":"MEYCIQDEyzpJ7gdMDz2q62d9yxc41jFthiIgFxzRQPQ01iCF2QIhAL9XDRujcCdhsl33F8bE2o4higPnF7g841AXOcQkNiSa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84454595},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"b630d7a00ff2406813bc28983be8b4b647952da1","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.571_1786512901195_0.6459321698085878","host":"s3://npm-registry-packages-npm-production"}},"2026.3.572":{"name":"skykoi","version":"2026.3.572","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.572","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"0d0a2e396fcb68ec36b208c1a0441a35aede0dcd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.572.tgz","fileCount":3115,"integrity":"sha512-vbj9RQl+Z+7k/P4ugbERoVX9+wgn5FdmFX0s97SZJEKAWLDgLSWL0GUCimznUDDTegeJMf3Go5k833TaD7MOdA==","signatures":[{"sig":"MEUCIQCmcYbj2tebpJ/Od9Y75eMfp2xcvvP07yu2//p4uFsmJQIgCWghGBcAx1wLNFCZHHqL48AtuUK95oQJ8lbHxuJYlz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84461461},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"78a2ffeb3ea77f3ca765281ba046e007b3e9818c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.572_1786682078887_0.6301281617299581","host":"s3://npm-registry-packages-npm-production"}},"2026.3.573":{"name":"skykoi","version":"2026.3.573","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.573","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9f58f008e9e87860bc84ab508956df1260266082","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.573.tgz","fileCount":3115,"integrity":"sha512-CCZFzefoOttN81vP5ZzdVwZSjnkfSUuMEMYO4TDxzRItIDYlp4GIRqtR5s0mFdIKbL2bNWZkhWrkIiwXpmU6dQ==","signatures":[{"sig":"MEYCIQDJuTjf2VeXqIksF4sgBwPE/VW7aOT7zOpQpJqCUZUvdAIhALt7XaBg3MJCPr8d9qCIsJlzoo9QJExSwj/URYfYqj8R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84463062},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"7b4453adce8d69edd0e5c8030e0ab2963e1d30a4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.573_1786684107548_0.7437889125749138","host":"s3://npm-registry-packages-npm-production"}},"2026.3.574":{"name":"skykoi","version":"2026.3.574","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.574","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e31f711c93349c563d816bf52622a9a541260498","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.574.tgz","fileCount":3115,"integrity":"sha512-egZ4e3oCE/fxRskd9rB/2worNsjQ2M4Lu/74JsVoFCb9G8dvgDd6ORWV8ou0M3/qkGTe3UpUF8fofNc6ptZCgg==","signatures":[{"sig":"MEQCIDB+wakjn00VKORaNJzOZf9LPCqgspzyjJC+X9s7VEdzAiB66QYWGkR4uszjYC2hCuOaajps0tN2H5/JATJZU1Uv2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84463018},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4fe058d6c0ccfa137c99795565b85e995213c418","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.574_1786684494343_0.5999155952122819","host":"s3://npm-registry-packages-npm-production"}},"2026.3.575":{"name":"skykoi","version":"2026.3.575","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.575","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"fef5536537530de92fc4582eb982f199ac0fdcdd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.575.tgz","fileCount":3116,"integrity":"sha512-93K4zO421dB+Q1SZ+TYAt2aLJJXVrG4sM1PUmbCXGDxsoMYSv2OqfDYPityle4xjyvqH4jgfgn8KVgN1GSnSIA==","signatures":[{"sig":"MEUCIHoUo1fRK/rOLX/BwmAjIEhAUMm3jdDuDw/h4o/Ciz1PAiEA2TuAiQHebRB4E0qJzEK881CJJ9xo213PbzekDcEEGzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84466870},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"7af26f04fee3eae6f2cf6cf325a8b0b0c708ea1f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.575_1786684697051_0.9688739346482804","host":"s3://npm-registry-packages-npm-production"}},"2026.3.576":{"name":"skykoi","version":"2026.3.576","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.576","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"e48c09bf64c6ee1cd943c01ece84a4544b0efd5b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.576.tgz","fileCount":3115,"integrity":"sha512-wbZiwZCeo2WH7QPATP+029uUuMGnkZvJqy0fV7VJdiG8zX7hq+psXjsCyaNpfbqwm8CyGgaZSQXq6rdA1tEDZw==","signatures":[{"sig":"MEQCIDgOZ5ZidiNgMj9D+yK15pc63Kjkkl5Yi/iivI0fv4gEAiBPFhpWJevWTW0oIfuZXk9LZc4Vg2Nri1xvkjMScv/OGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84463024},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"cc3ae792300a1067ee9e05642672c44665bade37","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.576_1786686179249_0.2768915364237008","host":"s3://npm-registry-packages-npm-production"}},"2026.3.577":{"name":"skykoi","version":"2026.3.577","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.577","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"27fca7489cae68ef808972aa50b65b1b2dcaa738","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.577.tgz","fileCount":3115,"integrity":"sha512-8vqga1JbhJ91p4nSddPcZYZUUR7awZuMqBZrP3/xvSD7o+6G7kjvx0fP//sb+jUSbuXeS/ZLAwEoacl1cyjBRg==","signatures":[{"sig":"MEUCICifyg7QLeB4/60/OJ9dS1FaFxwVVzdZMDl6rEMZfcFvAiEA0su09+VV0h7hDAhYNCCTK3kuFllV2LMimTXqqRJCOJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84468427},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4eb8f78dc496892e171aa3ace5db53d1007c059e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.577_1786687367237_0.5006842928642639","host":"s3://npm-registry-packages-npm-production"}},"2026.3.578":{"name":"skykoi","version":"2026.3.578","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.578","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"1000ec0ba985bd5c3c9a7670d695a6540d9d88c1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.578.tgz","fileCount":3115,"integrity":"sha512-pqdGo3Fwn+Y0JcUzG1LzCSGGgRg7BKJhNHB0SSzg1r2VaKe8U2/9K1uxcfCHKONaP9r0epUeM/+jt8Ssj26qUw==","signatures":[{"sig":"MEQCIEjGGTh8rzOWrmknHoKtnp2iN9MZ6IilrKAeIciB/0l7AiBeY6G8Py6AG1PcCbcwgK3t1RhnvPPdQd+qUJJt22wouw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84470643},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"582d58816d2d4e07242708d441b14d964a95f7c9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.578_1786688418031_0.18912660569047213","host":"s3://npm-registry-packages-npm-production"}},"2026.3.579":{"name":"skykoi","version":"2026.3.579","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.579","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"ae7315b807be3a404121c1b33de0e1560e6cac89","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.579.tgz","fileCount":3115,"integrity":"sha512-NBwcHtnAkEIg6llObCqjEtumMbPzZen/a6uvnkmuDDyEyoCLyy6fUhSPKLd15PsEvZ6DZp4CHbYoqgQJnd1r6g==","signatures":[{"sig":"MEUCIQCqcW0gxaIIBPE2/0G74PG8gFrT4dMiwuSaA11BAG9+8gIgGXzxD+BrQ6+9RQPcIszGCFwDwxslsW4DJvPYgEG15ys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84472040},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"0772ef47a742576b43264b94947c72b037b0831d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.579_1786689603284_0.7278759455796899","host":"s3://npm-registry-packages-npm-production"}},"2026.3.580":{"name":"skykoi","version":"2026.3.580","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.580","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d103ea8058890e6fa91e3e905070cee66b9d7ba7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.580.tgz","fileCount":3116,"integrity":"sha512-SIPDnqAuYQl+WsolyUOdUvw9dHMV47ouIeornx3eiEipX6oMZqjyGXxbp+BnXcIZd58z/tRmKmzWh1gZ3bdB5g==","signatures":[{"sig":"MEUCIDR7tW2U/W5qqPWj3P987spdYCVGVCCyeinWrJFA+YWYAiEA6AxQugsqEWTxS/wAIz0mvaQhDB80NH1FsXXcc/ZU5nM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84479291},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"5ff01ecdd170a532992e3b6c9bd88d618c863b82","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.580_1786726918589_0.05313280019809907","host":"s3://npm-registry-packages-npm-production"}},"2026.3.581":{"name":"skykoi","version":"2026.3.581","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.581","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f1acf721b4e41c533f56f8c783b8c167a1716a7a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.581.tgz","fileCount":3116,"integrity":"sha512-C9bK0fOVc6ZuuXhllVflfk1KotqHd852X2ElaDtwVXX8guRAZvOYItNztEvedlyPFWFbHWNbS8HEfB4CzV9X4g==","signatures":[{"sig":"MEYCIQC4Elt74ZiyLznXPwDKva7LxA5McPa/uB1xtoP4OgUaowIhAOVQdnc83+vXfICxo2O3RVLzByItbCBKk/zwgDq/pcHL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84481402},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"01d9cae7df26976cfa22149ee659f5bdf31c1639","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.581_1786729310405_0.08723249401490785","host":"s3://npm-registry-packages-npm-production"}},"2026.3.582":{"name":"skykoi","version":"2026.3.582","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.582","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"85e8c0e11cf620a36ad054071e5194bdc028ff35","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.582.tgz","fileCount":3116,"integrity":"sha512-Ez7J8jWVarcRzyTPePM404oW0DChIU3wXN/jiE25VZw+Gp6ansnyfIMJ2MWPFWOfOmX4znOmHjnyb4N0QfEXvA==","signatures":[{"sig":"MEUCIQCgCvZB4Fd/uawRPlrCP7+8p1qc430Vp7gSjFAmgLEMEQIgNJ+4+kwax98BIIdw2JbKUsji6ta7rXD7RlI7tgkRZw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84483720},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"fcb7bfef0efdf600d7e56481c4debd2eb39cee81","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.582_1786730045522_0.39716742173020236","host":"s3://npm-registry-packages-npm-production"}},"2026.3.583":{"name":"skykoi","version":"2026.3.583","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.583","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"a1bb80b0d47c8cd8bddb66c726bfc6ed28d2030f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.583.tgz","fileCount":3116,"integrity":"sha512-2FqX2MhaXzonbDnaNv0vISRO/K913vBl7SSQnye7tiUMuJ1MHwVSxU4f1vLfb0X4fnCOjeC5/N+NwVnj9qXN9w==","signatures":[{"sig":"MEYCIQCVdAoOEHDWuctZT9Yd2VLk3TmYMRGK+hOWMX6x9MLPBAIhAIbiKMS63su4iOT2fymp5fdzhqjGVmBhYWBo8GN+KyMF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84484986},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"3bad9a9cd021da98594269bc8d89b04d07cab960","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.583_1786731754471_0.3319943374741894","host":"s3://npm-registry-packages-npm-production"}},"2026.3.584":{"name":"skykoi","version":"2026.3.584","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.584","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d1b6c24adaa19e12b13f78f9188e9f42766cb253","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.584.tgz","fileCount":3116,"integrity":"sha512-q8boELalMOr7pjV9nERah+Qav6WVOGUyYgSUoF/au2sUDL68gcBXrsdYsrd8DI1pqGVFIW6l9P4TmvxdzNYFyA==","signatures":[{"sig":"MEYCIQDC0ka1a8Q1GVLZ5DXEK1I4t07wb0jjbWcF76u9L3OewQIhAKlCn1W9m9IaJ21orfD7x9sniBgiA8kWZBKmqp2XyDhz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84488940},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8933a1e5e8e54443860c416149dce6a5bccb9805","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.584_1786915800152_0.40968762813336324","host":"s3://npm-registry-packages-npm-production"}},"2026.3.585":{"name":"skykoi","version":"2026.3.585","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.585","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9fe9dfdc7eac90b8247a09fc18f4786eecc72984","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.585.tgz","fileCount":3116,"integrity":"sha512-R5MAsqc5s5v4uGnokVHhjpuS13BnpmouA3OcdT9jzUmqIc84VMExUZKfXpTbkF+k9IH886sYwE9oNkHH6ZF4/A==","signatures":[{"sig":"MEUCIQDGRjU4VHzduOewC6ZHaS2E1EufCfgBwSVXFrGAo5UcGAIgFZRsnxzm5sUtlULzWNJfiY7Nx+0D7QI/JhhhPgYP+VQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84488952},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"90578333beeb000417b2757b6a9acb7614a90b7a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.585_1786916444451_0.35308380563397","host":"s3://npm-registry-packages-npm-production"}},"2026.3.586":{"name":"skykoi","version":"2026.3.586","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.586","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2c66432f706f4118cc1302a87c86d4e5f105ccb1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.586.tgz","fileCount":3119,"integrity":"sha512-fMux6RoS80tt/sSVMj/B9kkK3Lnpfv8EuIIF1pBqk+pX9JATmZZgHZH6IdB1gQ7wJzTy4BoLip9ERNd0Wt6c8w==","signatures":[{"sig":"MEUCIQDuYHpG5wQUSnDJrNbC7m4FFk/s2qQ5kf67rwyf0r7nQQIgW5/1f2NvtoDCf21cD/mdG+ODp5G8OqzdCSojrReSJmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84534457},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"5a81ccda2be1150fca488efd7b403aadf54ce10e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.586_1786956450073_0.26215128462919424","host":"s3://npm-registry-packages-npm-production"}},"2026.3.587":{"name":"skykoi","version":"2026.3.587","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.587","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"fa94ec1334890b0fcb822f80b1813609d50da02b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.587.tgz","fileCount":3119,"integrity":"sha512-ZwsmkPOJ0AITnxJxsQsnq0Vwa76FfGmJprfM2wrb1U1uIbGmJleh6t/ie6WoZ6xOQzk5uOf9P5eOI+rHlD8DKw==","signatures":[{"sig":"MEQCIAYb0Fo5RNR5LtJLAPyUgZCdsIqTaiw1OQdEg0vmJqylAiAKIeX7DUcLNJ9zx04BhvsOyJFd5NerrYDVVkBIrqohRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84534699},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1e512bf05fae8778864c78f988dba05576b97178","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.587_1786958582165_0.8992629295261962","host":"s3://npm-registry-packages-npm-production"}},"2026.3.588":{"name":"skykoi","version":"2026.3.588","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.588","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c178c3238f0139d6d4f3be55ee8b74c5705d6fb1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.588.tgz","fileCount":3119,"integrity":"sha512-LzuD2oaaovD4f+FsBV1YahXtSRJLh7Fm5fP1nUPunCPsa0qms7DZMubLB69CC4XhGnBj9SmgyZemW25TjQWchA==","signatures":[{"sig":"MEUCIQD83/oF6VjeqbWGMQHFMStI4wwYzEnmyHbFCBNdqWGgTQIgPNvqV5DCl0Vdrsa8bNFTJoNON/RUFoUfndu5wqRE+vI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84538837},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"dd4a79022b669c010cd490a49575682187d50326","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.588_1786994936595_0.30026681669236965","host":"s3://npm-registry-packages-npm-production"}},"2026.3.589":{"name":"skykoi","version":"2026.3.589","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.589","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"79ffeb09512d7f2153aa75287721a754a61cd0ba","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.589.tgz","fileCount":3119,"integrity":"sha512-HXHIgbkbpOic3ayhmm7w0O1Y/WjSdf5wdrl1uTbmFDr+XBgHSIZoGoMDRa2scFGiF29bhxAMVSqdb3hiY+kzDA==","signatures":[{"sig":"MEUCIQDBtdrrc3HVe6bIgW8K0to/oJmYUbOgGDHrQoloKkXhmQIgGSfbwjjXL92tIfEBUkeTQCqwTHRWA20wd4J2b7Mv1fI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84543349},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"11d4555507864982e12d880b2e264b7efbe285df","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.589_1786995631064_0.4841707720307735","host":"s3://npm-registry-packages-npm-production"}},"2026.3.590":{"name":"skykoi","version":"2026.3.590","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.590","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"d545da167eb46c2c254c063f00ed1b6769a31e18","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.590.tgz","fileCount":3119,"integrity":"sha512-GQVTCnrogepSJoxhSdGL1Ti1JAsFVwrzNXv3/VDsdZErsQI1pL7appdSNzNGCPL4snnSivrcl+8ofOd5Yi8Ptw==","signatures":[{"sig":"MEUCIQD+dlkrvvBTCdiL+fC5PQFKi27B7+HnkYFDW5UTKk4rrAIgETL122kVya37h/gZx/AgR3AV8/hP4GLLAhXQLwGxOfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84544058},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"b994bd8dc38d28ecf483cbc78de95ef1ee094dfc","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.590_1786995932725_0.0022428434856074375","host":"s3://npm-registry-packages-npm-production"}},"2026.3.591":{"name":"skykoi","version":"2026.3.591","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.591","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"169724550fcf67ff62d127507d71fdc23401f02f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.591.tgz","fileCount":3119,"integrity":"sha512-gFOiZUAulTx6FySMzXLbdiTOZZvgis9cPapXN+LbrjuQM6kDR4e0dfphEnwUXd5jPsqJVq79FxFBeWzJzYd52Q==","signatures":[{"sig":"MEYCIQDCo6FS+TFv8iiYTk0wyCKlbyGR6naAmQ14uziz8RZFKwIhAOowtAGFE9f8vfpzdDn/2n7fJ1CcNGogBrY1VmtJlLHs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84548014},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"0d55c7ad825231a1e0592be2dda7b70f81196dfd","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.591_1786997079739_0.3096653782580512","host":"s3://npm-registry-packages-npm-production"}},"2026.3.592":{"name":"skykoi","version":"2026.3.592","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.592","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b299049323655ee85e11edc2012bc18bbd7753a4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.592.tgz","fileCount":3119,"integrity":"sha512-yw6Nx9+tjb+h5MeO+1J968YFuGnah/AxoFl5yTQDa6q9Qvs5ox8HgWHf2d3Zq51kCWAwUsDhMdluXarqxv1/kw==","signatures":[{"sig":"MEYCIQDysShEfNyxUybZAbp+pg6hDHemIhEFlaGj3IVjdlpqgAIhANcJTLXUI96JEeh7yw7raCo7itrTfYAU9b0pHVL2Mg+P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84553488},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"4d0d575f9390e910b9f6a4c64cdbf6f963af6360","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.592_1787000324313_0.7847287267054006","host":"s3://npm-registry-packages-npm-production"}},"2026.3.593":{"name":"skykoi","version":"2026.3.593","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.593","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"3fbef41c5df3768627fc2839fa86d41e679ccab0","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.593.tgz","fileCount":3119,"integrity":"sha512-JwuoVYo4vFlqdeKPHLzJqpPVJ0euvl1mxi3wUTQ1i6jN1Afldz7VSLgi+K22xUslBXNFMR/HTwzKHnyoRI2enw==","signatures":[{"sig":"MEYCIQDV+0sWTeXEFpcvfqB+OA1FmgN/SbZU+l1XiCs1jrYQ9AIhAIiKMHmiPcwUxTbE3QKQtqvzcGEG/48TQeVkH6j+zqyD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84558571},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"3a55ce72da2fed66fb8226c13547b76bea4f0f57","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.593_1787000867654_0.28782579969810107","host":"s3://npm-registry-packages-npm-production"}},"2026.3.594":{"name":"skykoi","version":"2026.3.594","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.594","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2b252a8de399842862eebe305a1fe9ee10b8e300","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.594.tgz","fileCount":3119,"integrity":"sha512-KWcKOn5Zsdu+0TJz+uvkyE5k9XFwEb+7Hx6M8YCi7IbDLZSGQgTyDu96ivxLZjUUi7wTjzbxMINEM/eBYm1XHQ==","signatures":[{"sig":"MEQCHyW9xLnF5E2i7nOlTC6hX22h74ZlRNkZUTp7YFy3mfUCIQCaJNxoG54ODXE6AOcw7iWADCqSkq7X+XwsqYd93fq63g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84561292},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"be1f952e5c6d22f945039c4883617dddc55feed6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.594_1787002128033_0.6968317655845024","host":"s3://npm-registry-packages-npm-production"}},"2026.3.595":{"name":"skykoi","version":"2026.3.595","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.595","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"91f2cffc2e2d398c629aad67ff7839e98e213971","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.595.tgz","fileCount":3119,"integrity":"sha512-7JGCVF3JFa2B+gk0B8CoJfSn/PlLNHVwBxOgxvnuzcahz4xTkJQOLDpIauYcNrqtsnPGjeL9Rl47MhkddiooCA==","signatures":[{"sig":"MEUCIQDxt9W0cRt90ynICNDL7ruVNnFP9gKOxvBRV6qRLv0l5AIgGdECPyD+R4nFH7j8ajZ4GB4pio21tnfTP1q1ib27hBY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84561220},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d644d7d66adc85943d3edfd9a95f9a896c3c081b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.595_1787002893531_0.07986777316462224","host":"s3://npm-registry-packages-npm-production"}},"2026.3.596":{"name":"skykoi","version":"2026.3.596","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.596","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"764be2453f6978b70970ef2df52098cf2b5ad31e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.596.tgz","fileCount":3119,"integrity":"sha512-C+uo3ib1gv9NpddWlwra++s5NeOLw8Ui+Vw2Am9q/Ve0euRPnqCAvRCuwFeK17F73EpBWvJlJk2znZ9DjT0WJw==","signatures":[{"sig":"MEYCIQDqJGsS3CWM/2PZmHzQKKv6QR6M+cM3HsinVaaLcMHZtAIhAItk9U0XxT8rXE/Adtu8OQRzbw5zyvjwTioL9epfnCgs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84564939},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"a36b619d71ac76ef67feb6597c2724781014d63e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.596_1787004432542_0.5110592120063997","host":"s3://npm-registry-packages-npm-production"}},"2026.3.597":{"name":"skykoi","version":"2026.3.597","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.597","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"baf6c6bca7a6040f8cbde958d2b46428fd21c651","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.597.tgz","fileCount":3119,"integrity":"sha512-MHyb0UMs0++X4wW8ejqgpKnoMf4Vo2q+xe46/NePRc+MlS7wb0gsPxBCZ23x9Bf5ltZpawtS/MBGj8E7TTXNFg==","signatures":[{"sig":"MEYCIQCAk20yLln0iEIlehhMOHcwa62A/BGQ52YF+wxbzFbkYQIhAJRX+GDD8fcS5tRLBHKSDqPfVtJvJDcHLU7aLx194p84","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84566514},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"e0374110409ba65884d35a2cf48a88fb398cd4ec","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.597_1787005374930_0.14840089078394136","host":"s3://npm-registry-packages-npm-production"}},"2026.3.598":{"name":"skykoi","version":"2026.3.598","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.598","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2461d6d76f9b31ff66e348e74ce037face9d2744","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.598.tgz","fileCount":3119,"integrity":"sha512-AOVV4H/yy0W/LMTijiLx/WU5XVCG3NNUnA1MjWt9zhfucrVzo9O07jYXb466PxFJR8D9B9/XuwEqod6miDehvw==","signatures":[{"sig":"MEUCIQDZHoG3/ghLjDTUhYAUlHn0VGGLePyeUFnPiWItvwMsuwIgeBJd9r8hO/CT69bPcoJc09mcEuip7Ql41z2j+SLQIvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84566718},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"257ee31f382adc199e1d049cad7f282eb4b1174a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.598_1787006250656_0.8191743641850562","host":"s3://npm-registry-packages-npm-production"}},"2026.3.599":{"name":"skykoi","version":"2026.3.599","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.599","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"56ca4ecf32bc98ab03d74343432255088be58f4e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.599.tgz","fileCount":3130,"integrity":"sha512-bUP5+MGDY4datR15WcBrswIT7Iy72k0NFJfQH/1I3aGCNxBZ7DN5ojoAQPwFa0zjgBEB0bVsqqVUIVfYc5DaOg==","signatures":[{"sig":"MEYCIQDz1CTZDmXrtRPAP5wAEHtjYvHG83uYVD9nRPAVQ3WYugIhAOFV2YbEPrwFspvFQd996kvD3Zs1GnugurTDyBZiVdPN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84630919},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"22419ae72cf7fbd0007427e0149ca57bdb4bd7ea","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.599_1787098580724_0.759435986290762","host":"s3://npm-registry-packages-npm-production"}},"2026.3.600":{"name":"skykoi","version":"2026.3.600","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.600","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"6c97f55c6eee48e4870a1674ef8152f9be5c37ed","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.600.tgz","fileCount":3131,"integrity":"sha512-wTfC6U6T+Zb8IQXqYeeK9dHox1X3NNihTl2STkW4toVx5/rOCOaYv/X5a5PKoCZfkWTLszRwlJ3UDu5H4ksNkg==","signatures":[{"sig":"MEUCIEAIYDyeXupA0KectII8UCpWEatbQBNrvu099gTBrYLnAiEAsD4u8/Z0vdk+/fLKOtVl+n/9/OEugJmk0IhoLY2ogzQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84633512},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"2d4d2325a4034e8447b4723ce5165de1a7706675","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.600_1787108065546_0.2516298475024443","host":"s3://npm-registry-packages-npm-production"}},"2026.3.601":{"name":"skykoi","version":"2026.3.601","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.601","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b8000f32a0befcd288c1e9c161b72571c94600d7","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.601.tgz","fileCount":3131,"integrity":"sha512-JE4Qc1Ya7e3vbMQQvHRb03aVh32UnO50M1rzRHTlXvDbzrd2dzaImB3heLLcs7Y+9OlwIA58m8YskkMs7ZEEhA==","signatures":[{"sig":"MEQCIGkOkigkiDoXV1bkIGR8m/7KF82WsUk62P1YrLS7EV8UAiA203ds3EZDO9g+7n4mI8vRgTgULnAjORfgvKatp0UbHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84634100},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"6017e6f398cd15ecb249fa100aac4353b70a4644","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.601_1787108302102_0.14573991810678755","host":"s3://npm-registry-packages-npm-production"}},"2026.3.602":{"name":"skykoi","version":"2026.3.602","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.602","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"74dc4b2865b7085466555c53fb60c21bd1698d81","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.602.tgz","fileCount":3131,"integrity":"sha512-R5sJeFWCb+qKe84inA158UbiiGTSjBuVdkKVZflV+CLnrsbkhQZCApjzIszvQjRj1mSQsl0uRMzpuI9a1zbnXQ==","signatures":[{"sig":"MEQCICgIAFR7YofDC79AEyTQDJspbzyrR2VpmoNG26wly2SXAiBuZ6HSv60XAi4y+b8f48yJ1AOgeu6hVQDsNfbAdzlesQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84634341},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"b45201e1d8996765e085d7ceec9e9b1fb7be646d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.602_1787115082717_0.9035724894999302","host":"s3://npm-registry-packages-npm-production"}},"2026.3.603":{"name":"skykoi","version":"2026.3.603","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.603","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"5348feccc5e30422a16b23d4a8b75e628bc4db45","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.603.tgz","fileCount":3133,"integrity":"sha512-IkncJIPHkYU9r/jojQInh4iY2baQkVGsWH0/lzfIdPhNoH+KPTF3mrmfU1+pxGmg/bubOzpdH+2AgTsZ+8By1Q==","signatures":[{"sig":"MEUCIQD+cEb3v0gcaJjm5vep0ndChatzV6Rmfmv2WoZIxvURNQIgLQGbPi3Se26h++aXt0hK5BHpOd+PlYPVQvMorNFao5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84641390},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"f8f1b5677dea75f187b20d40c680e28a53b2d6e6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.603_1787117224068_0.4484170487119101","host":"s3://npm-registry-packages-npm-production"}},"2026.3.604":{"name":"skykoi","version":"2026.3.604","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.604","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"6570aa3ce437b5c8f1795623e8c6dd98b112fe24","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.604.tgz","fileCount":3133,"integrity":"sha512-7o7TL4QJCI3lcGt41yH1aa1uLf9TeP5q1Seni7HsIz/mtd59rtUb5vB+Bqctr1fZVB6nQ7L4O1cWqbPIEWIrTg==","signatures":[{"sig":"MEQCIBtQhbVWI7yvUB1APD5ADmrbO0L62QsN1PxAR+wkFNY0AiBgz/Nqac8IiVQqO4G3U/KKZj6Ww3xQfiVYBlEbGHrX3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84644981},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"879bd3c3e3600ada3826ca66581c70d33126ebe6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.604_1787119950523_0.060231256123798094","host":"s3://npm-registry-packages-npm-production"}},"2026.3.605":{"name":"skykoi","version":"2026.3.605","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.605","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"76e9a7e18cc99c3cb32b65a714dfb3cb17b85ae1","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.605.tgz","fileCount":3133,"integrity":"sha512-kOiTOkJ5Kjdo+HQXKdLigFKtGAMoOXPYdhSbsLTFJeQ2bp/1VE4MumVU8rcVs6n2r321Z5BjOcpj/A59ILBELg==","signatures":[{"sig":"MEUCIHhohDAL6nTv1jAn8foIdm6DyF1k56X5nXqBKhpOIDqkAiEA/iP28M570RJIr64VZf1rvvuRoQtDkRfSO0JbvSCB61I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84647755},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1d1560d99e8c6fad11478cf15a52156c2cdf2040","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.605_1787121068924_0.3935863116325671","host":"s3://npm-registry-packages-npm-production"}},"2026.3.606":{"name":"skykoi","version":"2026.3.606","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.606","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"c7c37208ad4b4dc24c5b9ec24205a0a47e06afec","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.606.tgz","fileCount":3133,"integrity":"sha512-QlgeOftN6ZYLpMhdJt6trOZDJK2KA66kGNZDzPgjK2RM3G7WpthfQhnvFe+BRCTFRygoUdZbq/2z2qWhzQ3HBg==","signatures":[{"sig":"MEUCIQC+uYjftNggrq1Nm6R3P/rCS6avcSHgDqxCoWF7wm/9lAIgSbAhOVT6kE3eSHXlzV6YqNU0tvhQW4W+qH1Abn0rrZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84649644},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d0f54205288518d3bd9b5ad7667d8be9b3619dc2","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.606_1787205255477_0.35049766879552036","host":"s3://npm-registry-packages-npm-production"}},"2026.3.607":{"name":"skykoi","version":"2026.3.607","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.607","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"b8d43fa9efa5bb164a9acff46f4102575dd12ed8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.607.tgz","fileCount":3133,"integrity":"sha512-ivHCAWAybdbLHTbgXa0XTL3iGnar7fl6Ne9ZJZ59KOU0ye5cdIYT4KY4O5DeCgJC7cHxiUFRqA4rUTJYwfCNyA==","signatures":[{"sig":"MEUCIGRBKPTGCo7fIG191ITYgLFQYUiZSgDFBtaE88p0+3KAAiEAy6GAVW9qkS+3dJePspt4F99cXeTsvH6y/wnwEz3rWlw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84650916},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"843bb4f3cc6d1d0f7b7a4c17ef351e614965fe2d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.607_1787206458022_0.38675901014800496","host":"s3://npm-registry-packages-npm-production"}},"2026.3.608":{"name":"skykoi","version":"2026.3.608","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.608","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"76bdff7ea12851e17d694dd6041e6116291d251f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.608.tgz","fileCount":3133,"integrity":"sha512-8wN6cm7SqwSxnuVzFDDNkUkxBCtWVicse5zeLVhRsHcuMP+tEvT1MCjSgDYPytoOu6TTL3MEMWVEfJql3PYNWg==","signatures":[{"sig":"MEUCIQDDz6HLVe/deQcYa4szrPYt47vQZskfzv/hs8Plz9+OFgIgLsSIVhPdiTHIsyr7eqT3cthpwTboxHToQFT11m/2oF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84650985},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"6792be337657347d493fa88f445fdc998c4b3161","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.608_1787208238747_0.23334909083790123","host":"s3://npm-registry-packages-npm-production"}},"2026.3.609":{"name":"skykoi","version":"2026.3.609","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.609","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"2106393b1b7d9a2b748493be00422a66d86da742","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.609.tgz","fileCount":3134,"integrity":"sha512-xkA9nvK6W8sDiqGCemjJQw4+bhKiKSo8jq3hRxq34/YpZtjUZNebuWv/ybGUATomf7Imi/6Nl4iAxKGdM9cqZg==","signatures":[{"sig":"MEQCIApig3l48m03eT8PAUVZRB5eADA+9YP7Tgcx742gSEOzAiAv2rQ9AZMszNNGDWL2VuB7TLUMgN9w3qpmFbTgiR//Wg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84686101},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"0a1c5e194358bc8851ad3fd58d8b8eea342b5ede","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.609_1787254810419_0.6432926759194271","host":"s3://npm-registry-packages-npm-production"}},"2026.3.610":{"name":"skykoi","version":"2026.3.610","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.610","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"57abf3dc74a1f4aa602d0d9beed7e09e59672f42","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.610.tgz","fileCount":3134,"integrity":"sha512-ozlc9YpUUR7DZNIS3L3/a+3JU9nA7qqESNIPnGP51lm/CkbqgEZJkzMnjnwNIYzu/QHcUg6a3OwmB6+hFP+tzg==","signatures":[{"sig":"MEQCIEd1x529nRFvFlD/pP8uSJCTJ8e2K1yUcyGgLomToXbzAiBgGIeFjjhzli3Hna5wdq4EYedSPVOQMzStiSVkhetUYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84686508},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"91bb9a586c2b11f600a363894514ce9f7a9e41ec","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.610_1787588913699_0.7691316262243977","host":"s3://npm-registry-packages-npm-production"}},"2026.3.611":{"name":"skykoi","version":"2026.3.611","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.611","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"38a36a3ef8a6a3ac3d84b0dcb9a0da5c1288022f","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.611.tgz","fileCount":3134,"integrity":"sha512-BaOuQluZOiI/CsyetAZFP4a7qoMGm4sEJmq1f29l85gJ4LcJR2bUGV+3mMXJ9nDuyEN0kLmZyCXRQr0UGb50mw==","signatures":[{"sig":"MEQCIG5Z9CIY8evxVLbUhSWPSNOeWXy0i4k1lWTMMRdzUBZiAiAJKnZuRT/6Uys0t7eRKpfg4/y/MO1wBsn1DZn7hi20Ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84686771},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"bd2608e9fc4855bad6952329544cacb57f85c64c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.611_1787590046386_0.29747005467890597","host":"s3://npm-registry-packages-npm-production"}},"2026.3.612":{"name":"skykoi","version":"2026.3.612","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.612","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"f16c83b86681bcd0a1520bd5903e43bdd9432ac4","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.612.tgz","fileCount":3134,"integrity":"sha512-6gcV6mtQ7C/nVY4rSLYaDg8a2D/hccCdbTnEcb31JG/zquoEBVURHRqOUdHhzeUXRU9qmgz3GEfHS7nKxs2iJg==","signatures":[{"sig":"MEQCIHgmnhcpOeDZnYdhi8NZh8fLGvrf1spE1ZIJJddMxed/AiA+07PpS52ksLVtqQoPt8rFOqjFRp6a43u7D2zmdhI5Pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84689044},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"8ac2e31f480168772b3fd50846cb89792693f684","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.612_1787591196018_0.6770861762759497","host":"s3://npm-registry-packages-npm-production"}},"2026.3.613":{"name":"skykoi","version":"2026.3.613","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.613","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"378217b5265220aca4ec22a200a7aef82135e79e","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.613.tgz","fileCount":3134,"integrity":"sha512-K2oTeZZUNKjBVdKX71gpe769fEoZfPp/utmrjIcydnlwosWkjZsp29Pc6clrUBjNd6KPsvBYRO2qONemurejTA==","signatures":[{"sig":"MEQCIE9PiklNz9SYTiJ8AYcdg1HWfanlUnZwJ/fb7o71PQe3AiB4Y57rOVcfaGx4wZ50cYjbhWoUCk+tW5wDxWpsyvF7Ug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84695148},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"1ab5b7dbc2b155ed0f6526466434f3871e506a16","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.613_1787592220406_0.02329280669182432","host":"s3://npm-registry-packages-npm-production"}},"2026.3.614":{"name":"skykoi","version":"2026.3.614","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.614","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"cb6941ce268043d4dbd86e659608f398e24d2d6a","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.614.tgz","fileCount":3136,"integrity":"sha512-ljF0qXZdmdpQ5UU+eGgR5fhWD+PDM/m1JgP/+aOjTpV7ajb018OXz5ngWzTLMBTsRpcta/0YOhrhR/hL52jE2A==","signatures":[{"sig":"MEQCIEt0AzDViM0XniDdz1uxHxHtBkaJN2MaUGeODha4eOupAiAkRYFK0Brrf6TkihSh28qwfJcpYe4/rRzYUVGVzWBYMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84707106},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"06dc573061755975d96ec2fe461e09518e4bc4a7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.614_1787593936394_0.5160743631160722","host":"s3://npm-registry-packages-npm-production"}},"2026.3.615":{"name":"skykoi","version":"2026.3.615","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.615","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"9bd5e8baf9141d94e1a036136ee444549da65ead","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.615.tgz","fileCount":3137,"integrity":"sha512-UoLBSMKDHolsu3G/SnEjOAF7cXW+wjXGuSwxaoO+SZ4BEFg9EHjEejj7cjw/fegdGYLDTWMpr9XfKP6AuONd9A==","signatures":[{"sig":"MEYCIQCEMqkoww4tmpN030epr/mk4wnQIPihC+wi6lVu292nZQIhAM7VlVcwf+SgP1nxYqcLzgrDzHCoCL/yq76YvBsBsivP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84713981},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"6fe468a620835aa4b8c06af99435b33905e8d81f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.615_1787595007911_0.07958870357246095","host":"s3://npm-registry-packages-npm-production"}},"2026.3.616":{"name":"skykoi","version":"2026.3.616","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.616","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"da703b683778f31866fbffa28a645a962fafb3bb","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.616.tgz","fileCount":3138,"integrity":"sha512-k8UXSmJu2J65xAlPQpADd5w/IYKPSP9KH494g5URe/WlrWVjRM2CATQgYuDiXWZNuyn6RDy2N+rQ+L840LrKVw==","signatures":[{"sig":"MEQCIFb++x4GAYLfNQJ3aBhPoxYIRpgj234BDNVTTNanx10/AiB6/gHtvqN9lEB68Xc6hCOqHBR5e5Y50oQFH1jF4QTAzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84736876},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"a1f28e8cafee3b396031891b6e82538f8f7776f7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.616_1787596700284_0.7417404122230999","host":"s3://npm-registry-packages-npm-production"}},"2026.3.617":{"name":"skykoi","version":"2026.3.617","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.617","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"20871cc9d91b91b333ef8610192f3ab5db83f555","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.617.tgz","fileCount":3138,"integrity":"sha512-DLMJHpXVX+EAPwVgjN7U1T+4se8qEfW80TD1E7zKZjHkRWdiOBVwtDYWQkYa5jlewgeNZT/GnGLBUpydtlLvsQ==","signatures":[{"sig":"MEYCIQCTaNuRfK4OMeN/gWgpBo/iNB1yzDHWUkzCQpb2SwrYBQIhAJkuoB3r75mwaACpkjOSkUkrgHdqZ6LCZ0XR3nCyrtLO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84738051},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"c64617ddb57a0103ebdc1ad4c0a1802e8e59b64a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.617_1787598059099_0.9778215870971079","host":"s3://npm-registry-packages-npm-production"}},"2026.3.618":{"name":"skykoi","version":"2026.3.618","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.618","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"43ba57148f5458e0331c18e8ed4d2bc64b2daefa","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.618.tgz","fileCount":3138,"integrity":"sha512-kX5VUVOsqPGn9vroLGf6Zm45n0OvpOvLLnFfOiPBNQpSv2+pnQcHw8+fOOUT9rGo1jEwDAugBQYJc68wFdrcvg==","signatures":[{"sig":"MEQCIBr6HnAIkn8M+4btgYixja0ggaa/58Ym1c8KK6nVJVx7AiA/isLDFwdxvUd8YBV2DQX9lbSg8JYOYRM0LVk4sX2auA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84742431},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"9fac51679b3454d2d00b994f232e5d5aefd53492","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.618_1787599097384_0.2807126891894274","host":"s3://npm-registry-packages-npm-production"}},"2026.3.619":{"name":"skykoi","version":"2026.3.619","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.619","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"78bfc429997775adaf08d4c5b1712358d8e6bbdd","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.619.tgz","fileCount":3138,"integrity":"sha512-zFndtGS/jYcAewkKronkIyiDcrHJr3pE6sR0CdETQAye2k3Cc2QuOI2Fb3H+j8xLKSmIbkg/d1xf4jnHVEtvVg==","signatures":[{"sig":"MEUCIEu+yL5WqzBqpCiC3Bad7v2HR4FomFpGNAiIiOKQ2HrlAiEAnAckM9v/0lvIqRWQCMiXhLbkG5L/MYVSY3oSy9vaKqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84745505},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"d639f76a481ba7fce78242bf61512fddea73b330","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.619_1787600139890_0.6307301888718488","host":"s3://npm-registry-packages-npm-production"}},"2026.3.620":{"name":"skykoi","version":"2026.3.620","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.620","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"eef57c24a69ebd3e05a41922112e3509a76e2fd8","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.620.tgz","fileCount":3138,"integrity":"sha512-MhHk2uatk2VvyR++icuQl5UnOLDFqh8t9u4KOVnTgwH2RO9YXN0evuiw9QIMGGFD1CW8N7YtFPUHx7iupceONA==","signatures":[{"sig":"MEQCIFZgtj1ZCOSwioYNXhYIG/DJKzJoZOCbn3SMyNy8d7O/AiAHBuzCJ8v3AMr4+lmi1Mqebh/dUQXS69icBy5FU0L2vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84745588},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"aaf3d04a53ca78fa4d9aca336ea5fae27e7f34c9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.620_1787601642377_0.39244069232090206","host":"s3://npm-registry-packages-npm-production"}},"2026.3.621":{"name":"skykoi","version":"2026.3.621","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.621","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"72bde6df58eae8a100fe23d39d02ced3ca647b26","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.621.tgz","fileCount":3138,"integrity":"sha512-q/T7uPrsZ/LDtDSlWHWyyQz5suGFCOO8pgFsi4ecR4cYDhODNKcrVo9TgaZDho5giOqRMTw/EAw6pGb1tgksoA==","signatures":[{"sig":"MEYCIQCXZIKRIKFuaRuiRleiXI5tpFkbhI3Nkpl1tzx+fpZI7AIhAJhFuIiRay0c1KOI2XmKNWHdE8Uiu6Lo8SliC6pB2N4N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84746254},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"9c19e53b10d503c8bc1a0008f2dd2e100bb3bbd9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.621_1787601737696_0.11344771035859025","host":"s3://npm-registry-packages-npm-production"}},"2026.3.622":{"name":"skykoi","version":"2026.3.622","keywords":["cli","gateway","koi","runtime","skykoi"],"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","_id":"skykoi@2026.3.622","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"dist":{"shasum":"45e9ab0a9b96b437039f97c3a534abfc70a6f015","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.622.tgz","fileCount":3138,"integrity":"sha512-mwGhcUMipmLWARjwWjhnFcVjvIvgKz3DfEpobEeP8AY9h0noeeexQ5DO/2ggCUSEItX1fbbUf3kyWZEJOK2cAQ==","signatures":[{"sig":"MEUCIQDHVur88pX65lbNCwVEDBxSsDXjzwrLKiyU7v8dvjc0ywIgFuTF99YOrvtgzscWnWiVOiR8g3FVeY2p2IoGlU3wyuU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84746573},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.15","hono":"4.12.18","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@hono/node-server":"2.0.2","@sinclair/typebox":"0.34.48","@hono/node-server>hono":"4.12.18"},"minimumReleaseAge":2880,"patchedDependencies":{"@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.patch","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"},"onlyBuiltDependencies":["@kmamal/gpu","@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/skykoi.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./skykoi.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./gateway-client":"./dist/gateway-client.js"},"gitHead":"80e3104b35b79e33da90e70852a2a3b2c836b570","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm tsgo && pnpm tsgo:ui && pnpm lint && pnpm format","start":"node scripts/run-node.mjs","format":"oxfmt --check","skykoi":"node scripts/run-node.mjs","ui:dev":"node scripts/ui.js dev","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","ios:gen":"cd apps/ios && xcodegen generate","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'","prepack":"pnpm build","test:ui":"pnpm --dir ui test","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","tui:dev":"SKYKOI_PROFILE=dev SKYKOI_PROFILE=dev node scripts/run-node.mjs --dev tui","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open skykoi.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format:fix","mac:open":"open dist/skykoi.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config config/vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","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'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"SKYKOI_LIVE_TEST=1 SKYKOI_LIVE_TEST=1 vitest run --config config/vitest.live.config.ts","check:docs":"pnpm format:docs && pnpm lint:docs && pnpm docs:build","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","skykoi:rpc":"node scripts/run-node.mjs koi --mode rpc --json","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.skykoi.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","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","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/SkyKoiKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","ui:test:node":"node scripts/ui.js test:node","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","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","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","format:docs:fix":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.ts","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","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","gateway:dev:reset":"SKYKOI_SKIP_CHANNELS=1 SKYKOI_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","playwright:install":"npx playwright install chromium","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p config/tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"SKYKOI_E2E_MODELS=openai SKYKOI_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"SKYKOI_E2E_MODELS=anthropic SKYKOI_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"overrides":{"tar":"7.5.15","@whiskeysockets/baileys":{"libsignal":"2.0.1"}},"repository":{"url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git","type":"git"},"_npmVersion":"10.9.8","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.15","zod":"^4.3.6","hono":"4.12.18","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","commander":"^14.0.3","strip-ansi":"^7.1.0","terminal-kit":"^3.1.3","@clack/prompts":"^1.0.0","proper-lockfile":"^4.1.2","@sinclair/typebox":"0.34.48","@xenova/transformers":"^2.17.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.1","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@types/terminal-kit":"^2.5.7","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260206.1"},"peerDependencies":{"node-llama-cpp":"3.18.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"jszip":"^3.10.1","sharp":"^0.34.5","grammy":"^1.39.3","linkedom":"^0.18.12","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","playwright":"1.58.2","sqlite-vec":"0.1.7-alpha.2","@kmamal/gpu":"0.2.1","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.16.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.8","@mariozechner/pi-tui":"0.52.8","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.985.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.8","@mariozechner/pi-coding-agent":"0.52.8","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/skykoi_2026.3.622_1787605310324_0.8403060342385695","host":"s3://npm-registry-packages-npm-production"}},"2026.3.623":{"name":"skykoi","version":"2026.3.623","description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","keywords":["cli","gateway","koi","runtime","skykoi"],"license":"BUSL-1.1","author":{"name":"Ricardo Martinez"},"repository":{"type":"git","url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git"},"bin":{"koi":"skykoi.mjs","skykoi":"skykoi.mjs"},"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 && pnpm ui:build && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","build:gateway":"tsdown && node --import tsx scripts/fix-playwright-bundle.ts && node --import tsx scripts/write-build-info.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 tsgo:ui && 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","gallery":"node --import tsx scripts/surface-gallery-all.ts --demo","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","tsgo:ui":"tsgo --noEmit -p ui/tsconfig.json","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","playwright:install":"npx playwright install chromium","prepack":"pnpm 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","release:promote":"node --import tsx scripts/release-promote.ts","release:publish":"node --import tsx scripts/release-publish.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:test:node":"node scripts/ui.js test:node","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","@xenova/transformers":"^2.17.2","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","terminal-kit":"^3.1.3","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/terminal-kit":"^2.5.7","@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","@kmamal/gpu":"0.2.1","@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":["@kmamal/gpu","@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","@homebridge/ciao@1.3.4":"patches/@homebridge__ciao@1.3.4.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/**"]},"_id":"skykoi@2026.3.623","gitHead":"a6768ada989e92e30fe5c6c2eef86aed2b06cd77","bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-T4WJ173unkfMeg/ZguurNL9nJzdSMwLpiSXy6v2kf9Pvznpg5On4KohKfR7j7Rg1vNBafi2CnfYC49EWUh/fJQ==","shasum":"ce6c3851f3f22d74ce5108ebe72aae98b6ffcd5b","tarball":"https://registry.npmjs.org/skykoi/-/skykoi-2026.3.623.tgz","fileCount":3138,"unpackedSize":84750299,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDXn2cHhNN/BhewVf5mzhQ3ND+NhwduaS3tssiFj/JKTAiEAu2NHU4FxIbmr4AZgQwQ8fBqI8HVAYUbG0JUeIuClihw="}]},"_npmUser":{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"},"directories":{},"maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/skykoi_2026.3.623_1787606325937_0.385253056660287"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-05T19:04:50.459Z","modified":"2026-08-24T21:18:46.711Z","2026.3.3-14":"2026-03-05T19:04:51.108Z","2026.3.5-1":"2026-03-05T21:13:56.208Z","2026.3.5-2":"2026-03-05T21:24:45.290Z","2026.3.3":"2026-03-09T00:26:57.209Z","2026.3.9":"2026-03-09T01:05:50.804Z","2026.3.10":"2026-03-09T01:51:32.602Z","2026.3.11":"2026-03-09T02:12:10.972Z","2026.3.12":"2026-03-16T21:15:35.708Z","2026.3.13":"2026-03-16T22:47:28.479Z","2026.3.17":"2026-03-18T02:07:18.995Z","2026.3.18":"2026-03-18T04:46:25.586Z","2026.3.19":"2026-03-18T05:09:07.476Z","2026.3.20":"2026-03-18T05:51:45.520Z","2026.3.21":"2026-03-18T06:14:47.824Z","2026.3.22":"2026-03-18T06:30:17.931Z","2026.3.23":"2026-03-18T06:33:57.963Z","2026.3.24":"2026-03-18T06:46:34.046Z","2026.3.25":"2026-03-18T08:18:49.773Z","2026.3.26":"2026-03-18T08:48:36.344Z","2026.3.27":"2026-03-18T09:01:09.505Z","2026.3.28":"2026-03-18T09:26:04.602Z","2026.3.29":"2026-03-18T09:46:51.734Z","2026.3.30":"2026-03-18T09:58:03.481Z","2026.3.31":"2026-03-18T10:14:26.169Z","2026.3.32":"2026-03-18T10:15:24.886Z","2026.3.33":"2026-03-18T10:21:20.357Z","2026.3.34":"2026-03-18T10:25:24.559Z","2026.3.35":"2026-03-18T10:38:36.822Z","2026.3.36":"2026-03-18T11:30:50.297Z","2026.3.37":"2026-03-18T12:06:39.746Z","2026.3.38":"2026-03-18T17:42:20.949Z","2026.3.39":"2026-03-18T17:54:09.450Z","2026.3.40":"2026-03-18T18:02:24.079Z","2026.3.41":"2026-03-18T18:22:56.292Z","2026.3.42":"2026-03-18T18:26:59.978Z","2026.3.43":"2026-03-18T18:49:23.134Z","2026.3.44":"2026-03-18T19:02:27.961Z","2026.3.45":"2026-03-18T22:26:01.834Z","2026.3.46":"2026-03-19T00:41:25.770Z","2026.3.47":"2026-03-20T19:52:01.848Z","2026.3.48":"2026-03-23T01:11:42.763Z","2026.3.49":"2026-03-24T18:47:06.265Z","2026.3.50":"2026-03-24T18:57:38.630Z","2026.3.51":"2026-03-24T20:30:00.823Z","2026.3.52":"2026-03-24T20:39:39.613Z","2026.3.53":"2026-03-24T20:47:52.113Z","2026.3.54":"2026-03-24T20:51:51.549Z","2026.3.55":"2026-03-24T21:01:38.720Z","2026.3.56":"2026-03-24T21:03:56.519Z","2026.3.57":"2026-03-24T22:16:50.842Z","2026.3.58":"2026-03-24T22:25:04.331Z","2026.3.59":"2026-03-24T23:04:03.997Z","2026.3.60":"2026-03-24T23:40:15.839Z","2026.3.61":"2026-03-25T00:03:00.496Z","2026.3.62":"2026-03-25T00:22:36.344Z","2026.3.63":"2026-03-25T00:58:08.301Z","2026.3.64":"2026-03-25T01:17:49.507Z","2026.3.65":"2026-03-25T04:51:29.743Z","2026.3.66":"2026-03-25T05:15:58.582Z","2026.3.67":"2026-03-25T06:27:37.409Z","2026.3.68":"2026-03-25T06:47:16.564Z","2026.3.69":"2026-03-25T08:09:22.207Z","2026.3.70":"2026-03-25T20:23:26.468Z","2026.3.71":"2026-03-25T23:43:36.816Z","2026.3.72":"2026-03-25T23:56:42.184Z","2026.3.73":"2026-03-26T02:05:48.763Z","2026.3.74":"2026-03-26T19:41:36.450Z","2026.3.75":"2026-03-28T17:54:25.828Z","2026.3.76":"2026-03-30T16:33:13.125Z","2026.3.77":"2026-03-30T19:53:31.365Z","2026.3.78":"2026-03-31T22:52:46.538Z","2026.3.79":"2026-04-06T04:03:15.455Z","2026.3.80":"2026-04-06T05:35:57.969Z","2026.3.81":"2026-04-06T06:35:35.101Z","2026.3.82":"2026-04-06T06:56:18.646Z","2026.3.83":"2026-04-06T07:10:18.785Z","2026.3.84":"2026-04-08T02:07:51.521Z","2026.3.85":"2026-04-08T02:15:28.362Z","2026.3.86":"2026-04-08T23:36:17.347Z","2026.3.87":"2026-04-09T05:15:08.384Z","2026.3.88":"2026-04-09T05:25:28.636Z","2026.3.89":"2026-04-09T07:12:21.241Z","2026.3.90":"2026-04-09T09:37:45.652Z","2026.3.91":"2026-04-09T10:21:14.173Z","2026.3.92":"2026-04-12T00:46:57.918Z","2026.3.93":"2026-04-12T03:49:28.003Z","2026.3.94":"2026-04-12T04:48:45.499Z","2026.3.95":"2026-04-12T05:58:47.796Z","2026.3.96":"2026-04-12T06:09:35.549Z","2026.3.97":"2026-04-12T07:04:45.127Z","2026.3.98":"2026-04-12T07:22:16.735Z","2026.3.99":"2026-04-12T07:52:54.187Z","2026.3.100":"2026-04-12T08:38:57.153Z","2026.3.101":"2026-04-12T08:50:10.219Z","2026.3.102":"2026-04-12T22:02:44.367Z","2026.3.103":"2026-04-12T22:33:37.671Z","2026.3.104":"2026-04-12T22:42:42.515Z","2026.3.105":"2026-04-12T23:38:46.721Z","2026.3.106":"2026-04-12T23:46:49.351Z","2026.3.107":"2026-04-12T23:52:28.637Z","2026.3.108":"2026-04-12T23:53:52.074Z","2026.3.109":"2026-04-12T23:59:11.793Z","2026.3.110":"2026-04-13T00:44:47.499Z","2026.3.111":"2026-04-13T01:01:01.008Z","2026.3.112":"2026-04-13T01:07:56.552Z","2026.3.113":"2026-04-13T01:30:20.764Z","2026.3.114":"2026-04-13T02:02:16.253Z","2026.3.115":"2026-04-13T03:10:36.684Z","2026.3.116":"2026-04-13T03:20:22.392Z","2026.3.117":"2026-04-13T03:38:08.763Z","2026.3.118":"2026-04-13T03:43:33.180Z","2026.3.119":"2026-04-13T04:29:26.893Z","2026.3.120":"2026-04-19T04:03:53.594Z","2026.3.121":"2026-04-19T07:28:13.887Z","2026.3.122":"2026-04-24T04:57:31.049Z","2026.3.124":"2026-04-27T07:44:40.275Z","2026.3.126":"2026-04-28T01:37:20.020Z","2026.3.128":"2026-04-28T01:42:50.823Z","2026.3.130":"2026-04-28T02:00:02.998Z","2026.3.132":"2026-04-28T02:28:39.989Z","2026.3.133":"2026-04-29T04:56:12.357Z","2026.3.135":"2026-04-29T04:59:49.928Z","2026.3.136":"2026-04-29T05:08:26.437Z","2026.3.137":"2026-04-29T05:10:00.661Z","2026.3.138":"2026-04-29T05:38:22.405Z","2026.3.139":"2026-04-29T05:42:50.200Z","2026.3.140":"2026-04-29T06:26:43.274Z","2026.3.141":"2026-04-29T06:30:01.643Z","2026.3.143":"2026-04-29T08:26:16.002Z","2026.3.144":"2026-04-29T08:27:29.528Z","2026.3.145":"2026-04-29T08:29:13.280Z","2026.3.146":"2026-04-29T08:53:23.364Z","2026.3.147":"2026-04-29T08:55:16.289Z","2026.3.148":"2026-04-29T09:02:27.900Z","2026.3.149":"2026-04-29T09:04:07.802Z","2026.3.150":"2026-04-29T09:39:35.122Z","2026.3.151":"2026-04-29T09:41:37.305Z","2026.3.152":"2026-04-29T09:44:15.002Z","2026.3.153":"2026-04-29T09:45:53.012Z","2026.3.154":"2026-04-29T18:45:11.810Z","2026.3.155":"2026-04-29T18:46:50.060Z","2026.3.156":"2026-04-29T19:59:43.131Z","2026.3.157":"2026-04-29T20:01:27.745Z","2026.3.158":"2026-04-29T20:09:35.819Z","2026.3.159":"2026-04-29T20:11:29.445Z","2026.3.160":"2026-04-29T20:26:02.135Z","2026.3.161":"2026-04-29T20:27:47.319Z","2026.3.162":"2026-04-29T20:52:10.613Z","2026.3.163":"2026-04-29T20:54:00.454Z","2026.3.165":"2026-04-29T22:06:25.488Z","2026.3.166":"2026-04-29T22:08:12.638Z","2026.3.167":"2026-04-29T22:18:11.601Z","2026.3.168":"2026-04-29T22:19:53.670Z","2026.3.169":"2026-04-29T23:17:18.265Z","2026.3.170":"2026-04-29T23:24:16.036Z","2026.3.171":"2026-04-29T23:40:03.575Z","2026.3.172":"2026-04-30T01:01:08.539Z","2026.3.173":"2026-04-30T01:02:15.948Z","2026.3.174":"2026-04-30T06:21:34.691Z","2026.3.175":"2026-04-30T06:22:40.269Z","2026.3.176":"2026-04-30T06:53:50.092Z","2026.3.177":"2026-04-30T06:55:09.354Z","2026.3.178":"2026-05-01T01:00:21.052Z","2026.3.179":"2026-05-01T01:01:45.297Z","2026.3.180":"2026-05-01T01:02:58.519Z","2026.3.182":"2026-05-01T01:23:56.435Z","2026.3.184":"2026-05-01T01:43:47.526Z","2026.3.201":"2026-05-01T01:59:59.910Z","2026.3.221":"2026-05-01T02:11:08.535Z","2026.3.220":"2026-05-01T02:19:38.497Z","2026.3.225":"2026-05-01T04:57:14.841Z","2026.3.226":"2026-05-01T04:58:18.805Z","2026.3.231":"2026-05-01T05:41:35.054Z","2026.3.232":"2026-05-01T05:42:46.400Z","2026.3.237":"2026-05-01T05:51:49.179Z","2026.3.238":"2026-05-01T05:52:59.477Z","2026.3.239":"2026-05-02T23:12:32.302Z","2026.3.240":"2026-05-02T23:38:29.140Z","2026.3.241":"2026-05-02T23:40:15.830Z","2026.3.242":"2026-05-03T00:59:11.015Z","2026.3.243":"2026-05-03T01:58:05.870Z","2026.3.244":"2026-05-03T02:01:24.966Z","2026.3.245":"2026-05-03T03:22:22.198Z","2026.3.246":"2026-05-03T03:26:09.137Z","2026.3.247":"2026-05-03T03:28:22.064Z","2026.3.248":"2026-05-03T03:33:28.003Z","2026.3.249":"2026-05-04T06:40:52.971Z","2026.3.251":"2026-05-04T07:34:25.408Z","2026.3.252":"2026-05-06T19:45:03.585Z","2026.3.253":"2026-05-06T19:45:49.417Z","2026.3.254":"2026-05-08T06:22:11.250Z","2026.3.255":"2026-05-08T06:22:58.388Z","2026.3.256":"2026-05-08T07:19:08.025Z","2026.3.257":"2026-05-08T09:46:03.080Z","2026.3.258":"2026-05-08T09:47:16.322Z","2026.3.259":"2026-05-08T09:58:32.738Z","2026.3.261":"2026-05-08T11:36:08.348Z","2026.3.262":"2026-05-08T11:41:57.446Z","2026.3.264":"2026-05-08T12:55:49.262Z","2026.3.265":"2026-05-11T16:29:21.407Z","2026.3.266":"2026-05-13T04:18:56.126Z","2026.3.267":"2026-05-13T04:26:43.646Z","2026.3.268":"2026-05-13T19:34:46.718Z","2026.3.269":"2026-05-13T21:27:05.447Z","2026.3.270":"2026-05-13T21:55:52.636Z","2026.3.271":"2026-05-14T19:21:18.453Z","2026.3.272":"2026-05-14T21:29:40.834Z","2026.3.273":"2026-05-14T21:32:35.806Z","2026.3.274":"2026-05-14T21:35:55.772Z","2026.3.275":"2026-05-14T22:15:12.616Z","2026.3.276":"2026-05-14T22:18:00.230Z","2026.3.277":"2026-05-14T22:41:15.022Z","2026.3.278":"2026-05-14T22:53:41.973Z","2026.3.279":"2026-05-14T22:57:34.918Z","2026.3.280":"2026-05-15T01:40:24.437Z","2026.3.281":"2026-05-15T01:55:30.363Z","2026.3.282":"2026-05-15T02:09:22.142Z","2026.3.283":"2026-05-15T02:29:48.705Z","2026.3.284":"2026-05-15T02:30:59.403Z","2026.3.285":"2026-05-15T02:35:20.132Z","2026.3.286":"2026-05-15T03:15:06.259Z","2026.3.287":"2026-05-15T03:45:41.834Z","2026.3.288":"2026-05-15T04:36:39.863Z","2026.3.289":"2026-05-15T05:05:34.673Z","2026.3.290":"2026-05-15T05:08:58.493Z","2026.3.291":"2026-05-15T05:42:22.455Z","2026.3.292":"2026-05-15T05:44:13.899Z","2026.3.293":"2026-05-15T06:28:28.465Z","2026.3.294":"2026-05-15T14:10:17.376Z","2026.3.295":"2026-05-15T14:28:27.914Z","2026.3.296":"2026-05-25T19:08:37.387Z","2026.3.297":"2026-06-09T23:41:36.235Z","2026.3.298":"2026-06-09T23:48:12.077Z","2026.3.299":"2026-06-09T23:57:02.128Z","2026.3.301":"2026-06-10T00:04:57.339Z","2026.3.302":"2026-06-10T00:08:04.627Z","2026.3.303":"2026-06-10T00:20:02.192Z","2026.3.304":"2026-06-10T00:30:45.666Z","2026.3.305":"2026-06-10T00:33:20.703Z","2026.3.306":"2026-06-10T00:38:17.267Z","2026.3.307":"2026-06-10T00:53:40.135Z","2026.3.308":"2026-06-10T01:03:07.524Z","2026.3.309":"2026-06-10T01:10:29.733Z","2026.3.311":"2026-06-10T01:17:09.284Z","2026.3.312":"2026-06-10T01:27:06.324Z","2026.3.313":"2026-06-10T01:31:57.710Z","2026.3.314":"2026-06-10T02:30:34.634Z","2026.3.315":"2026-06-10T19:28:23.113Z","2026.3.316":"2026-06-10T20:17:23.829Z","2026.3.317":"2026-06-10T20:36:08.157Z","2026.3.318":"2026-06-10T21:14:30.929Z","2026.3.319":"2026-06-10T21:24:49.105Z","2026.3.320":"2026-06-10T22:41:15.214Z","2026.3.321":"2026-06-10T23:09:18.816Z","2026.3.322":"2026-06-10T23:17:14.280Z","2026.3.323":"2026-06-10T23:33:10.243Z","2026.3.324":"2026-06-10T23:46:25.323Z","2026.3.325":"2026-06-11T01:40:06.682Z","2026.3.326":"2026-06-11T01:52:18.240Z","2026.3.327":"2026-06-11T01:59:06.233Z","2026.3.328":"2026-06-11T02:37:41.637Z","2026.3.329":"2026-06-11T03:29:48.905Z","2026.3.330":"2026-06-11T06:20:57.752Z","2026.3.331":"2026-06-11T06:33:17.060Z","2026.3.332":"2026-06-11T06:56:17.437Z","2026.3.333":"2026-06-11T07:28:38.804Z","2026.3.334":"2026-06-11T17:47:42.022Z","2026.3.335":"2026-06-11T18:37:14.932Z","2026.3.336":"2026-06-11T18:44:08.597Z","2026.3.337":"2026-06-11T19:30:04.471Z","2026.3.338":"2026-06-13T04:39:56.543Z","2026.3.339":"2026-06-13T06:12:12.876Z","2026.3.340":"2026-06-13T07:11:27.962Z","2026.3.341":"2026-06-13T07:40:02.439Z","2026.3.342":"2026-06-19T18:14:35.765Z","2026.3.343":"2026-06-19T18:29:45.433Z","2026.3.344":"2026-06-20T01:01:45.782Z","2026.3.345":"2026-06-20T02:35:31.330Z","2026.3.346":"2026-06-20T20:32:04.648Z","2026.3.347":"2026-06-20T20:46:48.052Z","2026.3.348":"2026-06-20T21:11:57.115Z","2026.3.349":"2026-06-25T01:52:26.759Z","2026.3.350":"2026-06-25T03:12:31.246Z","2026.3.351":"2026-06-25T03:25:06.203Z","2026.3.352":"2026-06-25T03:28:07.154Z","2026.3.353":"2026-06-25T03:34:25.920Z","2026.3.354":"2026-06-25T03:42:36.934Z","2026.3.355":"2026-06-25T04:19:11.175Z","2026.3.356":"2026-06-25T04:46:35.934Z","2026.3.357":"2026-06-25T06:34:37.291Z","2026.3.358":"2026-06-25T06:36:40.643Z","2026.3.359":"2026-06-25T07:54:25.922Z","2026.3.360":"2026-06-25T07:57:57.506Z","2026.3.361":"2026-06-25T08:30:10.694Z","2026.3.362":"2026-06-25T08:49:10.688Z","2026.3.363":"2026-06-25T09:02:15.983Z","2026.3.364":"2026-06-25T09:05:23.690Z","2026.3.365":"2026-06-25T09:22:41.845Z","2026.3.366":"2026-06-25T09:31:03.278Z","2026.3.367":"2026-06-25T09:44:46.358Z","2026.3.368":"2026-06-25T10:06:17.982Z","2026.3.369":"2026-06-25T10:12:22.701Z","2026.3.370":"2026-06-25T10:20:58.854Z","2026.3.371":"2026-06-25T10:22:57.137Z","2026.3.372":"2026-06-25T10:24:41.442Z","2026.3.373":"2026-06-25T10:27:12.016Z","2026.3.374":"2026-06-25T19:15:43.720Z","2026.3.375":"2026-06-25T19:26:19.172Z","2026.3.376":"2026-06-25T19:42:48.715Z","2026.3.377":"2026-06-25T21:33:57.739Z","2026.3.378":"2026-06-25T21:50:28.719Z","2026.3.379":"2026-07-03T21:18:40.599Z","2026.3.380":"2026-07-04T00:11:57.328Z","2026.3.381":"2026-07-04T00:29:21.085Z","2026.3.382":"2026-07-04T00:39:20.560Z","2026.3.383":"2026-07-04T00:55:59.011Z","2026.3.384":"2026-07-04T05:14:58.201Z","2026.3.385":"2026-07-04T05:27:10.613Z","2026.3.386":"2026-07-04T05:38:51.823Z","2026.3.387":"2026-07-04T05:52:45.124Z","2026.3.388":"2026-07-04T06:01:27.732Z","2026.3.389":"2026-07-04T06:11:51.985Z","2026.3.390":"2026-07-04T17:05:24.468Z","2026.3.391":"2026-07-04T17:19:29.559Z","2026.3.392":"2026-07-04T17:38:54.743Z","2026.3.393":"2026-07-04T18:04:44.253Z","2026.3.394":"2026-07-05T04:20:34.026Z","2026.3.395":"2026-07-05T05:32:23.330Z","2026.3.396":"2026-07-05T05:37:29.820Z","2026.3.397":"2026-07-05T05:40:50.454Z","2026.3.398":"2026-07-05T08:11:38.128Z","2026.3.399":"2026-07-05T17:33:24.066Z","2026.3.400":"2026-07-05T18:36:49.001Z","2026.3.401":"2026-07-05T19:16:51.535Z","2026.3.402":"2026-07-07T07:52:55.978Z","2026.3.403":"2026-07-07T15:56:27.608Z","2026.3.404":"2026-07-07T16:07:18.272Z","2026.3.405":"2026-07-07T16:21:39.554Z","2026.3.406":"2026-07-07T17:04:25.869Z","2026.3.407":"2026-07-07T17:15:17.682Z","2026.3.408":"2026-07-07T17:32:09.260Z","2026.3.409":"2026-07-07T17:40:51.460Z","2026.3.410":"2026-07-07T17:53:54.520Z","2026.3.411":"2026-07-07T18:07:35.714Z","2026.3.412":"2026-07-07T18:18:14.271Z","2026.3.413":"2026-07-07T18:24:53.507Z","2026.3.414":"2026-07-07T18:49:28.405Z","2026.3.415":"2026-07-07T19:11:20.175Z","2026.3.416":"2026-07-08T01:44:15.774Z","2026.3.417":"2026-07-08T02:01:53.167Z","2026.3.418":"2026-07-08T02:49:18.660Z","2026.3.419":"2026-07-08T02:55:17.884Z","2026.3.420":"2026-07-08T04:10:15.976Z","2026.3.421":"2026-07-08T07:25:52.934Z","2026.3.422":"2026-07-08T07:49:03.361Z","2026.3.423":"2026-07-08T07:57:50.193Z","2026.3.424":"2026-07-11T05:09:14.741Z","2026.3.425":"2026-07-11T21:17:55.549Z","2026.3.427":"2026-07-16T08:35:34.026Z","2026.3.428":"2026-07-16T17:23:26.476Z","2026.3.429":"2026-07-16T17:47:03.610Z","2026.3.430":"2026-07-16T17:55:26.619Z","2026.3.431":"2026-07-16T18:51:28.500Z","2026.3.432":"2026-07-16T19:20:39.404Z","2026.3.433":"2026-07-16T19:30:42.875Z","2026.3.434":"2026-07-16T19:42:13.214Z","2026.3.435":"2026-07-16T19:53:42.162Z","2026.3.436":"2026-07-16T19:58:54.081Z","2026.3.437":"2026-07-16T20:03:14.024Z","2026.3.438":"2026-07-16T20:09:53.509Z","2026.3.439":"2026-07-16T20:27:16.367Z","2026.3.440":"2026-07-16T20:40:38.826Z","2026.3.441":"2026-07-16T20:46:36.516Z","2026.3.442":"2026-07-16T21:32:26.783Z","2026.3.443":"2026-07-16T21:49:20.125Z","2026.3.444":"2026-07-17T00:59:09.559Z","2026.3.445":"2026-07-17T01:07:41.909Z","2026.3.446":"2026-07-17T01:41:01.819Z","2026.3.447":"2026-07-17T02:36:53.324Z","2026.3.448":"2026-07-17T03:09:11.934Z","2026.3.449":"2026-07-17T03:20:49.172Z","2026.3.450":"2026-07-17T03:24:59.060Z","2026.3.451":"2026-07-17T06:03:10.087Z","2026.3.452":"2026-07-17T06:18:17.709Z","2026.3.453":"2026-07-17T18:05:33.201Z","2026.3.454":"2026-07-17T18:37:25.263Z","2026.3.456":"2026-07-17T18:54:28.800Z","2026.3.457":"2026-07-17T19:00:33.809Z","2026.3.460":"2026-07-17T19:30:09.710Z","2026.3.461":"2026-07-17T19:36:33.999Z","2026.3.462":"2026-07-17T19:55:07.353Z","2026.3.463":"2026-07-17T20:02:45.020Z","2026.3.464":"2026-07-17T20:20:07.529Z","2026.3.465":"2026-07-17T20:29:26.907Z","2026.3.466":"2026-07-17T21:08:39.927Z","2026.3.467":"2026-07-17T21:12:50.732Z","2026.3.468":"2026-07-17T21:25:56.403Z","2026.3.469":"2026-07-17T21:39:19.508Z","2026.3.470":"2026-07-17T23:26:07.434Z","2026.3.471":"2026-07-17T23:48:47.589Z","2026.3.472":"2026-07-17T23:52:26.176Z","2026.3.473":"2026-07-17T23:57:18.113Z","2026.3.474":"2026-07-18T00:12:54.687Z","2026.3.475":"2026-07-18T00:17:40.624Z","2026.3.476":"2026-07-18T00:21:10.994Z","2026.3.477":"2026-07-18T20:14:31.095Z","2026.3.478":"2026-07-19T06:20:28.626Z","2026.3.479":"2026-07-19T07:20:50.656Z","2026.3.480":"2026-07-20T04:54:50.091Z","2026.3.481":"2026-07-22T12:15:02.487Z","2026.3.482":"2026-07-22T14:05:01.853Z","2026.3.483":"2026-07-22T16:40:53.656Z","2026.3.484":"2026-07-22T21:51:52.446Z","2026.3.485":"2026-07-22T23:14:23.914Z","2026.3.486":"2026-07-23T02:29:31.453Z","2026.3.487":"2026-07-24T18:07:14.363Z","2026.3.488":"2026-07-24T20:43:59.466Z","2026.3.489":"2026-07-24T21:05:41.035Z","2026.3.490":"2026-07-24T21:15:28.173Z","2026.3.491":"2026-07-24T21:26:32.431Z","2026.3.492":"2026-07-24T21:38:51.334Z","2026.3.493":"2026-07-24T22:32:38.718Z","2026.3.494":"2026-07-24T22:42:57.429Z","2026.3.495":"2026-07-26T02:20:15.579Z","2026.3.496":"2026-07-26T02:39:48.574Z","2026.3.497":"2026-07-27T14:24:56.498Z","2026.3.498":"2026-07-29T00:23:57.596Z","2026.3.499":"2026-07-29T00:59:43.152Z","2026.3.500":"2026-07-29T01:04:26.920Z","2026.3.501":"2026-07-29T01:12:09.709Z","2026.3.502":"2026-07-29T02:04:02.166Z","2026.3.503":"2026-07-29T02:12:15.031Z","2026.3.504":"2026-07-29T02:28:46.763Z","2026.3.505":"2026-07-29T02:36:32.568Z","2026.3.506":"2026-07-29T02:59:50.270Z","2026.3.507":"2026-07-29T03:07:35.133Z","2026.3.508":"2026-07-29T03:14:39.120Z","2026.3.509":"2026-07-29T06:51:04.675Z","2026.3.510":"2026-07-29T07:44:18.360Z","2026.3.511":"2026-07-29T08:03:40.489Z","2026.3.512":"2026-07-29T21:52:15.757Z","2026.3.513":"2026-07-29T22:10:36.444Z","2026.3.514":"2026-07-29T22:57:34.570Z","2026.3.515":"2026-07-29T23:06:57.259Z","2026.3.516":"2026-07-30T00:19:46.710Z","2026.3.517":"2026-07-30T00:34:02.798Z","2026.3.518":"2026-07-30T01:14:01.103Z","2026.3.519":"2026-07-30T01:38:23.518Z","2026.3.520":"2026-07-30T02:44:16.738Z","2026.3.521":"2026-07-30T02:56:12.622Z","2026.3.522":"2026-07-30T03:00:44.964Z","2026.3.523":"2026-07-30T03:07:56.482Z","2026.3.524":"2026-07-31T00:25:54.237Z","2026.3.525":"2026-07-31T01:24:33.843Z","2026.3.526":"2026-08-04T22:53:28.567Z","2026.3.527":"2026-08-06T20:54:04.735Z","2026.3.528":"2026-08-06T21:39:40.546Z","2026.3.529":"2026-08-06T22:09:28.163Z","2026.3.530":"2026-08-07T18:02:22.493Z","2026.3.531":"2026-08-07T18:08:52.455Z","2026.3.532":"2026-08-07T18:30:03.559Z","2026.3.533":"2026-08-08T01:28:21.505Z","2026.3.534":"2026-08-10T19:56:55.891Z","2026.3.535":"2026-08-10T20:06:15.303Z","2026.3.536":"2026-08-10T20:58:21.370Z","2026.3.537":"2026-08-10T21:01:16.989Z","2026.3.538":"2026-08-10T21:47:12.923Z","2026.3.539":"2026-08-11T07:36:59.339Z","2026.3.540":"2026-08-11T07:48:39.577Z","2026.3.541":"2026-08-11T07:59:11.988Z","2026.3.542":"2026-08-11T08:06:21.096Z","2026.3.543":"2026-08-11T08:45:44.473Z","2026.3.544":"2026-08-11T09:44:46.141Z","2026.3.545":"2026-08-11T10:03:08.413Z","2026.3.546":"2026-08-11T10:29:29.763Z","2026.3.547":"2026-08-11T10:44:32.897Z","2026.3.548":"2026-08-11T15:49:44.334Z","2026.3.549":"2026-08-11T16:28:26.922Z","2026.3.550":"2026-08-11T17:01:04.880Z","2026.3.551":"2026-08-11T17:37:16.009Z","2026.3.552":"2026-08-11T19:56:06.697Z","2026.3.553":"2026-08-11T20:50:39.495Z","2026.3.554":"2026-08-11T21:11:00.607Z","2026.3.555":"2026-08-11T21:33:15.938Z","2026.3.556":"2026-08-11T21:48:05.917Z","2026.3.557":"2026-08-11T22:10:47.645Z","2026.3.558":"2026-08-11T22:57:54.888Z","2026.3.559":"2026-08-11T23:35:45.598Z","2026.3.560":"2026-08-11T23:37:48.199Z","2026.3.561":"2026-08-11T23:47:27.337Z","2026.3.562":"2026-08-11T23:57:26.699Z","2026.3.563":"2026-08-12T00:50:46.217Z","2026.3.564":"2026-08-12T01:50:58.047Z","2026.3.565":"2026-08-12T01:52:30.191Z","2026.3.566":"2026-08-12T02:23:22.290Z","2026.3.567":"2026-08-12T02:51:22.120Z","2026.3.568":"2026-08-12T02:58:04.580Z","2026.3.569":"2026-08-12T03:01:25.964Z","2026.3.570":"2026-08-12T04:01:34.018Z","2026.3.571":"2026-08-12T05:35:01.713Z","2026.3.572":"2026-08-14T04:34:39.492Z","2026.3.573":"2026-08-14T05:08:28.260Z","2026.3.574":"2026-08-14T05:14:55.115Z","2026.3.575":"2026-08-14T05:18:17.780Z","2026.3.576":"2026-08-14T05:42:59.813Z","2026.3.577":"2026-08-14T06:02:47.811Z","2026.3.578":"2026-08-14T06:20:18.698Z","2026.3.579":"2026-08-14T06:40:03.963Z","2026.3.580":"2026-08-14T17:01:59.131Z","2026.3.581":"2026-08-14T17:41:50.975Z","2026.3.582":"2026-08-14T17:54:06.240Z","2026.3.583":"2026-08-14T18:22:35.018Z","2026.3.584":"2026-08-16T21:30:00.832Z","2026.3.585":"2026-08-16T21:40:44.985Z","2026.3.586":"2026-08-17T08:47:30.665Z","2026.3.587":"2026-08-17T09:23:02.733Z","2026.3.588":"2026-08-17T19:28:57.121Z","2026.3.589":"2026-08-17T19:40:31.858Z","2026.3.590":"2026-08-17T19:45:33.264Z","2026.3.591":"2026-08-17T20:04:40.299Z","2026.3.592":"2026-08-17T20:58:44.898Z","2026.3.593":"2026-08-17T21:07:48.269Z","2026.3.594":"2026-08-17T21:28:48.569Z","2026.3.595":"2026-08-17T21:41:34.095Z","2026.3.596":"2026-08-17T22:07:13.096Z","2026.3.597":"2026-08-17T22:22:55.478Z","2026.3.598":"2026-08-17T22:37:31.202Z","2026.3.599":"2026-08-19T00:16:21.261Z","2026.3.600":"2026-08-19T02:54:26.259Z","2026.3.601":"2026-08-19T02:58:22.661Z","2026.3.602":"2026-08-19T04:51:23.252Z","2026.3.603":"2026-08-19T05:27:04.663Z","2026.3.604":"2026-08-19T06:12:31.198Z","2026.3.605":"2026-08-19T06:31:09.479Z","2026.3.606":"2026-08-20T05:54:15.996Z","2026.3.607":"2026-08-20T06:14:18.611Z","2026.3.608":"2026-08-20T06:43:59.293Z","2026.3.609":"2026-08-20T19:40:11.055Z","2026.3.610":"2026-08-24T16:28:34.288Z","2026.3.611":"2026-08-24T16:47:26.901Z","2026.3.612":"2026-08-24T17:06:36.585Z","2026.3.613":"2026-08-24T17:23:40.935Z","2026.3.614":"2026-08-24T17:52:16.976Z","2026.3.615":"2026-08-24T18:10:08.463Z","2026.3.616":"2026-08-24T18:38:20.971Z","2026.3.617":"2026-08-24T19:01:00.244Z","2026.3.618":"2026-08-24T19:18:17.986Z","2026.3.619":"2026-08-24T19:35:40.518Z","2026.3.620":"2026-08-24T20:00:43.248Z","2026.3.621":"2026-08-24T20:02:18.288Z","2026.3.622":"2026-08-24T21:01:50.918Z","2026.3.623":"2026-08-24T21:18:46.555Z"},"bugs":{"url":"https://github.com/ricardoamartinez/skykoi-runtime/issues"},"author":{"name":"Ricardo Martinez"},"license":"BUSL-1.1","homepage":"https://github.com/ricardoamartinez/skykoi-runtime#readme","keywords":["cli","gateway","koi","runtime","skykoi"],"repository":{"type":"git","url":"git+https://github.com/ricardoamartinez/skykoi-runtime.git"},"description":"SkyKoi â€” Koi runtime. Multi-channel gateway CLI with RPC Koi.","maintainers":[{"name":"ricardoamartinez","email":"martricardo.a@gmail.com"}],"readme":"# SkyKoi Runtime\n\n> The engine behind a **koi**: a personal AI agent that lives on a device, talks to its\n> owner across every messaging channel, runs real work with tools, and remembers.\n\n![npm](https://img.shields.io/npm/v/skykoi?color=cb3837&logo=npm&label=skykoi)\n![node](https://img.shields.io/badge/node-%E2%89%A5%2022-339933?logo=node.js&logoColor=white)\n![language](https://img.shields.io/badge/TypeScript-ESM-3178C6?logo=typescript&logoColor=white)\n![license](https://img.shields.io/badge/license-BUSL--1.1-blue)\n![docs](https://img.shields.io/badge/docs-docs.skykoi.com-0aa)\n\nThis repository is the npm package **`skykoi`** (CLI binaries `koi` and `skykoi`). One\ninstall bundles three things into one process: an **agent**, a **gateway**, and a\n**multi-channel front door**.\n\n```mermaid\nflowchart LR\n    A[\"One npm install: skykoi\"] --> B[\"Agent<br/>reasons, calls tools, remembers\"]\n    A --> C[\"Gateway<br/>always-on WS / RPC server\"]\n    A --> D[\"Front door<br/>WhatsApp, iMessage, Telegram...\"]\n```\n\n---\n\n## Table of contents\n\n- [What it is](#what-it-is)\n- [System architecture](#system-architecture)\n- [Core vocabulary](#core-vocabulary)\n- [Quick start](#quick-start)\n- [How the program starts](#how-the-program-starts)\n- [Repository map](#repository-map)\n- [Core subsystems](#core-subsystems)\n  - [The koi agent loop](#the-koi-agent-loop)\n  - [The gateway](#the-gateway)\n  - [Channels, routing and pairing](#channels-routing-and-pairing)\n  - [Providers and models](#providers-and-models)\n  - [Configuration](#configuration)\n  - [Memory](#memory)\n  - [Cron, infra and self-update](#cron-infra-and-self-update)\n  - [Device and browser](#device-and-browser)\n  - [Plugins, extensions and native apps](#plugins-extensions-and-native-apps)\n- [Lifecycle of an inbound message](#lifecycle-of-an-inbound-message)\n- [Where to add things](#where-to-add-things)\n- [Build, test and release](#build-test-and-release)\n- [Contributor conventions](#contributor-conventions)\n- [Security model](#security-model)\n- [Further reading](#further-reading)\n\n> **How to read this doc.** It is the onboarding map, not the full manual. It is written\n> to stay correct as the code moves, so it follows three rules. Please keep them when you\n> edit: **point to the source of truth, do not duplicate it** (counts, versions and line\n> numbers are deliberately avoided); **key on directories, not files** (directories are\n> stable, files churn); and **explain the why**. The exhaustive manual is\n> [docs.skykoi.com](https://docs.skykoi.com); contributor rules live in\n> [`AGENTS.md`](./AGENTS.md). This README bridges the two.\n\n---\n\n## What it is\n\nSkyKoi Runtime is the program that _is_ a koi. It is published to npm and runs **wherever\nthe koi lives**: today that is primarily the **user's own device** (the macOS menubar app,\nor any Mac/Linux/Windows host), reachable from the cloud through a tunnel. It can also run\non a server or VM. (It is host-agnostic, so do not assume EC2; an earlier managed fleet has\nbeen retired.)\n\nA single koi is an LLM-driven loop with a persistent **workspace** and **memory**. The\nruntime wraps that loop in an always-on **gateway** and connects it to the outside world\nthrough pluggable **channels**, the **CLI/TUI**, and native **apps**.\n\n---\n\n## System architecture\n\nThe whole runtime at a glance: every way a message can arrive, funneled into one agent loop\nthat is backed by a handful of subsystems.\n\n```mermaid\nflowchart TB\n    owner([\"Owner\"])\n\n    subgraph ways[\"Ways in\"]\n        direction LR\n        CH[\"Channels<br/>WhatsApp - iMessage<br/>Telegram - Discord - Slack...\"]\n        GWc[\"Gateway clients<br/>web - mobile / desktop apps<br/>platform connect\"]\n        CLI[\"CLI / TUI<br/>local terminal\"]\n    end\n\n    owner --> CH & GWc & CLI\n\n    CH & GWc & CLI --> RP[\"Routing + Pairing<br/>which koi? who is this?\"]\n    RP --> KOI[\"The koi agent loop<br/>prompt then tool then result\"]\n\n    KOI --> PROV[\"LLM providers\"]\n    KOI --> TOOLS[\"Tools<br/>exec - browser - files - device\"]\n    KOI --> MEM[\"Memory<br/>sqlite + vectors\"]\n    KOI --> WSP[\"Workspace<br/>KOI / SOUL / USER / MEMORY.md\"]\n    KOI --> CRON[\"Cron<br/>scheduled turns\"]\n\n    classDef hot fill:#0aa,stroke:#066,color:#fff;\n    class KOI hot;\n```\n\nViewed as layers, the same system stacks like this. Surfaces depend on the gateway, which\nhosts the agent, which rests on the foundational services:\n\n```mermaid\nflowchart TB\n    subgraph L4[\"Surfaces\"]\n        direction LR\n        s1[\"CLI / TUI\"]\n        s2[\"Native apps\"]\n        s3[\"Channels\"]\n    end\n    subgraph L3[\"Gateway  ·  src/gateway\"]\n        g1[\"WebSocket / RPC  ·  sessions  ·  heartbeat  ·  control UI\"]\n    end\n    subgraph L2[\"Agent  ·  src/koi\"]\n        k1[\"agent loop  ·  tools  ·  prompt  ·  sessions\"]\n    end\n    subgraph L1[\"Foundations\"]\n        direction LR\n        f1[\"providers\"]\n        f2[\"config\"]\n        f3[\"memory\"]\n        f4[\"infra\"]\n    end\n    L4 --> L3 --> L2 --> L1\n```\n\n---\n\n## Core vocabulary\n\nThese seven terms unlock the codebase.\n\n| Term                    | Meaning                                                                                                                                                              |\n| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **koi**                 | One agent identity. Has a workspace, memory, model config, and sessions. A host can run several.                                                                     |\n| **gateway**             | The always-on process. Hosts the WebSocket/RPC server, channels, cron, and the koi runtime.                                                                          |\n| **session**             | One conversation thread with a koi, keyed by `(koi, channel, account, peer)`. Persisted as a transcript.                                                             |\n| **channel**             | A messaging surface (Telegram, iMessage, web...). A pluggable adapter translating native to internal messages.                                                       |\n| **command** vs **tool** | A **command** is owner-typed chat text (`/model`, `/reset`) intercepted _before_ the LLM. A **tool** is an action the LLM itself calls (`exec`, `browser`, `email`). |\n| **the \"Pi\" runtime**    | The embedded agent core (`@mariozechner/pi-*`). The koi loop wraps it; see `src/koi/pi-embedded*`.                                                                   |\n| **workspace**           | `~/.skykoi/...`: the koi's editable brain on disk (`KOI.md`, `SOUL.md`, `USER.md`, `MEMORY.md`, sessions).                                                           |\n\n---\n\n## Quick start\n\n> **Requirements:** Node `>= 22`, and **pnpm** (the version is pinned in `package.json`).\n\n```bash\npnpm install\npnpm build                 # compile src/ to dist/ (tsdown). The CLI always runs dist/.\n\n# Run the CLI from source during development:\npnpm dev <command>         # node scripts/run-node.mjs (rebuilds stale dist, then runs)\npnpm skykoi --help         # list every command\n\n# Common loops:\npnpm gateway:dev           # run the gateway locally (channels skipped, fast)\npnpm gateway:watch         # gateway with auto-reload on change\npnpm tui:dev               # the terminal chat UI against a dev profile\n```\n\nQuality gates, before pushing anything with logic changes:\n\n```bash\npnpm check                 # tsgo (typecheck) + lint + format\npnpm test                  # vitest suite (colocated *.test.ts)\n```\n\n> [!IMPORTANT]\n> **`dist/` vs `src/`.** The `koi` binary (`skykoi.mjs`) imports `dist/entry.js`, so a code\n> change is not live on the CLI until it is built. `pnpm dev` and `pnpm gateway:watch`\n> rebuild for you; a bare `koi ...` runs whatever is already in `dist/`.\n\n---\n\n## How the program starts\n\nFollow this chain once and the entire CLI makes sense.\n\n```mermaid\nflowchart TB\n    bin[\"skykoi.mjs<br/><i>npm bin</i>\"] --> entry[\"src/entry.ts<br/>title, env, re-spawn, profiles\"]\n    entry --> main[\"src/cli/run-main.ts<br/>dotenv, first-run, parse argv\"]\n    main --> reg[\"src/cli/program/command-registry.ts<br/>catalog of subcommands\"]\n    reg --> cmd[\"src/commands/*<br/>the command implementation\"]\n    cmd --> deps[\"createDefaultDeps()<br/>injected config + helpers\"]\n```\n\n| Piece             | Role                                                                                                                                                                               |\n| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `src/cli/`        | Commander-based CLI: program construction, argv helpers, help/version, and a **fast-path router** (`src/cli/route.ts`) that shortcuts common read-only commands past full parsing. |\n| `src/cli/deps.ts` | `createDefaultDeps()`: the dependency-injection container (config, workspace, koi helpers) passed into commands so they are testable.                                              |\n| `src/runtime.ts`  | The injectable `log` / `error` / `exit` surface, so tests can capture output.                                                                                                      |\n\n> The default action: `koi` with no args checks login, then drops into the **TUI** chat, or\n> shows the first-run welcome on a fresh machine.\n\n---\n\n## Repository map\n\nThe product is a **pnpm workspace**: the root package (`skykoi`) plus `extensions/*` (plugins)\nand `apps/*` (native apps). Start with `src/`.\n\n| Path                                                                   | What lives here                                                                          | Start here                                 |\n| ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------ |\n| `src/entry.ts`, `src/index.ts`, `src/runtime.ts`                       | Process bootstrap + public library entry                                                 | `src/entry.ts`                             |\n| `src/cli/`, `src/commands/`                                            | The CLI: command registry + every subcommand                                             | `command-registry.ts`                      |\n| **`src/koi/`**                                                         | **The agent.** The Pi-embedded loop, tools, prompt assembly, sessions, models, sandbox   | `pi-embedded-runner/run.ts`                |\n| `src/auto-reply/`                                                      | Inbound message to command-gating to koi turn to streamed reply                          | `reply.ts`                                 |\n| **`src/gateway/`**                                                     | **The server.** WebSocket + RPC, sessions, heartbeat, control UI, OpenAI-compatible HTTP | `server.impl.ts`                           |\n| `src/gateway-client.ts`                                                | The WS client apps/devices use to connect                                                | `gateway-client.ts`                        |\n| `src/channels/`                                                        | Channel **plugin system**: adapter interfaces, discovery, allowlists, gating             | `plugins/types.core.ts`                    |\n| `src/telegram/ discord/ slack/ signal/ imessage/ web/ whatsapp/ line/` | Per-channel adapters (native API to internal messages)                                   | each dir entry                             |\n| `src/routing/`, `src/pairing/`                                         | Map `(channel, account, peer)` to `(koi, session)`; DM pairing and allowlists            | `routing/resolve-route.ts`                 |\n| `src/providers/`, `src/koi/models-config*.ts`                          | LLM provider adapters and model selection                                                | `models-config.providers.ts`               |\n| `src/config/`                                                          | Config schema, load/validate `~/.skykoi/skykoi.json`, hot-reload, migrations             | `zod-schema.ts`, `paths.ts`                |\n| `src/memory/`                                                          | Long-term memory: SQLite + vectors (`sqlite-vec`) + hybrid search                        | `manager.ts`                               |\n| `src/world-model/`                                                     | The per-koi context block injected into the system prompt                                | `renderer.ts`                              |\n| `src/cron/`                                                            | Scheduled, isolated koi turns                                                            | `service.ts`                               |\n| `src/infra/`                                                           | Backoff/retry, update/self-update, exec-approval policy, heartbeat                       | by filename                                |\n| `src/node-host/`, `src/browser/`                                       | Device capabilities + Chrome automation (the `nodes` and `browser` tools)                | `node-host/runner.ts`, `browser/client.ts` |\n| `src/security/`, `src/gateway/device-auth.ts`                          | Auth tokens, device pairing, exec policy                                                 | `device-auth.ts`                           |\n| `src/plugins/`, `src/plugin-sdk/`                                      | The plugin loader + the public SDK `extensions/*` build against                          | `plugin-sdk/index.ts`                      |\n| `src/tui/`                                                             | The terminal chat UI                                                                     | `tui/`                                     |\n| `extensions/*`                                                         | Workspace plugins: extra channels and memory backends                                    | each `package.json`                        |\n| `apps/macos ios android shared`                                        | Native clients (Swift/Kotlin) that speak the gateway protocol                            | per-app folder                             |\n| `docs/`                                                                | The Mintlify docs site (docs.skykoi.com)                                                 | `docs/index.md`                            |\n| `dist/`                                                                | **Build output. Generated, never edit.**                                                 | -                                          |\n\n> Some directories hold hundreds of files. The \"start here\" file is the door; the imports\n> take you the rest of the way. A directory's own `README.md` or doc page outranks this table.\n\n---\n\n## Core subsystems\n\n### The koi agent loop\n\n`src/koi/` is the heart. A koi \"turn\" builds context, calls the LLM, runs any tools it asks\nfor, feeds results back, and repeats until done. It wraps the embedded **Pi** agent core\n(`@mariozechner/pi-*`; local tweaks live in `patches/`).\n\n```mermaid\nflowchart LR\n    A[\"Build context<br/>system prompt + world model<br/>+ workspace + tools\"] --> B[\"Call the LLM\"]\n    B --> C{\"Tool calls?\"}\n    C -->|yes| D[\"Run tools<br/>exec - browser - files - email...\"]\n    D --> E[\"Feed results back\"]\n    E --> B\n    C -->|no| F[\"Persist session<br/>stream the final reply\"]\n    classDef done fill:#0a6,stroke:#063,color:#fff;\n    class F done;\n```\n\n| Area            | Where                                                       | Notes                                                                                                                                                          |\n| --------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Orchestration   | `pi-embedded-runner/`                                       | `run.ts` drives the loop; `attempt.ts` is one step; `compact.ts` trims history; `model.ts` picks the model and fails over.                                     |\n| System prompt   | `system-prompt.ts` + `src/world-model/`                     | Assembled from runtime metadata, the world model, workspace files, tools, and channel rules.                                                                   |\n| Tools           | `src/koi/tools/`                                            | One file per capability: `exec`, `browser-tool`, file read/write, `email-tool`, `memory-tool`, `nodes-tool`, `cron-tool`, sub-agents, per-channel `*-actions`. |\n| Sessions        | `src/koi/`                                                  | Persisted per `(koi, sessionKey)`, guarded against concurrent writes and corruption.                                                                           |\n| Auth and models | `auth-profiles/`, `model-selection.ts`, `models-config*.ts` | Resolve provider/key/model and fail over when one is unavailable.                                                                                              |\n| Sandbox         | `src/koi/sandbox/`                                          | Docker isolation for non-main (group/channel) sessions and risky tool runs.                                                                                    |\n\n**The koi's brain on disk** is plain Markdown it reads each turn and can edit:\n\n```mermaid\nflowchart LR\n    subgraph ws[\"~/.skykoi workspace\"]\n        direction TB\n        SOUL[\"SOUL.md<br/>behavior + rules\"]\n        KOIf[\"KOI.md<br/>config / personality\"]\n        IDN[\"IDENTITY.md<br/>name / avatar\"]\n        USR[\"USER.md + profile.json<br/>who the owner is\"]\n        MEMf[\"MEMORY.md + memory/*<br/>long-term memory\"]\n        HB[\"HEARTBEAT.md<br/>live state / tasks\"]\n    end\n    ws --> sp[\"into every system prompt\"]\n```\n\n### The gateway\n\n`src/gateway/` is the always-on process that exposes the koi to the world. `server.impl.ts`\nboots the WebSocket server, an HTTP surface (control UI plus an OpenAI-compatible\n`/v1/chat/completions`), the channel manager, cron, heartbeat, and **config hot-reload**.\n\n```mermaid\nflowchart TB\n    subgraph clients[\"Clients\"]\n        direction LR\n        c1[\"macOS / iOS / Android apps\"]\n        c2[\"skykoi-live web surface\"]\n        c3[\"CLI / TUI\"]\n        c4[\"platform connect\"]\n    end\n    clients -->|\"WebSocket + RPC\"| gw\n\n    subgraph gw[\"Gateway process - src/gateway\"]\n        direction TB\n        ws[\"WS server + RPC handlers<br/>server-methods*.ts\"]\n        chat[\"event fan-out<br/>server-chat.ts\"]\n        cm[\"channel manager\"]\n        http[\"HTTP: control UI + OpenAI-compatible API\"]\n    end\n\n    gw --> koi[\"koi runtime - src/koi\"]\n    cm --> chans[\"Channels\"]\n```\n\n> [!NOTE]\n> The **wire protocol** schema is defined in TypeScript and generated to\n> `dist/protocol.schema.json` (plus Swift models) via `scripts/protocol-gen*.ts`. Breaking\n> changes require updating all clients together: run `pnpm protocol:check`.\n\n### Channels, routing and pairing\n\nEvery messaging surface implements the **same adapter interfaces**\n(`src/channels/plugins/types.core.ts`: messaging / auth / outbound / group / command /\nsetup). Channels are **discovered and lazy-loaded**; a configured channel that is not\ninstalled is logged, not fatal. Built-ins live in their own top-level dirs; extra channels\nare `extensions/*` packages built on the `plugin-sdk`.\n\n```mermaid\nflowchart TB\n    M[\"Inbound native message\"] --> ENV[\"Envelope<br/>normalized\"]\n    ENV --> RES[\"resolve-route.ts\"]\n    RES --> SK[\"session-key.ts<br/>channel + account + peer + scope\"]\n    RES --> PAIR{\"known sender?\"}\n    PAIR -->|no| P[\"pairing + allowlist<br/>src/pairing\"]\n    PAIR -->|yes| T[\"target koi + session\"]\n    P --> T\n    T --> KOI[\"koi loop\"]\n```\n\n> [!WARNING]\n> When you change shared **routing / allowlist / pairing / gating** logic, change it for\n> **all** channels at once. That is a recurring source of bugs (see `AGENTS.md`).\n\n### Providers and models\n\nAdapters for Anthropic, OpenAI, AWS Bedrock, Google Gemini, Ollama, and others, plus the\ncustom **\"skykoi\" provider** that proxies through the platform so a shared key never lands\non the device. The actual LLM calls go through the Pi core.\n\n```mermaid\nflowchart LR\n    sel[\"model-selection.ts<br/>capability + cost + availability\"] --> p1{\"primary<br/>available?\"}\n    p1 -->|yes| use[\"use it\"]\n    p1 -->|no| fb[\"fallback chain\"]\n    fb --> use\n    use --> pi[\"Pi core makes the call\"]\n    cfg[\"models-config.providers.ts<br/>+ ~/.skykoi/models.json\"] -.-> sel\n```\n\n### Configuration\n\nConfig is `~/.skykoi/skykoi.json` (JSON5: comments and trailing commas allowed, with\n`${ENV}` substitution). `paths.ts` resolves locations; **`zod-schema.ts` is the runtime\nsource of truth** for valid shape; TypeScript types mirror it in `types*.ts`. Old formats\nare upgraded by `legacy-migrate.ts`, and the gateway hot-reloads most changes.\n\n> [!NOTE]\n> The root `.env.example` is a stale leftover, ignore it. Real configuration is\n> `~/.skykoi/skykoi.json` plus a handful of provider env vars; see the docs config pages.\n\n### Memory\n\nLong-term recall beyond the live context window: messages and notes are embedded and stored\nin SQLite (`sqlite-vec`); retrieval fuses keyword (BM25) and vector similarity.\n\n```mermaid\nflowchart LR\n    msg[\"messages + notes\"] --> emb[\"embeddings\"]\n    emb --> db[(\"SQLite + sqlite-vec\")]\n    q[\"koi memory search\"] --> hyb[\"hybrid: BM25 + vectors\"]\n    db --> hyb\n    hyb --> ctx[\"into the prompt\"]\n```\n\n> Embeddings index asynchronously, so the newest items can lag the index slightly.\n\n### Cron, infra and self-update\n\n`src/cron/` runs scheduled, **isolated** koi turns (a reminder, a daily digest) with no live\nchannel input, delivering the result to a target. `src/infra/` is the cross-cutting glue:\nbackoff, the exec-approval policy engine, heartbeat visibility, and the **self-update** path\nthat pulls the latest npm version and restarts the gateway in place (how the fleet rolls\nforward).\n\n### Device and browser\n\n`src/node-host/` exposes the local machine's capabilities (screenshot, screen frames,\nlocation) that the koi drives via the `nodes` tool. `src/browser/` is full Chrome automation\nover CDP plus Playwright, powering the `browser` tool and web-page capture.\n\n### Plugins, extensions and native apps\n\nThe plugin loader (`src/plugins/`) discovers packages declaring a `skykoi.extensions` entry\nand built against `skykoi/plugin-sdk`. This is how you add a channel or feature **without\ntouching core**. `apps/` holds the native clients (`apps/macos` is the menubar app that\nhosts the gateway today); they are clients of the gateway protocol.\n\n---\n\n## Lifecycle of an inbound message\n\nEnd to end, what happens when a message arrives from a channel:\n\n```mermaid\nsequenceDiagram\n    actor User\n    participant Ch as Channel adapter\n    participant AR as auto-reply\n    participant Rt as routing\n    participant Koi as koi loop\n    participant LLM as LLM provider\n    participant Tool as Tools\n\n    User->>Ch: native message\n    Ch->>AR: normalize to Envelope\n    AR->>AR: command? authorized?\n    AR->>Rt: resolve koi + session\n    Rt->>Koi: run turn\n    loop until done\n        Koi->>LLM: messages + tools\n        LLM-->>Koi: text or tool call\n        Koi->>Tool: execute tool\n        Tool-->>Koi: result\n    end\n    Koi-->>AR: streamed events\n    AR-->>Ch: final reply\n    Ch-->>User: delivered\n```\n\nThe gateway/app path is the same picture, except the entry point is a `chat.send` RPC\ninstead of a channel adapter.\n\n---\n\n## Where to add things\n\n| You want to...                         | Go to                                                                     | Notes                                                                                                   |\n| -------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |\n| Add a **tool** the koi can call        | `src/koi/tools/`                                                          | One file per tool; register it in the runner's toolset. Mind the tool-schema guardrails in `AGENTS.md`. |\n| Add a **CLI command**                  | `src/commands/` + register in `command-registry.ts`                       | Take `deps` from `createDefaultDeps()`.                                                                 |\n| Add a **gateway RPC method**           | `src/gateway/server-methods*.ts` + protocol schema                        | Run `pnpm protocol:gen` and update clients.                                                             |\n| Add a **channel**                      | `extensions/<name>/` against `plugin-sdk` (or a `src/<channel>/` adapter) | Implement the `types.core.ts` interfaces; wire routing/allowlist/gating.                                |\n| Add an **LLM provider/model**          | `models-config.providers.ts`                                              | Add the client init + model defs; selection picks it up.                                                |\n| Change the **system prompt / context** | `system-prompt.ts`, `src/world-model/`                                    | Affects every koi; test broadly.                                                                        |\n| Change **config shape**                | `zod-schema.ts` (+ `types*.ts`, add a migration)                          | Schema is the runtime source of truth.                                                                  |\n\n---\n\n## Build, test and release\n\nEverything is in `package.json` scripts (`pnpm run` lists them). The ones you will use most:\n\n```bash\npnpm build            # tsdown: src/ to dist/  (config: tsdown.config.ts)\npnpm check            # typecheck + lint + format (oxlint / oxfmt)\npnpm test             # vitest; pnpm test:coverage for V8 coverage\npnpm test:live        # tests that hit real provider keys (SKYKOI_LIVE_TEST=1)\npnpm test:docker:*    # end-to-end onboarding / gateway / install flows in Docker\npnpm protocol:check   # fail if the generated wire protocol is out of date\n```\n\n<details>\n<summary><b>Release and native-version details</b></summary>\n\n- **Tests** are colocated `*.test.ts` (e2e: `*.e2e.test.ts`); the full kit is documented in\n  `docs/help/testing.md`.\n- **Releases** are gated and manual: read `docs/reference/RELEASING.md` and\n  `docs/platforms/mac/release.md` first, and never bump versions or `npm publish` without\n  explicit owner sign-off (see `AGENTS.md`).\n- **Native version bumps** touch several files at once: see `AGENTS.md` -> \"Version\nlocations\".\n</details>\n\n---\n\n## Contributor conventions\n\n[`AGENTS.md`](./AGENTS.md) is the detailed playbook (commit/PR flow, docs/i18n rules,\nmulti-koi git safety, channel-refactor checklists, release guardrails). The essentials:\n\n- **TypeScript, ESM, strict.** Avoid `any`. Keep files reasonably small (~500 LOC guideline;\n  `pnpm check:loc`). Run `pnpm check` before you commit.\n- **Add brief comments for non-obvious logic.** Match the surrounding style.\n- **Touch one channel, consider them all** when the change is to shared routing / allowlist /\n  pairing / gating / onboarding logic.\n- **Never edit `node_modules` or `dist/`.** Both are generated.\n- **Dependency patches/overrides need explicit approval** and must be pinned to an exact version.\n\n---\n\n## Security model\n\n```mermaid\nflowchart TB\n    subgraph trusted[\"Host - full access\"]\n        main[\"main session<br/>tools run on the host\"]\n    end\n    subgraph sandboxed[\"Docker sandbox\"]\n        grp[\"group / channel sessions<br/>+ risky tool runs\"]\n    end\n    unknown([\"Unknown sender\"]) --> pair[\"DM pairing required\"]\n    pair --> main\n    sensitive[\"Sensitive command\"] --> approve[\"exec-approval system\"]\n    approve --> main\n    device([\"Gateway client\"]) --> auth[\"device auth\"] --> main\n    creds[\"provider keys\"] --> proxy[\"platform proxy<br/>keys stay off device\"]\n```\n\nIn one breath: the **main** session runs tools on the host with full access; **non-main**\nsessions can be **Docker-sandboxed**; unknown senders must pass **DM pairing**; sensitive\ncommands go through **exec-approval**; **device auth** guards the gateway; and the shared-key\n**platform proxy** keeps provider credentials off the device. Report vulnerabilities per\n[`docs/SECURITY.md`](./docs/SECURITY.md).\n\n---\n\n## Further reading\n\n- **Full docs:** [docs.skykoi.com](https://docs.skykoi.com) (sources in `docs/`: channels,\n  gateway, tools, providers, platforms, config, releasing).\n- **Contributor playbook:** [`AGENTS.md`](./AGENTS.md).\n- **The web/voice surface that talks to this runtime:** the `skykoi-live` repo (it connects\n  to this gateway for deep work).\n\n## License\n\nBUSL-1.1: see [`LICENSE`](./LICENSE) and\n[`docs/THIRD_PARTY_LICENSES.txt`](./docs/THIRD_PARTY_LICENSES.txt).\n","readmeFilename":"README.md"}