pi-huly
Native Huly support cho pi-coding-agent — tools + skills + subagent (KHÔNG MCP, gọi thẳng WebSocket API)
Package details
Install pi-huly from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-huly- Package
pi-huly- Version
1.0.0-beta.18- Published
- Jul 30, 2026
- Downloads
- 921/mo · 921/wk
- Author
- naicoi92
- License
- MIT
- Types
- extension, skill
- Size
- 900.6 KB
- Dependencies
- 6 dependencies · 5 peers
Pi manifest JSON
{
"skills": [
"./skills"
],
"extensions": [
"./dist/index.mjs"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-huly
Native Huly support cho pi-coding-agent — ~102 tools + 2 skills + subagent-compatible. KHÔNG MCP, gọi thẳng Huly WebSocket/REST API.
Status: M5 Hardening + release (post-T-37). Design docs trong docs/design/. Tasks trong TASKS.md.
Tại sao pi-huly?
Huly (self-host project management) không có native integration với pi-coding-agent.
Cách cũ: chạy @firfi/huly-mcp làm MCP server riêng (process ngoài, config
transport, ~470 tools nhiễu context window LLM). pi-huly đóng gói đúng ~102
tools thiết yếu chạy native trong pi process, kèm sẵn skills huly-docs +
huly-tasks, tương thích pi-subagents.
| Vấn đề | pi-huly giải quyết |
|---|---|
| MCP server riêng (process phụ thuộc, env vars) | 1 package native, cùng lifecycle session |
| ~470 tools nhiễu LLM | ~102 tools full-CRUD-per-domain, không gap lifecycle |
| Skills phụ thuộc MCP server runtime | Skills đi kèm, tools cùng process |
| Hosted Huly SaaS shutdown 2026-07-20 | Target self-hosted Huly từ đầu |
Features
- 🔑 Native, không MCP — tools chạy trong pi process, không spawn process ngoài.
- 🔑 Lean + complete — 102 tools full-CRUD-per-domain, không nhiễu context.
- 🔎 Tự chứa — package mang theo skills + tools + Huly client,
pi installxong dùng được. - 🔒 Multi-workspace — lưu token/password mỗi workspace, switch qua
/huly. - 🔀 Transport toggle — WebSocket (persistent, pool) hoặc REST (stateless), default ws.
- 🛡️ Confirm gate — destructive ops (delete) yêu cầu confirm; non-TUI auto-deny.
- 🔁 Markdown round-trip — Huly markup ↔ markdown lossless (native ref links).
- 🎨 TUI render —
huly_get_issuecard,huly_list_issuestable,huly_get_documentpreview.
Requirements
- Node.js 24 (LTS) — pin
.node-version. Consumer floor>=22.19.0(pi engine). - pi-coding-agent
>=0.82.1(peer dependency). - Self-host Huly instance (KHÔNG support hosted SaaS — đã shutdown 2026-07-20). Hướng dẫn self-host: https://docs.huly.io/self-host/.
@hcengineering/*deps publish public trên npmjs.org (KHÔNG cần GitHub Packages token).
Install
pi install npm:pi-huly
Hoặc từ source:
git clone https://github.com/naicoi92/pi-huly.git
cd pi-huly
pnpm install # no token needed — @hcengineering public on npm
pnpm run typecheck # verify toolchain
pnpm run build # → dist/index.mjs
Quick start (3 bước)
# 1. Cài package
pi install npm:pi-huly
# 2. Bind workspace cho cwd hiện tại (interactive — chọn workspace + project)
/huly init
# 3. Dùng tool (LLM tự gọi, hoặc bạn invoke qua prompt)
# VD: "Tạo issue PD-1: 'Setup CI' priority high"
# → LLM gọi huly_create_issue({project:"PD", title:"Setup CI", priority:"high"})
/huly command guide
Unified command, git-like subcommands:
| Subcommand | Mô tả |
|---|---|
/huly |
Smart: cwd bound → status; unbound → init flow |
/huly init |
Setup/bind cwd (chọn workspace → verify → project → bind) |
/huly status |
Diagnostics: binding, pool health, user, version |
/huly workspace list |
List workspace đã config |
/huly workspace add |
Add workspace (url + auth) |
/huly workspace remove <id> |
Remove workspace |
/huly link [ws] [project] |
Bind cwd manual |
/huly unlink |
Remove cwd binding |
Tool catalog (19 domains, 102 tools)
| Domain | Tools | VD |
|---|---|---|
| Issues | 21 | create/list/get/update/delete/move_issue, add/remove_label, relations, templates |
| Documents | 10 | create/edit/get/delete_document, teamspace CRUD |
| Projects | 6 | create/list/get/update/delete_project, list_statuses |
| Milestones | 6 | CRUD + set_issue_milestone |
| Components | 6 | CRUD + set_issue_component |
| Comments | 4 | list/add/update/delete_comment |
| Workspace | 5 | get_workspace_info, list_workspaces/members, get/update_user_profile |
| Labels | 4 | list/create/update/delete_label (GLOBAL namespace) |
| Tags | 7 | CRUD + attach/detach/list_attached |
| Tag-categories | 4 | CRUD |
| Attachments | 5 | list/get/add/download (incl issue attachment) |
| Todos | 7 | list/get/create/update/complete/reopen/delete |
| Search | 1 | fulltext_search (global) |
| Deletion | 1 | preview_deletion (cascade preview) |
| Time | 1 | log_time (minutes) |
| Contacts | 2 | list_employees, list_persons (assignee resolution) |
| Task-management | 5 | create_issue_status, create_task_type, list/get_project_type |
| Spaces | 5 | list/get_space, list/get/update_space_type |
| Snapshots | 2 | list/get_document_snapshot |
Mọi tool có prefix huly_ (vd huly_create_issue). Common params:
workspace?— override workspace (default: cwd-map)project?— project-scoped (issues/milestones/components)identifier— issue:PD-123hoặc raw123assignee?— auto-resolve currentUser email khi absent (D15)
Xem chi tiết: docs/design/06-api.md.
Configuration
pi-huly dùng 2 file global (KHÔNG env vars, KHÔNG project-local):
~/.pi/huly/credentials.json(chmod 600, KHÔNG commit) — auth union per workspace:{ "workspaces": { "myteam": { "url": "https://huly.example.com", "workspace": "myteam", "token": "tok_xxx" } } }Hoặc email/password:
{ "workspaces": { "myteam": { "url": "https://huly.example.com", "workspace": "myteam", "email": "user@example.com", "password": "pass123" } } }~/.pi/huly/config.json(non-secret) — transport + cwd binding:{ "version": 1, "transport": "ws", "projects": { "/Users/me/projects/myapp": { "workspace": "myteam", "project": "PD" } } }
Cả 2 file được tạo/quản lý qua /huly init. KHÔNG edit tay trừ khi cần.
Secret CHỈ trong credentials.json, KHÔNG log.
Transport + Auth
- Transport (
config.json):ws(default) — WebSocket persistent, connection pool per-workspace (max 8 ws, LRU evict), auto-reconnect backoff. Tốt cho latency.rest— REST stateless, KHÔNG pool. Tốt cho environments block WS.
- Auth (per workspace):
token— Huly API token (preferred).email+password— login credentials (api-clientconnecthỗ trợ cả 2).
Skills (bundled)
pi-huly ship 2 skills (auto-load qua package manifest pi.skills):
huly-docs— DocStore adapter choproject-designworkflow. Sync design docs ↔ Huly Documents.huly-tasks— TaskStore adapter. Sync tasks/issues ↔ Huly Issues. Hỗ trợmilestone-implementorchestrator.
Cả 2 đã adapted: dùng huly_ prefixed tools (KHÔNG MCP refs), giữ structure gốc.
Troubleshooting
| Symptom | Nguyên nhân + Fix |
|---|---|
NeedsInitError: No workspace resolved |
cwd chưa bind. Run /huly init. |
NeedsDisambiguationError: Workspace ambiguous |
Same-name diff-URL. Specify workspace param explicit. |
ConnectionError: Huly unreachable |
Check URL, network, self-host Huly running. /huly status diagnostic. |
AuthError: token expired |
Refresh token trong /huly workspace add. |
| TS 7 typecheck fail (R6) | Rollback TS 6.x: pnpm install -D typescript@~6.1. Xem R6 rollback. |
no document found, failed to apply model transaction spam |
Upstream cache-miss warn khi replay tx cũ cho doc đã expire/removed — vô hại. Filter default ON. /huly status hiển thị pool noise: N filtered. Debug thật: set quietUpstreamNoise: false trong ~/.pi/agent/huly/config.json. |
client websocket error spam + token trong URL |
Upstream WS error log (connection.js:554) chứa URL _transactor/<api-token> — token leak security (NFR-04). Filter swallow toàn bộ (KHÔNG redact). WS onerror vẫn trigger reconnect bình thường — chỉ log bị gate. Filter default ON. |
R6 rollback
Nếu pnpm run typecheck fail với TS 7 incompatibility vs @earendil-works/* types:
pnpm install -D typescript@~6.1
pnpm run typecheck
# Pass → ghi known-good TS version + mở issue tag maintainer
# Fail → investigate root cause (có thể pi types bug, KHÔNG phải TS 7)
TS 7 (native Go compiler, 2026-07-08) mostly backward-compat.
R6 likelihood 🟢 (design 03-tech-stack.md §8).
License
- pi-huly: MIT © naicoi92.
- Runtime dependency
@hcengineering/*: EPL-2.0 (consumer install từ npm public — KHÔNG bundled vào dist). XemNOTICE.mdcho attribution + source availability. - Other deps (
ws,typebox,@earendil-works/*): MIT.
R1 license audit đầy đủ: NOTICE.md.
Links
- Design docs (10-step project-design)
- Tasks (TaskStore = local-tasks)
- Implementation roadmap
- Release plan
- Issues
- Huly self-host guide