mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 15:03:31 +00:00
Composable agent runtime monorepo built on the pi ecosystem
With the Kitty keyboard protocol (flag 4), terminals report both the logical key codepoint and the physical base layout key (PC-101 QWERTY position). The key matching logic in matchesKittySequence matched against both unconditionally, which caused a single keypress to match multiple shortcuts on remapped keyboard layouts. For example, on a Dvorak layout with xremap, pressing Ctrl+K sends CSI 107::118;5u (codepoint=107 'k', base layout=118 'v'). The unconditional base layout match made this also match Ctrl+V, which is bound to pasteImage. Since CustomEditor checks app-level keybindings (pasteImage) before editor keybindings (deleteToLineEnd), Ctrl+K was silently intercepted by the paste image handler instead of deleting to end of line. The same issue affects symbol keys, as Dvorak also remaps symbols to different physical positions (e.g., '/' sits where '[' is on QWERTY). The fix restricts base layout key matching to cases where the codepoint is not a recognized Latin letter (a-z) or symbol (/, -, [, ;, etc.). When the codepoint is already a recognized key, it is authoritative and the base layout key is ignored. This preserves non-Latin layout support (Ctrl+К on a Russian layout still matches Ctrl+K via base layout key 107) while preventing false matches from differing physical key positions on remapped layouts. Both matchesKittySequence and parseKey are updated with the same logic. |
||
|---|---|---|
| .github | ||
| .husky | ||
| .pi | ||
| packages | ||
| scripts | ||
| .gitignore | ||
| AGENTS.md | ||
| biome.json | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| pi-mono.code-workspace | ||
| pi-test.sh | ||
| README.md | ||
| test.sh | ||
| tsconfig.base.json | ||
| tsconfig.json | ||
Pi Monorepo
Looking for the pi coding agent? See packages/coding-agent for installation and usage.
Tools for building AI agents and managing LLM deployments.
Packages
| Package | Description |
|---|---|
| @mariozechner/pi-ai | Unified multi-provider LLM API (OpenAI, Anthropic, Google, etc.) |
| @mariozechner/pi-agent-core | Agent runtime with tool calling and state management |
| @mariozechner/pi-coding-agent | Interactive coding agent CLI |
| @mariozechner/pi-mom | Slack bot that delegates messages to the pi coding agent |
| @mariozechner/pi-tui | Terminal UI library with differential rendering |
| @mariozechner/pi-web-ui | Web components for AI chat interfaces |
| @mariozechner/pi-pods | CLI for managing vLLM deployments on GPU pods |
Contributing
See CONTRIBUTING.md for contribution guidelines and AGENTS.md for project-specific rules (for both humans and agents).
Development
npm install # Install all dependencies
npm run build # Build all packages
npm run check # Lint, format, and type check
./test.sh # Run tests (skips LLM-dependent tests without API keys)
./pi-test.sh # Run pi from sources (must be run from repo root)
Note:
npm run checkrequiresnpm run buildto be run first. The web-ui package usestscwhich needs compiled.d.tsfiles from dependencies.
License
MIT