{ "name": "@geminixiang/mikan", "version": "1.6.0-beta.0", "description": "Self-hosted AI coding agent for organizations: every Slack channel and DM gets its own sandboxed workspace, credentials, and memory.", "keywords": [ "agent", "ai", "bot", "discord", "slack", "telegram" ], "license": "MIT", "author": "geminixiang", "repository": { "type": "git", "url": "git+https://github.com/geminixiang/mikan.git" }, "bin": { "mikan": "dist/main.js" }, "files": [ "dist", "CHANGELOG.md" ], "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { ".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" }, "./package.json": "./package.json" }, "scripts": { "clean": "shx rm -rf dist", "build": "npm run clean && tsgo -p src/tsconfig.build.json && shx chmod +x dist/main.js", "dev": "tsgo -p src/tsconfig.build.json --watch --preserveWatchOutput", "test": "vitest --run --config .config/vitest.config.ts", "typecheck": "tsgo -p .config/tsconfig.typecheck.json", "test:coverage": "vitest --run --coverage --config .config/vitest.config.ts", "test:office:docker": "node scripts/verify-office-docker.mjs", "lint": "oxlint -c .config/oxlintrc.json --deny-warnings", "lint:fix": "oxlint -c .config/oxlintrc.json --fix", "fmt": "oxfmt -c .config/oxfmtrc.json", "fmt:check": "oxfmt -c .config/oxfmtrc.json --check", "knip": "knip && knip --production --dependencies", "duplication": "jscpd src --format typescript --min-tokens 70 --ignore \"**/test/**,**/*.test.ts,**/content/**\"", "knip:unused": "knip --production --exclude files --no-exit-code", "prepublishOnly": "npm run build", "prepare": "husky", "test:e2e": "vitest --run --config .config/vitest.e2e.config.ts", "test:e2e:slack": "vitest --run --config .config/vitest.e2e.config.ts e2e/slack", "test:e2e:slack:local": "npm run build && node scripts/run-local-slack-e2e.mjs", "test:e2e:slack:coverage": "vitest --run --coverage --coverage.reportsDirectory=.workspace/coverage --config .config/vitest.e2e.config.ts e2e/slack", "docs:dev": "astro dev --config .config/astro.config.mjs", "docs:build": "astro build --config .config/astro.config.mjs", "docs:preview": "astro preview --config .config/astro.config.mjs" }, "dependencies": { "@clack/prompts": "^1.8.1", "@earendil-works/chord": "1.5.2", "@earendil-works/pi-ai": "1.5.2", "@earendil-works/pi-codemode": "1.5.2", "@earendil-works/pi-durable": "1.5.2", "@earendil-works/pi-env": "1.5.2", "@earendil-works/pi-mcp": "1.5.2", "@mdream/js": "^2.0.1", "@novnc/novnc": "^1.7.0", "@opentelemetry/api": "^1.9.1", "@opentelemetry/exporter-metrics-otlp-proto": "^0.221.0", "@opentelemetry/exporter-trace-otlp-proto": "^0.221.0", "@opentelemetry/resources": "^2.10.0", "@opentelemetry/sdk-metrics": "^2.10.0", "@opentelemetry/sdk-trace-node": "^2.10.0", "@sentry/node": "^10.60.0", "@sentry/opentelemetry": "^10.68.0", "@slack/socket-mode": "^2.0.7", "@slack/web-api": "^8.0.0", "chalk": "^5.6.2", "commander": "^15.0.0", "croner": "^10.0.1", "discord.js": "^14.26.4", "grammy": "^1.44.0", "markdown-it": "^14.2.0", "typebox": "1.3.27", "undici": "^8.5.0" }, "devDependencies": { "@astrojs/mdx": "^7.0.0", "@astrojs/starlight": "^0.41.0", "@geminixiang/mikan-starlight-theme": "github:geminixiang/mikan-starlight-theme", "@slack/types": "^3.0.0", "@types/markdown-it": "^14.1.2", "@types/node": "^26.0.1", "@typescript/native-preview": "^7.0.0-dev.20260624.1", "@vitest/coverage-v8": "^4.1.9", "astro": "^7.0.2", "husky": "^9.1.7", "jscpd": "^5.3.3", "knip": "^6.20.0", "oxfmt": "^0.60.0", "oxlint": "^1.71.0", "remark-gfm": "^4.0.1", "shx": "^0.4.0", "typescript": "^6.0.3", "vitest": "^4.1.9" }, "overrides": { "@discordjs/rest": { "undici": "6.27.0" }, "astro-expressive-code": { "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0" }, "discord.js": { "undici": "6.27.0" } }, "engines": { "node": ">=24.15.0" }, "knip": { "entry": [ "src/index.ts!", "src/main.ts!", "src/observability/instrument.ts!" ], "ignore": [ ".pi/**", "scripts/**", "deploy/**" ], "astro": { "config": [ ".config/astro.config.mjs" ] }, "vitest": { "config": [ ".config/vitest.config.ts", ".config/vitest.e2e.config.ts" ] } } }