@pi-unipi/unipi 0.1.15 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -239
- package/package.json +12 -5
- package/packages/ask-user/README.md +34 -43
- package/packages/ask-user/ask-ui.ts +657 -0
- package/packages/ask-user/commands.ts +50 -0
- package/packages/ask-user/config.ts +139 -0
- package/packages/ask-user/settings-tui.ts +186 -0
- package/packages/ask-user/tools.ts +347 -0
- package/packages/ask-user/types.ts +68 -0
- package/packages/autocomplete/src/constants.ts +20 -0
- package/packages/autocomplete/src/settings.ts +2 -2
- package/packages/btw/README.md +32 -61
- package/packages/compactor/README.md +13 -25
- package/packages/compactor/src/commands/index.ts +2 -2
- package/packages/compactor/src/compaction/hooks.ts +3 -5
- package/packages/compactor/src/config/schema.ts +1 -1
- package/packages/compactor/src/display/diff-presentation.ts +6 -1
- package/packages/compactor/src/display/diff-renderer.ts +34 -8
- package/packages/compactor/src/display/diff-width-safety.ts +83 -0
- package/packages/compactor/src/display/line-width-safety.ts +14 -2
- package/packages/compactor/src/index.ts +131 -23
- package/packages/compactor/src/info-screen.ts +136 -51
- package/packages/compactor/src/session/analytics.ts +198 -0
- package/packages/compactor/src/session/db.ts +3 -0
- package/packages/compactor/src/tools/register.ts +2 -2
- package/packages/compactor/src/types.ts +5 -6
- package/packages/core/README.md +20 -11
- package/packages/core/constants.ts +337 -0
- package/packages/core/events.ts +411 -0
- package/packages/core/model-cache.ts +70 -0
- package/packages/core/sandbox.ts +94 -0
- package/packages/core/utils.ts +196 -0
- package/packages/footer/README.md +73 -158
- package/packages/footer/src/commands.ts +3 -0
- package/packages/footer/src/config.ts +6 -6
- package/packages/footer/src/events.ts +34 -34
- package/packages/footer/src/index.ts +21 -9
- package/packages/footer/src/presets.ts +6 -6
- package/packages/footer/src/registry/index.ts +5 -7
- package/packages/footer/src/rendering/icons.ts +88 -88
- package/packages/footer/src/rendering/renderer.ts +4 -4
- package/packages/footer/src/segments/core.ts +14 -55
- package/packages/footer/src/segments/memory.ts +9 -7
- package/packages/footer/src/segments/ralph.ts +9 -10
- package/packages/footer/src/segments/status-ext.ts +17 -12
- package/packages/footer/src/segments/workflow.ts +5 -4
- package/packages/footer/src/tui/settings-tui.ts +216 -155
- package/packages/footer/types.ts +7 -0
- package/packages/info-screen/README.md +17 -31
- package/packages/info-screen/config.ts +171 -0
- package/packages/info-screen/core-groups.ts +642 -0
- package/packages/info-screen/registry.ts +272 -0
- package/packages/info-screen/tui/info-overlay.ts +495 -0
- package/packages/info-screen/types.ts +76 -0
- package/packages/info-screen/usage-parser.ts +308 -0
- package/packages/input-shortcuts/README.md +79 -0
- package/packages/input-shortcuts/index.ts +5 -0
- package/packages/input-shortcuts/src/chord-overlay.ts +235 -0
- package/packages/input-shortcuts/src/clipboard.ts +119 -0
- package/packages/input-shortcuts/src/index.ts +411 -0
- package/packages/input-shortcuts/src/registers.ts +92 -0
- package/packages/input-shortcuts/src/settings-overlay.ts +142 -0
- package/packages/input-shortcuts/src/status.ts +35 -0
- package/packages/input-shortcuts/src/types.ts +48 -0
- package/packages/input-shortcuts/src/undo-redo.ts +86 -0
- package/packages/kanboard/README.md +36 -81
- package/packages/kanboard/commands.ts +84 -0
- package/packages/kanboard/tui/kanboard-overlay.ts +298 -0
- package/packages/kanboard/types.ts +67 -0
- package/packages/mcp/README.md +40 -53
- package/packages/mcp/src/index.ts +2 -5
- package/packages/memory/README.md +39 -40
- package/packages/memory/commands.ts +204 -0
- package/packages/memory/embedding.ts +243 -0
- package/packages/memory/search.ts +134 -0
- package/packages/memory/settings.ts +135 -0
- package/packages/memory/storage.ts +941 -0
- package/packages/memory/tools.ts +423 -0
- package/packages/memory/tui/settings-tui.ts +281 -0
- package/packages/milestone/README.md +43 -68
- package/packages/milestone/coexist.ts +114 -0
- package/packages/milestone/commands.ts +97 -0
- package/packages/milestone/hooks.ts +208 -0
- package/packages/milestone/milestone.ts +238 -0
- package/packages/milestone/types.ts +61 -0
- package/packages/notify/README.md +51 -74
- package/packages/notify/commands.ts +342 -0
- package/packages/notify/events.ts +346 -0
- package/packages/notify/index.ts +2 -1
- package/packages/notify/ntfy-config.ts +178 -0
- package/packages/notify/platforms/gotify.ts +36 -0
- package/packages/notify/platforms/native.ts +47 -0
- package/packages/notify/platforms/node-notifier.d.ts +20 -0
- package/packages/notify/platforms/ntfy.ts +48 -0
- package/packages/notify/platforms/telegram.ts +77 -0
- package/packages/notify/settings.ts +137 -0
- package/packages/notify/skills/configure-notify/SKILL.md +43 -6
- package/packages/notify/summarize.ts +149 -0
- package/packages/notify/tools.ts +91 -0
- package/packages/notify/tui/gotify-setup.ts +528 -0
- package/packages/notify/tui/ntfy-setup.ts +652 -0
- package/packages/notify/tui/recap-model-selector.ts +301 -0
- package/packages/notify/tui/settings-overlay.ts +326 -0
- package/packages/notify/tui/telegram-setup.ts +301 -0
- package/packages/notify/types.ts +114 -0
- package/packages/ralph/README.md +28 -34
- package/packages/ralph/ralph-loop.ts +431 -0
- package/packages/ralph/tools.ts +156 -0
- package/packages/subagents/README.md +36 -44
- package/packages/unipi/index.ts +4 -0
- package/packages/updater/README.md +77 -0
- package/packages/updater/index.ts +6 -0
- package/packages/updater/skills/configure-updater/SKILL.md +65 -0
- package/packages/updater/src/cache.ts +67 -0
- package/packages/updater/src/changelog.ts +141 -0
- package/packages/updater/src/checker.ts +84 -0
- package/packages/updater/src/commands.ts +83 -0
- package/packages/updater/src/index.ts +178 -0
- package/packages/updater/src/installer.ts +74 -0
- package/packages/updater/src/markdown.ts +173 -0
- package/packages/updater/src/readme.ts +139 -0
- package/packages/updater/src/settings.ts +98 -0
- package/packages/updater/src/tui/changelog-overlay.ts +256 -0
- package/packages/updater/src/tui/readme-overlay.ts +236 -0
- package/packages/updater/src/tui/settings-overlay.ts +191 -0
- package/packages/updater/src/tui/update-overlay.ts +261 -0
- package/packages/updater/types.ts +69 -0
- package/packages/utility/README.md +70 -144
- package/packages/utility/src/diff/highlighter.ts +1 -2
- package/packages/utility/src/diff/renderer.ts +25 -52
- package/packages/utility/src/diff/wrapper.ts +60 -8
- package/packages/web-api/README.md +81 -114
- package/packages/web-api/skills/web/SKILL.md +54 -11
- package/packages/web-api/src/engine/constants.ts +36 -0
- package/packages/web-api/src/engine/dependencies.ts +145 -0
- package/packages/web-api/src/engine/dom.ts +266 -0
- package/packages/web-api/src/engine/extract.ts +642 -0
- package/packages/web-api/src/engine/format.ts +306 -0
- package/packages/web-api/src/engine/profiles.ts +102 -0
- package/packages/web-api/src/engine/types.ts +169 -0
- package/packages/web-api/src/index.ts +9 -2
- package/packages/web-api/src/providers/base.ts +9 -1
- package/packages/web-api/src/settings.ts +70 -4
- package/packages/web-api/src/tools.ts +281 -24
- package/packages/web-api/src/tui/progress.ts +168 -0
- package/packages/web-api/src/tui/result.ts +173 -0
- package/packages/web-api/src/tui/settings-dialog.ts +168 -0
- package/packages/workflow/README.md +39 -55
- package/packages/workflow/commands.ts +472 -0
package/README.md
CHANGED
|
@@ -1,281 +1,168 @@
|
|
|
1
1
|
# Unipi
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
18 packages that turn Pi into a full development workstation. Structured workflows, persistent memory, parallel agents, web research, notifications, context management, and a live status bar — all wired together through a shared event system.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
**All-in-one:**
|
|
5
|
+
One command installs everything:
|
|
8
6
|
```bash
|
|
9
7
|
pi install npm:@pi-unipi/unipi
|
|
10
8
|
```
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
pi install npm:@pi-unipi/core
|
|
15
|
-
pi install npm:@pi-unipi/workflow
|
|
16
|
-
pi install npm:@pi-unipi/ralph
|
|
17
|
-
pi install npm:@pi-unipi/memory
|
|
18
|
-
pi install npm:@pi-unipi/info-screen
|
|
19
|
-
pi install npm:@pi-unipi/subagents
|
|
20
|
-
pi install npm:@pi-unipi/btw
|
|
21
|
-
pi install npm:@pi-unipi/web-api
|
|
22
|
-
pi install npm:@pi-unipi/compactor
|
|
23
|
-
pi install npm:@pi-unipi/notify
|
|
24
|
-
pi install npm:@pi-unipi/utility
|
|
25
|
-
pi install npm:@pi-unipi/mcp
|
|
26
|
-
pi install npm:@pi-unipi/ask-user
|
|
27
|
-
pi install npm:@pi-unipi/milestone
|
|
28
|
-
pi install npm:@pi-unipi/kanboard
|
|
29
|
-
pi install npm:@pi-unipi/footer
|
|
30
|
-
```
|
|
10
|
+
## What You Get
|
|
31
11
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
| Package | Description |
|
|
35
|
-
|---------|-------------|
|
|
36
|
-
| `@pi-unipi/core` | Shared utilities, event types, constants |
|
|
37
|
-
| `@pi-unipi/workflow` | 20 structured development workflow commands |
|
|
38
|
-
| `@pi-unipi/ralph` | Long-running iterative development loops |
|
|
39
|
-
| `@pi-unipi/memory` | Persistent cross-session memory with vector search |
|
|
40
|
-
| `@pi-unipi/info-screen` | Dashboard and module registry overlay |
|
|
41
|
-
| `@pi-unipi/subagents` | Parallel sub-agent execution with file locking |
|
|
42
|
-
| `@pi-unipi/btw` | Parallel side conversations with `/btw` |
|
|
43
|
-
| `@pi-unipi/web-api` | Web search, read, and summarize with provider selection |
|
|
44
|
-
| `@pi-unipi/compactor` | Session compaction, context management, batch execution |
|
|
45
|
-
| `@pi-unipi/notify` | Cross-platform notifications (native, Gotify, Telegram, ntfy) |
|
|
46
|
-
| `@pi-unipi/utility` | Environment info, diagnostics, settings inspector, cleanup |
|
|
47
|
-
| `@pi-unipi/mcp` | MCP server discovery, connection, and tool integration |
|
|
48
|
-
| `@pi-unipi/ask-user` | Structured user input with options and freeform text |
|
|
49
|
-
| `@pi-unipi/milestone` | Milestone tracking and project progress management |
|
|
50
|
-
| `@pi-unipi/kanboard` | Kanboard visualization server with TUI overlay |
|
|
51
|
-
| `@pi-unipi/footer` | Persistent status bar with live stats from all packages |
|
|
52
|
-
|
|
53
|
-
## Commands
|
|
54
|
-
|
|
55
|
-
### Workflow (`/unipi:*`)
|
|
56
|
-
|
|
57
|
-
| Command | Description |
|
|
58
|
-
|---------|-------------|
|
|
59
|
-
| `/unipi:brainstorm` | Collaborative discovery |
|
|
60
|
-
| `/unipi:plan` | Strategic planning |
|
|
61
|
-
| `/unipi:work` | Execute plan in worktree |
|
|
62
|
-
| `/unipi:review-work` | Review what was built |
|
|
63
|
-
| `/unipi:consolidate` | Merge findings, update docs |
|
|
64
|
-
| `/unipi:auto` | Full pipeline — brainstorm → plan → work → review → merge |
|
|
65
|
-
| `/unipi:worktree-create` | Create git worktree |
|
|
66
|
-
| `/unipi:worktree-list` | List all worktrees |
|
|
67
|
-
| `/unipi:worktree-merge` | Merge worktree back |
|
|
68
|
-
| `/unipi:consultant` | Expert panel review |
|
|
69
|
-
| `/unipi:quick-work` | Fast single-task execution |
|
|
70
|
-
| `/unipi:gather-context` | Research codebase |
|
|
71
|
-
| `/unipi:document` | Generate documentation |
|
|
72
|
-
| `/unipi:scan-issues` | Find bugs, anti-patterns |
|
|
73
|
-
| `/unipi:debug` | Active bug investigation — reproduce, diagnose, root-cause |
|
|
74
|
-
| `/unipi:fix` | Fix bugs using debug reports |
|
|
75
|
-
| `/unipi:quick-fix` | Fast one-shot fix for clear bugs |
|
|
76
|
-
| `/unipi:research` | Deep codebase investigation and documentation review |
|
|
77
|
-
| `/unipi:chore-create` | Create reusable chore (deploy, publish, etc.) |
|
|
78
|
-
| `/unipi:chore-execute` | Run a saved chore |
|
|
79
|
-
|
|
80
|
-
### Ralph (`/unipi:ralph`)
|
|
81
|
-
|
|
82
|
-
| Command | Description |
|
|
83
|
-
|---------|-------------|
|
|
84
|
-
| `/unipi:ralph start <name>` | Start a loop |
|
|
85
|
-
| `/unipi:ralph stop` | Pause current loop |
|
|
86
|
-
| `/unipi:ralph resume <name>` | Resume a paused loop |
|
|
87
|
-
| `/unipi:ralph status` | Show all loops |
|
|
88
|
-
| `/unipi:ralph cancel <name>` | Delete loop state |
|
|
89
|
-
| `/unipi:ralph archive <name>` | Archive completed loop |
|
|
90
|
-
| `/unipi:ralph clean` | Clean completed loops |
|
|
91
|
-
| `/unipi:ralph nuke` | Delete all ralph data |
|
|
92
|
-
|
|
93
|
-
### Memory (`/unipi:*-memory-*`)
|
|
94
|
-
|
|
95
|
-
| Command | Description |
|
|
96
|
-
|---------|-------------|
|
|
97
|
-
| `/unipi:memory-process <text>` | Store extracted memories |
|
|
98
|
-
| `/unipi:memory-search <term>` | Search project memories |
|
|
99
|
-
| `/unipi:memory-consolidate` | Consolidate session into memory |
|
|
100
|
-
| `/unipi:memory-forget <title>` | Delete a memory |
|
|
101
|
-
| `/unipi:global-memory-search <term>` | Search global memories |
|
|
102
|
-
| `/unipi:global-memory-list` | List all global memories |
|
|
103
|
-
|
|
104
|
-
### BTW (`/btw*`)
|
|
105
|
-
|
|
106
|
-
| Command | Description |
|
|
107
|
-
|---------|-------------|
|
|
108
|
-
| `/btw [--save] <question>` | Side conversation (contextual) |
|
|
109
|
-
| `/btw:tangent [--save] <q>` | Contextless tangent thread |
|
|
110
|
-
| `/btw:new [question]` | Fresh thread with main-session context |
|
|
111
|
-
| `/btw:clear` | Dismiss and clear thread |
|
|
112
|
-
| `/btw:inject [instructions]` | Send full thread to main agent |
|
|
113
|
-
| `/btw:summarize [instr]` | Summarize and inject into main agent |
|
|
114
|
-
|
|
115
|
-
### Info Screen (`/unipi:info*`)
|
|
116
|
-
|
|
117
|
-
| Command | Description |
|
|
118
|
-
|---------|-------------|
|
|
119
|
-
| `/unipi:info` | Show info dashboard |
|
|
120
|
-
| `/unipi:info-settings` | Configure info display |
|
|
121
|
-
|
|
122
|
-
### Web API (`/unipi:web-*`)
|
|
123
|
-
|
|
124
|
-
| Command | Description |
|
|
125
|
-
|---------|-------------|
|
|
126
|
-
| `/unipi:web-settings` | Configure providers and API keys |
|
|
127
|
-
| `/unipi:web-cache-clear` | Clear all cached web content |
|
|
128
|
-
|
|
129
|
-
### Compactor (`/unipi:compact*`)
|
|
130
|
-
|
|
131
|
-
| Command | Description |
|
|
132
|
-
|---------|-------------|
|
|
133
|
-
| `/unipi:compact` | Compact session into brief |
|
|
134
|
-
| `/unipi:compact-recall` | Recall from compacted sessions |
|
|
135
|
-
| `/unipi:compact-stats` | Show compaction statistics |
|
|
136
|
-
| `/unipi:compact-doctor` | Diagnose compactor issues |
|
|
137
|
-
| `/unipi:compact-settings` | Configure compactor |
|
|
138
|
-
| `/unipi:compact-preset` | Apply compaction presets |
|
|
139
|
-
| `/unipi:compact-index` | Index context for search |
|
|
140
|
-
| `/unipi:compact-search` | Search indexed context |
|
|
141
|
-
| `/unipi:compact-purge` | Purge old compacted data |
|
|
142
|
-
|
|
143
|
-
### Notify (`/unipi:notify-*`)
|
|
144
|
-
|
|
145
|
-
| Command | Description |
|
|
146
|
-
|---------|-------------|
|
|
147
|
-
| `/unipi:notify-settings` | Configure notification platforms |
|
|
148
|
-
| `/unipi:notify-set-gotify` | Set Gotify server config |
|
|
149
|
-
| `/unipi:notify-set-tg` | Set Telegram bot config |
|
|
150
|
-
| `/unipi:notify-set-ntfy` | Set ntfy topic and server |
|
|
151
|
-
| `/unipi:notify-recap-model` | Set model for notification recaps |
|
|
152
|
-
| `/unipi:notify-test` | Test notification delivery |
|
|
153
|
-
|
|
154
|
-
### Utility (`/unipi:*`)
|
|
155
|
-
|
|
156
|
-
| Command | Description |
|
|
157
|
-
|---------|-------------|
|
|
158
|
-
| `/unipi:env` | Show environment info |
|
|
159
|
-
| `/unipi:doctor` | Run diagnostics |
|
|
160
|
-
| `/unipi:status` | Show module status |
|
|
161
|
-
| `/unipi:cleanup` | Clean stale temp files |
|
|
162
|
-
| `/unipi:reload` | Reload extensions |
|
|
163
|
-
| `/unipi:name-badge` | Toggle session name badge overlay |
|
|
164
|
-
| `/unipi:badge-gen` | Generate session name via background agent |
|
|
165
|
-
| `/unipi:badge-toggle` | Configure badge settings |
|
|
166
|
-
|
|
167
|
-
### MCP (`/unipi:mcp-*`)
|
|
168
|
-
|
|
169
|
-
| Command | Description |
|
|
170
|
-
|---------|-------------|
|
|
171
|
-
| `/unipi:mcp-add` | Add MCP server |
|
|
172
|
-
| `/unipi:mcp-settings` | Configure MCP servers |
|
|
173
|
-
| `/unipi:mcp-sync` | Sync MCP tools |
|
|
174
|
-
| `/unipi:mcp-status` | Show MCP connection status |
|
|
175
|
-
| `/unipi:mcp-reload` | Reload MCP connections |
|
|
176
|
-
|
|
177
|
-
### Tools
|
|
178
|
-
|
|
179
|
-
| Tool | Package | Description |
|
|
180
|
-
|------|---------|-------------|
|
|
181
|
-
| `ralph_start` | ralph | Start a ralph loop |
|
|
182
|
-
| `ralph_done` | ralph | Signal iteration complete |
|
|
183
|
-
| `spawn_helper` | subagents | Spawn parallel sub-agent |
|
|
184
|
-
| `get_helper_result` | subagents | Retrieve background agent result |
|
|
185
|
-
| `memory_store` | memory | Store/update memory |
|
|
186
|
-
| `memory_search` | memory | Search project memories |
|
|
187
|
-
| `memory_delete` | memory | Delete memory by ID |
|
|
188
|
-
| `memory_list` | memory | List project memories |
|
|
189
|
-
| `global_memory_search` | memory | Search global memories |
|
|
190
|
-
| `global_memory_list` | memory | List global memories |
|
|
191
|
-
| `web_search` | web-api | Search the web via provider |
|
|
192
|
-
| `web_read` | web-api | Extract content from URL |
|
|
193
|
-
| `web_llm_summarize` | web-api | Summarize web content via LLM |
|
|
194
|
-
| `notify_user` | notify | Send cross-platform notifications |
|
|
195
|
-
| `ask_user` | ask-user | Structured user input with options |
|
|
196
|
-
| `compact` | compactor | Compact session context |
|
|
197
|
-
| `vcc_recall` | compactor | Recall from compacted sessions |
|
|
198
|
-
| `ctx_execute` | compactor | Execute with context management |
|
|
199
|
-
| `ctx_batch_execute` | compactor | Batch execute with rollback |
|
|
200
|
-
| `ctx_index` | compactor | Index context for search |
|
|
201
|
-
| `ctx_search` | compactor | Search indexed context |
|
|
202
|
-
| `ctx_fetch_and_index` | compactor | Fetch and index web content |
|
|
203
|
-
| `ctx_stats` | compactor | Show compaction statistics |
|
|
204
|
-
| `ctx_doctor` | compactor | Diagnose compactor issues |
|
|
205
|
-
| `set_session_name` | utility | Set session name for badge display |
|
|
206
|
-
| `ctx_batch` | utility | Atomic batch execution with rollback |
|
|
207
|
-
| `ctx_env` | utility | Show environment information |
|
|
12
|
+
**Workflow** — 20 commands that take ideas to shipped code. Brainstorm, plan, execute in worktrees, review, consolidate. The agent follows skill files step by step.
|
|
208
13
|
|
|
209
|
-
|
|
14
|
+
**Ralph** — Long-running loops that persist across sessions. Start a task, iterate through checklist items, resume after crashes. Progress tracked, state saved.
|
|
210
15
|
|
|
211
|
-
|
|
212
|
-
|---------|-------------|
|
|
213
|
-
| `/unipi:milestone-onboard` | Create MILESTONES.md from existing workflow docs |
|
|
214
|
-
| `/unipi:milestone-update` | Sync MILESTONES.md with completed work |
|
|
16
|
+
**Memory** — SQLite + vector search stores facts, preferences, and decisions. Project-scoped and global. The agent remembers what you told it last week.
|
|
215
17
|
|
|
216
|
-
|
|
18
|
+
**Compactor** — Zero-LLM context engine. 6-stage pipeline hits 95%+ token reduction at zero API cost. Session continuity, sandbox execution, FTS5 search.
|
|
217
19
|
|
|
218
|
-
|
|
219
|
-
|---------|-------------|
|
|
220
|
-
| `/unipi:kanboard` | Toggle kanboard visualization server |
|
|
221
|
-
| `/unipi:kanboard-doctor` | Diagnose and fix kanboard parser issues |
|
|
20
|
+
**Subagents** — Parallel execution with file locking. Spawn background agents to research, fix, or build while the main agent keeps going.
|
|
222
21
|
|
|
223
|
-
|
|
22
|
+
**Web API** — Web search, page reading, content summarization. Smart-fetch engine with browser-grade TLS fingerprinting — free, no API key. Paid providers as fallbacks.
|
|
224
23
|
|
|
225
|
-
|
|
226
|
-
|---------|-------------|
|
|
227
|
-
| `/unipi:footer` | Toggle footer or switch preset |
|
|
228
|
-
| `/unipi:footer-settings` | Open footer settings — toggle groups and segments |
|
|
24
|
+
**MCP** — Browse 7,800+ MCP servers, add them interactively. Tools from servers register automatically as Pi tools.
|
|
229
25
|
|
|
230
|
-
|
|
26
|
+
**Notify** — Push notifications to native OS, Gotify, Telegram, or ntfy. Per-event platform routing. Configure once, get alerts everywhere.
|
|
231
27
|
|
|
232
|
-
|
|
28
|
+
**Footer** — Persistent status bar showing live stats from every package. Responsive layout, presets, per-segment toggling.
|
|
233
29
|
|
|
234
|
-
**
|
|
30
|
+
**BTW** — Side conversations that run in parallel. Ask questions without interrupting the main agent.
|
|
235
31
|
|
|
236
|
-
**
|
|
32
|
+
**Ask User** — Structured input for decision gates. Single-select, multi-select, freeform. The agent asks instead of guessing.
|
|
237
33
|
|
|
238
|
-
**
|
|
34
|
+
**Milestone** — Track project goals across workflow cycles. MILESTONES.md stays in sync with specs, plans, and completed work.
|
|
239
35
|
|
|
240
|
-
**
|
|
36
|
+
**Kanboard** — Web UI and TUI overlay for kanban boards. Parses all workflow documents into cards with progress indicators.
|
|
241
37
|
|
|
242
|
-
**Info Screen**
|
|
38
|
+
**Info Screen** — Dashboard overlay showing module status, tools, and custom data groups.
|
|
243
39
|
|
|
244
|
-
**
|
|
40
|
+
**Utility** — Environment info, diagnostics, cleanup, name badge, and Shiki-powered diff rendering.
|
|
245
41
|
|
|
246
|
-
**
|
|
42
|
+
**Updater** — Checks npm for new versions on session start. Changelog browser and readme browser in TUI overlays.
|
|
247
43
|
|
|
248
|
-
**
|
|
44
|
+
**Input Shortcuts** — Keyboard shortcuts via vim-style chord overlay. Stash/restore, undo/redo, clipboard, thinking toggle.
|
|
249
45
|
|
|
250
|
-
|
|
46
|
+
## Architecture
|
|
251
47
|
|
|
252
|
-
|
|
48
|
+
Packages discover each other through events, not direct imports. Core defines the event types and constants. Every package emits `MODULE_READY` on load and subscribes to events it cares about.
|
|
253
49
|
|
|
254
|
-
|
|
50
|
+
```
|
|
51
|
+
┌─────────────────────────────────────────────────────────┐
|
|
52
|
+
│ Core │
|
|
53
|
+
│ Events, Constants, Utilities │
|
|
54
|
+
└───────────────────────┬─────────────────────────────────┘
|
|
55
|
+
│
|
|
56
|
+
┌───────────────────┼───────────────────┐
|
|
57
|
+
│ │ │
|
|
58
|
+
▼ ▼ ▼
|
|
59
|
+
┌─────────┐ ┌──────────┐ ┌──────────┐
|
|
60
|
+
│ Workflow │ │ Compactor│ │ Memory │
|
|
61
|
+
│ Skills │ │ Engine │ │ Store │
|
|
62
|
+
└────┬─────┘ └────┬─────┘ └────┬─────┘
|
|
63
|
+
│ │ │
|
|
64
|
+
└──────────────────┼──────────────────┘
|
|
65
|
+
▼
|
|
66
|
+
┌──────────┐
|
|
67
|
+
│ Footer │ ← Subscribes to all events
|
|
68
|
+
└──────────┘
|
|
69
|
+
```
|
|
255
70
|
|
|
256
|
-
|
|
71
|
+
Coexists triggers enhance behavior when packages are installed together. Workflow skills detect subagents and inject parallel strategies. All skills get MCP tools when MCP is installed. Web-api adds web research to investigation skills. Each package works standalone.
|
|
72
|
+
|
|
73
|
+
## Commands (Brief)
|
|
74
|
+
|
|
75
|
+
| Category | Prefix | Examples |
|
|
76
|
+
|----------|--------|----------|
|
|
77
|
+
| Workflow | `/unipi:` | brainstorm, plan, work, review-work, consolidate, quick-work, debug, fix |
|
|
78
|
+
| Ralph | `/unipi:ralph` | start, stop, resume, status |
|
|
79
|
+
| Memory | `/unipi:memory-` | process, search, consolidate, forget |
|
|
80
|
+
| Compactor | `/unipi:compact` | compact, stats, settings, preset |
|
|
81
|
+
| Notify | `/unipi:notify-` | settings, test, set-tg, set-ntfy |
|
|
82
|
+
| MCP | `/unipi:mcp-` | add, settings, sync, status |
|
|
83
|
+
| Web | `/unipi:web-` | settings, cache-clear |
|
|
84
|
+
| BTW | `/btw` | question, new, tangent, inject, summarize |
|
|
85
|
+
| Utility | `/unipi:` | env, doctor, status, cleanup, name-badge |
|
|
86
|
+
| Milestone | `/unipi:milestone-` | onboard, update |
|
|
87
|
+
| Kanboard | `/unipi:kanboard` | toggle, doctor |
|
|
88
|
+
| Footer | `/unipi:footer` | toggle, settings |
|
|
89
|
+
| Updater | `/unipi:` | readme, changelog, updater-settings |
|
|
90
|
+
| Info | `/unipi:info` | dashboard, settings |
|
|
91
|
+
|
|
92
|
+
## Agent Tools (Brief)
|
|
93
|
+
|
|
94
|
+
| Tool | Package | What It Does |
|
|
95
|
+
|------|---------|--------------|
|
|
96
|
+
| `ralph_start` / `ralph_done` | ralph | Loop control |
|
|
97
|
+
| `spawn_helper` / `get_helper_result` | subagents | Parallel agents |
|
|
98
|
+
| `memory_store` / `memory_search` / `memory_delete` | memory | Memory CRUD |
|
|
99
|
+
| `web_search` / `web_read` / `web_llm_summarize` | web-api | Web research |
|
|
100
|
+
| `notify_user` | notify | Push notifications |
|
|
101
|
+
| `ask_user` | ask-user | User input |
|
|
102
|
+
| `compact` / `session_recall` / `sandbox` | compactor | Context management |
|
|
103
|
+
| `ctx_batch` / `ctx_env` | utility | Batch execution, env info |
|
|
257
104
|
|
|
258
|
-
|
|
105
|
+
## Development
|
|
259
106
|
|
|
260
|
-
|
|
107
|
+
```bash
|
|
108
|
+
git clone https://github.com/Neuron-Mr-White/unipi.git
|
|
109
|
+
cd unipi
|
|
110
|
+
npm install
|
|
111
|
+
npm run typecheck
|
|
112
|
+
```
|
|
261
113
|
|
|
262
|
-
|
|
114
|
+
### Project Structure
|
|
263
115
|
|
|
264
|
-
|
|
116
|
+
```
|
|
117
|
+
unipi/
|
|
118
|
+
├── packages/
|
|
119
|
+
│ ├── core/ # Shared constants, events, utilities
|
|
120
|
+
│ ├── workflow/ # 20 skill-based commands
|
|
121
|
+
│ ├── ralph/ # Iterative loops
|
|
122
|
+
│ ├── memory/ # SQLite + vector search
|
|
123
|
+
│ ├── compactor/ # Context engine
|
|
124
|
+
│ ├── subagents/ # Parallel execution
|
|
125
|
+
│ ├── web-api/ # Web research
|
|
126
|
+
│ ├── mcp/ # MCP server integration
|
|
127
|
+
│ ├── notify/ # Push notifications
|
|
128
|
+
│ ├── footer/ # Status bar
|
|
129
|
+
│ ├── btw/ # Side conversations
|
|
130
|
+
│ ├── ask-user/ # Structured input
|
|
131
|
+
│ ├── milestone/ # Goal tracking
|
|
132
|
+
│ ├── kanboard/ # Kanban visualization
|
|
133
|
+
│ ├── info-screen/ # Dashboard overlay
|
|
134
|
+
│ ├── utility/ # Diagnostics, diff rendering
|
|
135
|
+
│ ├── updater/ # Auto-update, browsers
|
|
136
|
+
│ ├── input-shortcuts/ # Keyboard shortcuts
|
|
137
|
+
│ └── unipi/ # Umbrella package
|
|
138
|
+
├── .unipi/ # Runtime data (specs, plans, worktrees)
|
|
139
|
+
└── CHANGELOG.md
|
|
140
|
+
```
|
|
265
141
|
|
|
266
|
-
|
|
142
|
+
### Adding a Package
|
|
267
143
|
|
|
268
|
-
|
|
144
|
+
1. Create `packages/your-package/` with `package.json` and `index.ts`
|
|
145
|
+
2. Depend on `@pi-unipi/core` for constants and events
|
|
146
|
+
3. Emit `MODULE_READY` on load
|
|
147
|
+
4. Add to umbrella package dependencies and imports
|
|
148
|
+
5. Run `npm run typecheck`
|
|
269
149
|
|
|
270
|
-
|
|
150
|
+
### Running Tests
|
|
271
151
|
|
|
272
152
|
```bash
|
|
273
|
-
|
|
274
|
-
cd unipi
|
|
275
|
-
npm install
|
|
276
|
-
npm run typecheck
|
|
153
|
+
npm test
|
|
277
154
|
```
|
|
278
155
|
|
|
156
|
+
## Contributing
|
|
157
|
+
|
|
158
|
+
1. Fork the repo
|
|
159
|
+
2. Create a feature branch
|
|
160
|
+
3. Make your changes
|
|
161
|
+
4. Run `npm run typecheck` and `npm test`
|
|
162
|
+
5. Submit a pull request
|
|
163
|
+
|
|
164
|
+
Keep packages focused. One package, one responsibility. Use events for cross-package communication — no direct imports between packages.
|
|
165
|
+
|
|
279
166
|
## License
|
|
280
167
|
|
|
281
168
|
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-unipi/unipi",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"description": "All-in-one extension suite for Pi coding agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,9 +28,11 @@
|
|
|
28
28
|
"publish:all": "npm publish --workspaces --access public"
|
|
29
29
|
},
|
|
30
30
|
"files": [
|
|
31
|
-
"packages
|
|
31
|
+
"packages/*/*.ts",
|
|
32
32
|
"packages/*/src/**/*.ts",
|
|
33
33
|
"packages/*/extensions/**/*.ts",
|
|
34
|
+
"packages/*/platforms/*",
|
|
35
|
+
"packages/*/tui/*",
|
|
34
36
|
"packages/*/skills/**/*",
|
|
35
37
|
"packages/*/README.md"
|
|
36
38
|
],
|
|
@@ -51,7 +53,9 @@
|
|
|
51
53
|
"node_modules/@pi-unipi/milestone/index.ts",
|
|
52
54
|
"node_modules/@pi-unipi/kanboard/index.ts",
|
|
53
55
|
"node_modules/@pi-unipi/command-enchantment/src/index.ts",
|
|
54
|
-
"node_modules/@pi-unipi/footer/index.ts"
|
|
56
|
+
"node_modules/@pi-unipi/footer/src/index.ts",
|
|
57
|
+
"node_modules/@pi-unipi/updater/src/index.ts",
|
|
58
|
+
"node_modules/@pi-unipi/input-shortcuts/src/index.ts"
|
|
55
59
|
],
|
|
56
60
|
"skills": [
|
|
57
61
|
"node_modules/@pi-unipi/workflow/skills",
|
|
@@ -64,7 +68,8 @@
|
|
|
64
68
|
"node_modules/@pi-unipi/compactor/skills",
|
|
65
69
|
"node_modules/@pi-unipi/notify/skills",
|
|
66
70
|
"node_modules/@pi-unipi/milestone/skills",
|
|
67
|
-
"node_modules/@pi-unipi/kanboard/skills"
|
|
71
|
+
"node_modules/@pi-unipi/kanboard/skills",
|
|
72
|
+
"node_modules/@pi-unipi/updater/skills"
|
|
68
73
|
]
|
|
69
74
|
},
|
|
70
75
|
"peerDependencies": {
|
|
@@ -90,7 +95,9 @@
|
|
|
90
95
|
"@pi-unipi/kanboard": "*",
|
|
91
96
|
"@pi-unipi/web-api": "*",
|
|
92
97
|
"@pi-unipi/workflow": "*",
|
|
93
|
-
"@pi-unipi/footer": "*"
|
|
98
|
+
"@pi-unipi/footer": "*",
|
|
99
|
+
"@pi-unipi/updater": "*",
|
|
100
|
+
"@pi-unipi/input-shortcuts": "*"
|
|
94
101
|
},
|
|
95
102
|
"devDependencies": {
|
|
96
103
|
"@types/node": "^25.6.0",
|
|
@@ -1,30 +1,24 @@
|
|
|
1
1
|
# @pi-unipi/ask-user
|
|
2
2
|
|
|
3
|
-
Structured user input
|
|
3
|
+
Structured user input for decision gates. When the agent needs you to pick between options — which database, which approach, which files to change — it calls `ask_user` instead of guessing.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Three input modes: single-select (pick one), multi-select (toggle several), freeform (type your own). The agent presents the question, you answer, it continues.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Commands
|
|
8
8
|
|
|
9
|
-
Ask
|
|
9
|
+
Ask-user has no user commands. It's an agent tool package — the agent calls it when it needs input.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- **Multi-select** — Toggle multiple options, then submit
|
|
13
|
-
- **Freeform** — Type a custom answer
|
|
11
|
+
## Special Triggers
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
All workflow skills detect ask-user and use it for decision gates. Instead of the agent deciding on its own, it presents options and waits for your input. This happens naturally during brainstorm, plan, work, and other skills when the agent faces ambiguity.
|
|
16
14
|
|
|
17
|
-
The
|
|
15
|
+
The bundled skill guides the agent to use `ask_user` for high-stakes decisions — architecture choices, database selection, naming decisions, anything with lasting impact.
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
{ label: "SQLite", description: "Simple, serverless" },
|
|
25
|
-
],
|
|
26
|
-
})
|
|
27
|
-
```
|
|
17
|
+
## Agent Tool
|
|
18
|
+
|
|
19
|
+
| Tool | Description |
|
|
20
|
+
|------|-------------|
|
|
21
|
+
| `ask_user` | Structured user input with options |
|
|
28
22
|
|
|
29
23
|
### Parameters
|
|
30
24
|
|
|
@@ -37,12 +31,24 @@ ask_user({
|
|
|
37
31
|
| `allowFreeform` | boolean? | true | Allow freeform text input |
|
|
38
32
|
| `timeout` | number? | — | Auto-dismiss after N ms |
|
|
39
33
|
|
|
34
|
+
### Example
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
ask_user({
|
|
38
|
+
question: "Which database should we use?",
|
|
39
|
+
options: [
|
|
40
|
+
{ label: "PostgreSQL", description: "Reliable, feature-rich" },
|
|
41
|
+
{ label: "SQLite", description: "Simple, serverless" },
|
|
42
|
+
],
|
|
43
|
+
})
|
|
44
|
+
```
|
|
45
|
+
|
|
40
46
|
### Keyboard Controls
|
|
41
47
|
|
|
42
48
|
| Mode | Keys |
|
|
43
49
|
|------|------|
|
|
44
|
-
| Single-select |
|
|
45
|
-
| Multi-select |
|
|
50
|
+
| Single-select | Up/Down navigate, Enter select, Esc cancel |
|
|
51
|
+
| Multi-select | Up/Down navigate, Space toggle, Enter submit, Esc cancel |
|
|
46
52
|
| Freeform | Type text, Enter submit, Esc back |
|
|
47
53
|
|
|
48
54
|
### TUI Display
|
|
@@ -57,7 +63,7 @@ ask_user({
|
|
|
57
63
|
Option C
|
|
58
64
|
Type something...
|
|
59
65
|
|
|
60
|
-
|
|
66
|
+
Up/Down navigate, Enter select, Esc cancel
|
|
61
67
|
─────────────────────────────
|
|
62
68
|
```
|
|
63
69
|
|
|
@@ -66,34 +72,19 @@ ask_user({
|
|
|
66
72
|
─────────────────────────────
|
|
67
73
|
Which features to enable?
|
|
68
74
|
─────────────────────────────
|
|
69
|
-
> [
|
|
75
|
+
> [x] Logging
|
|
70
76
|
[ ] Metrics
|
|
71
|
-
[
|
|
77
|
+
[x] Tracing
|
|
72
78
|
[ ] Type something...
|
|
73
79
|
|
|
74
|
-
|
|
80
|
+
Up/Down navigate, Space toggle, Enter submit, Esc cancel
|
|
75
81
|
─────────────────────────────
|
|
76
82
|
```
|
|
77
83
|
|
|
78
|
-
##
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
pi install npm:@pi-unipi/ask-user
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
Or install the full Unipi suite:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
pi install npm:@pi-unipi/unipi
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## Bundled Skill
|
|
84
|
+
## Configurables
|
|
91
85
|
|
|
92
|
-
|
|
86
|
+
Ask-user has no configuration. Input mode is determined by the `allowMultiple` and `allowFreeform` parameters the agent passes.
|
|
93
87
|
|
|
94
|
-
##
|
|
88
|
+
## License
|
|
95
89
|
|
|
96
|
-
|
|
97
|
-
- `@mariozechner/pi-coding-agent` — Pi extension API
|
|
98
|
-
- `@mariozechner/pi-tui` — TUI components
|
|
99
|
-
- `@sinclair/typebox` — Schema validation
|
|
90
|
+
MIT
|