KeiSeiKit-1.0/_ts_packages/README.md
Parfii-bot 0be354a920 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

111 lines
3.5 KiB
Markdown

# KeiSeiKit TypeScript Packages
> v0.14.0 part B: MCP server layer + external-API adapters.
## RULE 0.2 exception
TypeScript is chosen here under **RULE 0.2 exception #4 (Browser/DOM adjacent)** because:
1. The official Model Context Protocol SDK is TypeScript-native; Rust MCP
libraries are immature (as of 2026-04).
2. The API adapters rely on JS-native SDKs with no Rust equivalents:
- `grammy` (type-safe Telegram bot)
- `googleapis` (official Google API SDK for Gmail + YouTube)
- `youtube-transcript` (Tier-1 free transcript extractor)
3. Async, JSON-heavy glue code is TypeScript's sweet spot.
**Core primitives (signing, ledger, graph, memory, refactor, etc.) remain
Rust** in `../_primitives/_rust/`. This TS layer is a THIN wrapper: it
spawns the Rust CLIs as subprocesses and exposes them as MCP tools, plus
the six adapters above that have no Rust equivalent.
## Layout
```
_ts_packages/
├── package.json npm workspace root
├── tsconfig.base.json strict TS 5.x
└── packages/
├── mcp-server/ @keisei/mcp-server
├── telegram-adapter/ @keisei/telegram-adapter
├── recall-adapter/ @keisei/recall-adapter (Zoom via Recall.ai)
├── grok-adapter/ @keisei/grok-adapter (xAI)
├── gmail-adapter/ @keisei/gmail-adapter
└── youtube-adapter/ @keisei/youtube-adapter
```
## Install (for end users)
### 1. Install workspace deps
```bash
cd _ts_packages
npm install
npm run build
```
### 2. Link each package as a global CLI (optional)
```bash
npm i -g ./packages/mcp-server
npm i -g ./packages/telegram-adapter
# ... etc
```
Or install into a Claude agent directory:
```bash
npm i --prefix ~/.claude/agents/_ts_packages/packages/mcp-server \
./_ts_packages/packages/mcp-server
```
## Environment variables (RULE 0.8 — secrets in `~/.claude/secrets/.env`)
| Var | Package | Purpose |
|---|---|---|
| `TELEGRAM_BOT_TOKEN` | telegram-adapter | Bot API token |
| `RECALL_API_KEY` | recall-adapter | Recall.ai API key (Zoom meetings) |
| `XAI_API_KEY` | grok-adapter | xAI Grok API key |
| `GMAIL_CLIENT_ID` | gmail-adapter | Google OAuth2 client id |
| `GMAIL_CLIENT_SECRET` | gmail-adapter | Google OAuth2 client secret |
| `GMAIL_REFRESH_TOKEN` | gmail-adapter | Long-lived OAuth2 refresh token |
| `YOUTUBE_API_KEY` | youtube-adapter | YouTube Data API v3 key |
| `KEI_MCP_AUTH_TOKEN` | mcp-server | HMAC token for tool callers |
| `KEI_RUST_BIN_DIR` | mcp-server | Override directory holding Rust primitive CLIs |
All are read via `process.env`. Hardcoding tokens is **forbidden** (RULE 0.8).
## MCP server integration
The `@keisei/mcp-server` exposes the Rust primitive CLIs as MCP tools. The
pattern is one Rust binary = one MCP tool, with the `kei` meta-tool on
top that routes natural-language queries via `kei-router`.
Stdio mode (for Claude Code native integration):
```bash
npx @keisei/mcp-server --stdio
```
HTTP mode:
```bash
npx @keisei/mcp-server --port 3000 --auth-token-file ~/.claude/mcp-token
```
## Verification
```bash
npm install
npm run build --workspaces
npm run test --workspaces
```
All six packages compile under `strict: true`. Total new LOC: see commit.
## Migration notes
- Zero impact on existing KeiSeiKit users unless they opt into the MCP
server (planned v0.14.1 installer flag `--enable-mcp`).
- The Rust primitives are unchanged; this layer only **wraps** them.
- Gmail and YouTube adapters are **new** (gaps in LBM).