hotmilk 0.1.14 → 0.1.15
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/AGENTS.md +9 -8
- package/README.md +121 -82
- package/agents/assistant.md +1 -1
- package/agents/coach.md +24 -3
- package/agents/designer.md +1 -1
- package/hotmilk.json +5 -0
- package/package.json +39 -23
- package/skills/pioneer/SKILL.md +73 -59
- package/skills/pioneer/references/autoresearch-routing.md +2 -0
- package/skills/pioneer/references/observational-memory-routing.md +90 -0
- package/skills/pioneer/references/plannotator-routing.md +2 -0
- package/skills/pioneer/references/shazam-routing.md +58 -0
- package/src/bootstrap/btw.ts +49 -0
- package/src/bootstrap/context-stack.ts +71 -14
- package/src/bootstrap/dashboard-settings.ts +16 -2
- package/src/bootstrap/dashboard.ts +85 -10
- package/src/bootstrap/defaults.ts +26 -0
- package/src/bootstrap/extensions.ts +3 -0
- package/src/bootstrap/global-extension-sources.ts +33 -3
- package/src/bootstrap/graph.ts +12 -0
- package/src/bootstrap/project-trust.ts +14 -0
- package/src/bootstrap/resolve-bundled.ts +28 -4
- package/src/bootstrap/session.ts +33 -0
- package/src/bootstrap/subagents-doctor.ts +12 -0
- package/src/config/bundled-extensions.ts +30 -0
- package/src/config/bundled-package-registry.ts +3 -0
- package/src/config/hotmilk.ts +54 -1
- package/src/config/mcp.ts +45 -12
- package/src/config/resolve.ts +5 -0
- package/src/config/runtime.ts +2 -0
- package/src/controller/input.ts +15 -0
- package/src/controller/mode.ts +32 -0
- package/src/index.ts +1 -0
- package/src/ui/footer.ts +63 -1
- package/src/ui/github-user.ts +52 -4
- package/src/ui/session-logo.ts +31 -3
package/AGENTS.md
CHANGED
|
@@ -25,14 +25,14 @@ Requires **Node.js 22+**. Targets **Pi 0.80** (`@earendil-works/pi-coding-agent`
|
|
|
25
25
|
|
|
26
26
|
## Code layout
|
|
27
27
|
|
|
28
|
-
| Path | Role
|
|
29
|
-
| -------------------------------- |
|
|
30
|
-
| `src/index.ts` | Extension entry: runtime, register handlers
|
|
31
|
-
| `src/config/` | `hotmilk.json` I/O, resolve, `createHotmilkRuntime()`
|
|
32
|
-
| `src/bootstrap/` | Bundled extension registration, session, graph, defaults
|
|
33
|
-
| `src/controller/` | `/mode`, `/stop`, `/interrupt`
|
|
34
|
-
| `src/ui/` | Footer, session logo
|
|
35
|
-
| `prompts/`, `skills/`, `themes/` | Shipped Pi assets (`pi.prompts`, `pi.skills`, `pi.themes`); first-party skills
|
|
28
|
+
| Path | Role |
|
|
29
|
+
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
|
30
|
+
| `src/index.ts` | Extension entry: runtime, register handlers |
|
|
31
|
+
| `src/config/` | `hotmilk.json` I/O, resolve, `createHotmilkRuntime()` |
|
|
32
|
+
| `src/bootstrap/` | Bundled extension registration, session, graph, defaults |
|
|
33
|
+
| `src/controller/` | `/mode`, `/stop`, `/interrupt` |
|
|
34
|
+
| `src/ui/` | Footer, session logo |
|
|
35
|
+
| `prompts/`, `skills/`, `themes/` | Shipped Pi assets (`pi.prompts`, `pi.skills`, `pi.themes`); first-party skills under `./skills/` (`pioneer`, `update-docs`, …) |
|
|
36
36
|
|
|
37
37
|
## Agent behavior
|
|
38
38
|
|
|
@@ -42,6 +42,7 @@ Merge with your global agent guidelines when present. For this repo:
|
|
|
42
42
|
2. **Simplicity** — No speculative features; keep lazy loading (`extensions.ts`) intact.
|
|
43
43
|
3. **Verify** — Run `bun test` (and `bun run lint` when changing TS or config).
|
|
44
44
|
4. **Docs** — User-facing changes in `README.md`; update `hotmilk.json` when changing defaults (code reads it as the template).
|
|
45
|
+
5. **Workflow** — Plan/memory/optimize routing: [README § Workflow routing](README.md#workflow-routing) and [`skills/pioneer/SKILL.md`](skills/pioneer/SKILL.md).
|
|
45
46
|
|
|
46
47
|
## More
|
|
47
48
|
|
package/README.md
CHANGED
|
@@ -4,14 +4,21 @@
|
|
|
4
4
|
|
|
5
5
|
Use it when you want a practical engineering workstation without hand-picking a dozen `pi-*` packages and wiring `settings.json` yourself.
|
|
6
6
|
|
|
7
|
+
## Contents
|
|
8
|
+
|
|
9
|
+
- [What you get](#what-you-get)
|
|
10
|
+
- [Quick start](#quick-start)
|
|
11
|
+
- [Configuration](#configuration) — toggles, `/mode` groups, [workflow routing](#workflow-routing)
|
|
12
|
+
- [Development](#development)
|
|
13
|
+
|
|
7
14
|
## What you get
|
|
8
15
|
|
|
9
16
|
| Layer | Packages / assets |
|
|
10
17
|
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
-
| **Orchestration** | [gentle-pi](https://www.npmjs.com/package/gentle-pi)
|
|
12
|
-
| **Context** | [context-mode](https://www.npmjs.com/package/context-mode)
|
|
18
|
+
| **Orchestration** | [gentle-pi](https://www.npmjs.com/package/gentle-pi) **^0.10.x** (el Gentleman, SDD/OpenSpec sync, skill registry, `/gentle-ai:doctor`) |
|
|
19
|
+
| **Context** | [context-mode](https://www.npmjs.com/package/context-mode), [pi-observational-memory](https://www.npmjs.com/package/pi-observational-memory) (compaction continuity, default off) |
|
|
13
20
|
| **Codebase graph** | [graphify-pi](https://www.npmjs.com/package/graphify-pi) |
|
|
14
|
-
| **Subagents**
|
|
21
|
+
| **Subagents / actors** | [pi-subagents](https://www.npmjs.com/package/pi-subagents), [pi-ask-user](https://www.npmjs.com/package/pi-ask-user), [pi-actors](https://www.npmjs.com/package/@llblab/pi-actors) (off by default) |
|
|
15
22
|
| **Goals & docs** | [pi-goal](https://www.npmjs.com/package/pi-goal), [pi-docparser](https://www.npmjs.com/package/pi-docparser) |
|
|
16
23
|
| **File-based planning** | [@tomxprime/planning-with-files](https://www.npmjs.com/package/@tomxprime/planning-with-files), [@plannotator/pi-extension](https://www.npmjs.com/package/@plannotator/pi-extension) (browser plan approval) |
|
|
17
24
|
| **Integrations** | [pi-mcp-adapter](https://www.npmjs.com/package/pi-mcp-adapter), [pi-btw](https://www.npmjs.com/package/pi-btw) (side channel — see below), [@haispeed/pi-obsidian](https://www.npmjs.com/package/@haispeed/pi-obsidian) |
|
|
@@ -93,19 +100,7 @@ On startup, hotmilk scans only **global** Pi settings for bundled-extension dedu
|
|
|
93
100
|
|
|
94
101
|
Upstream packages add their own commands (gentle-pi `/gentle-ai:status`, `/gentle-ai:doctor`, SDD chains, graphify, context-mode, planning-with-files `/plan-status`, plannotator `/plannotator`, and so on).
|
|
95
102
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
Invoke when you want Manus-style on-disk planning:
|
|
99
|
-
|
|
100
|
-
```text
|
|
101
|
-
/skill:planning-with-files
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Or ask Pi to use the planning-with-files skill. The extension maintains `task_plan.md`, `findings.md`, and `progress.md`. Optional: `PWF_MODE=cache-safe` or `planningWithFiles.mode` in settings (see upstream README).
|
|
105
|
-
|
|
106
|
-
### Plannotator (plan approval)
|
|
107
|
-
|
|
108
|
-
Enable `extensions.plannotator` in `/mode`, then `/reload`. Start plan mode with `/plannotator plans/<name>.md` or `pi --plan plans/<name>.md`. The agent drafts a checklist plan; you approve or annotate in the browser before execution. See upstream README for `plannotator.json` phase tuning. Default toggle is **off** (~37MB unpacked UI).
|
|
103
|
+
For **which plan, memory, or optimize path to use**, see [Workflow routing](#workflow-routing) (canonical matrix) and the bundled [`pioneer`](skills/pioneer/SKILL.md) skill.
|
|
109
104
|
|
|
110
105
|
## Configuration
|
|
111
106
|
|
|
@@ -120,13 +115,16 @@ Enable `extensions.plannotator` in `/mode`, then `/reload`. Start plan mode with
|
|
|
120
115
|
"context-mode": true,
|
|
121
116
|
"ask-user": true,
|
|
122
117
|
"graphify": true,
|
|
118
|
+
"shazam": false,
|
|
123
119
|
"subagents": true,
|
|
120
|
+
"pi-actors": false,
|
|
124
121
|
"goal": true,
|
|
125
122
|
"docparser": true,
|
|
126
123
|
"obsidian": true,
|
|
127
124
|
"btw": true,
|
|
128
125
|
"simplify": true,
|
|
129
126
|
"rtk-optimizer": false,
|
|
127
|
+
"observational-memory": false,
|
|
130
128
|
"mcp-adapter": false,
|
|
131
129
|
"planning-with-files": false,
|
|
132
130
|
"plannotator": false,
|
|
@@ -144,7 +142,6 @@ Enable `extensions.plannotator` in `/mode`, then `/reload`. Start plan mode with
|
|
|
144
142
|
"autoSuggestUpdate": true
|
|
145
143
|
},
|
|
146
144
|
"defaults": {
|
|
147
|
-
"language": "ja",
|
|
148
145
|
"persona": "gentleman"
|
|
149
146
|
},
|
|
150
147
|
"mcp": {
|
|
@@ -157,30 +154,80 @@ Enable `extensions.plannotator` in `/mode`, then `/reload`. Start plan mode with
|
|
|
157
154
|
}
|
|
158
155
|
```
|
|
159
156
|
|
|
160
|
-
| Key / area | Behavior
|
|
161
|
-
| --------------------------------- |
|
|
162
|
-
| `extensions.*` | Set to `false` to skip registering that bundled extension
|
|
163
|
-
| `extensions.gentle-ai` | Default `true`. gentle-pi **0.
|
|
164
|
-
| `extensions.subagents` | Default `true`. Imports pi-subagents **0.28+** (~10s): acceptance gates, `timeoutMs`, resource limits. Use with `gentle-ai` for delegation; set `false` for faster startup without Task tools
|
|
165
|
-
| `extensions.btw` | Default `true`. Side conversation via `/btw` while main runs. **Delegate implementation to subagents**; use BTW for quick human questions. See [pi-btw coexistence](#pi-btw-with-subagents-default-on)
|
|
166
|
-
| `extensions.context-mode` | Default `true`. Prefer `ctx_*` for large outputs (see project context-window rules)
|
|
167
|
-
| `extensions.
|
|
168
|
-
| `extensions.
|
|
169
|
-
| `extensions.
|
|
170
|
-
| `extensions.
|
|
171
|
-
| `extensions.
|
|
172
|
-
|
|
|
173
|
-
| `
|
|
174
|
-
|
|
|
175
|
-
| `
|
|
176
|
-
| `
|
|
177
|
-
| `
|
|
178
|
-
| `
|
|
179
|
-
| `
|
|
180
|
-
| `
|
|
157
|
+
| Key / area | Behavior |
|
|
158
|
+
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
159
|
+
| `extensions.*` | Set to `false` to skip registering that bundled extension |
|
|
160
|
+
| `extensions.gentle-ai` | Default `true`. gentle-pi **0.10.x** (bundled `^0.10.2`): orchestration, lazy SDD preflight, OpenSpec sync/archive agents, `/gentle-ai:doctor` / `:status`. hotmilk keeps **startup-banner off** (figlet header instead) |
|
|
161
|
+
| `extensions.subagents` | Default `true`. Imports pi-subagents **0.28+** (~10s): acceptance gates, `timeoutMs`, resource limits. Use with `gentle-ai` for delegation; set `false` for faster startup without Task tools |
|
|
162
|
+
| `extensions.btw` | Default `true`. Side conversation via `/btw` while main runs. **Delegate implementation to subagents**; use BTW for quick human questions. See [pi-btw coexistence](#pi-btw-with-subagents-default-on) |
|
|
163
|
+
| `extensions.context-mode` | Default `true`. Prefer `ctx_*` for large outputs (see project context-window rules) |
|
|
164
|
+
| `extensions.observational-memory` | Default `false`. Compaction continuity; pairs with `context-mode`. See [Workflow routing](#workflow-routing) |
|
|
165
|
+
| `extensions.shazam` | Default `false`. Tree-sitter + LSP execute guards (`shazam_impact`, `shazam_verify`); complements graphify — see [Workflow routing](#workflow-routing) |
|
|
166
|
+
| `extensions.rtk-optimizer` | Default `false`. Bash/read/grep output compaction; enable with `context-mode` for leftover shell output. Install [`rtk` CLI](https://github.com/rtk-ai/rtk) for command rewrite (`/rtk verify`) |
|
|
167
|
+
| `extensions.planning-with-files` | Default `false`. On-disk planning — see [Workflow routing](#workflow-routing) |
|
|
168
|
+
| `extensions.plannotator` | Default `false`. Browser plan approval — see [Workflow routing](#workflow-routing) |
|
|
169
|
+
| `extensions.autoresearch` | Default `false`. Optimize loop — see [Workflow routing](#workflow-routing) |
|
|
170
|
+
| `extensions.goal` … `mcp-adapter` | Integration / perf extensions (formerly always loaded via `pi.extensions`; now toggled like other bundled deps) |
|
|
171
|
+
| Enabled extensions | Loaded **in parallel** on session start (faster than sequential import when many toggles are on) |
|
|
172
|
+
| `graph.warnOnStale` | Notify when `graphify-out/needs_update` exists |
|
|
173
|
+
| `graph.autoSuggestUpdate` | Append `graphify update .` to that notification |
|
|
174
|
+
| `defaults.persona` | Seeds `.pi/gentle-ai/persona.json` when missing (`gentleman` \| `neutral`) |
|
|
175
|
+
| `defaults.language` | Appends a project language hint to the system prompt each turn |
|
|
176
|
+
| `mcp.seedOnStart` | Copy `mcp.json` template into `~/.pi/agent/mcp.json` when missing (empty template; for pi-mcp-adapter) |
|
|
177
|
+
| `projectTrust.mode` | Pi project trust: `delegate` (default), `prompt`, `always`, or `never` |
|
|
178
|
+
| `projectTrust.remember` | When `mode` is `always` or `never`, persist the decision in Pi `trust.json` |
|
|
179
|
+
| `extensions.mcp-adapter` | Default `false`. Enable only when you want MCP servers from `~/.pi/agent/mcp.json` (do not duplicate context-mode) |
|
|
181
180
|
|
|
182
181
|
**MCP (default):** `context-mode` extension registers `ctx_*` via its built-in bridge (same module as [upstream `.pi/extensions/context-mode`](https://github.com/mksglu/context-mode/tree/main/.pi/extensions/context-mode), loaded from `build/adapters/pi/extension.js`). Hotmilk removes any `context-mode` server from `~/.pi/agent/mcp.json` when the extension is on. Enable `mcp-adapter` only for **other** MCP servers—not a second context-mode entry.
|
|
183
182
|
|
|
183
|
+
### `/mode` groups
|
|
184
|
+
|
|
185
|
+
`/mode` sections follow `BUNDLED_EXTENSION_GROUP_ORDER` in `src/config/bundled-extensions.ts`:
|
|
186
|
+
|
|
187
|
+
| Group | Extensions (toggle ids) |
|
|
188
|
+
| ------------------------- | ------------------------------------------------------------------------------------------------------- |
|
|
189
|
+
| **Harness** | `skill-registry`, `sdd-init`, `gentle-ai` |
|
|
190
|
+
| **Agent tools** | `ask-user`, `graphify`, `shazam`, `subagents`, `pi-actors`, `agent-dashboard`, `web-access`, `pi-flows` |
|
|
191
|
+
| **Context & performance** | `context-mode`, `simplify`, `rtk-optimizer`, `observational-memory` |
|
|
192
|
+
| **Integrations** | `goal`, `docparser`, `obsidian`, `btw`, `mcp-adapter` |
|
|
193
|
+
| **Workflow** | `planning-with-files`, `plannotator`, `red-green` |
|
|
194
|
+
| **Output** | `caveman`, `kanagawa` |
|
|
195
|
+
| **Experiments** | `autoresearch`, `tetris` |
|
|
196
|
+
|
|
197
|
+
### Workflow routing
|
|
198
|
+
|
|
199
|
+
Pick **one plan authority per task**. Memory and optimize loops are **not** plan paths — they layer beside execution. Full tie-breakers and anti-patterns: bundled [`pioneer`](skills/pioneer/SKILL.md) skill.
|
|
200
|
+
|
|
201
|
+
**Plan paths** (enable toggle → `/reload` when default off):
|
|
202
|
+
|
|
203
|
+
| When | Toggle / command | Artifact | Pioneer reference |
|
|
204
|
+
| --------------------------------- | ---------------------------------------------------- | -------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
205
|
+
| Small, bounded fix | (none) — chat `Plan:` | chat only | [`chat-plan.md`](skills/pioneer/references/chat-plan.md) |
|
|
206
|
+
| Medium scope + browser approval | `plannotator` → `/plannotator plans/<name>.md` | `plans/*.md` | [`plannotator-routing.md`](skills/pioneer/references/plannotator-routing.md) |
|
|
207
|
+
| Heavy research, `/clear` recovery | `planning-with-files` → `/skill:planning-with-files` | `task_plan.md`, `findings.md`, `progress.md` | upstream PWF skill |
|
|
208
|
+
| Cross-cutting, spec, >400L review | `gentle-ai` → OpenSpec SDD | `openspec/changes/<change>/` | [`openspec-routing.md`](skills/pioneer/references/openspec-routing.md) |
|
|
209
|
+
|
|
210
|
+
**Memory layers** (supplementary — never replace plan/spec authority):
|
|
211
|
+
|
|
212
|
+
| Need | Prefer |
|
|
213
|
+
| ----------------------------- | ------------------------------------------------------------------------------- |
|
|
214
|
+
| Large logs, docs, test output | `context-mode` → `ctx_*` |
|
|
215
|
+
| Rationale across compactions | `observational-memory` (extra model cost; V3 needs clean session after upgrade) |
|
|
216
|
+
| User-readable plan files | `planning-with-files` |
|
|
217
|
+
| Execute-time impact / LSP | `shazam` (after graphify recon; not a graph replacement) |
|
|
218
|
+
|
|
219
|
+
Details: [`observational-memory-routing.md`](skills/pioneer/references/observational-memory-routing.md), [`shazam-routing.md`](skills/pioneer/references/shazam-routing.md).
|
|
220
|
+
|
|
221
|
+
**Optimize loops** (mutually exclusive with SDD/Plannotator on the same task):
|
|
222
|
+
|
|
223
|
+
| Need | Prefer |
|
|
224
|
+
| ------------------------------------------ | ------------------------------------------------------------ |
|
|
225
|
+
| Metric optimize (bench, bundle size, loss) | `autoresearch` → `/skill:autoresearch-create` |
|
|
226
|
+
| Feature delivery, spec, approval gates | `gentle-ai` SDD or `plannotator` — keep autoresearch **off** |
|
|
227
|
+
| Correctness-first TDD | `red-green` (`/tdd`) |
|
|
228
|
+
|
|
229
|
+
Stop active loops (`/autoresearch off`) before switching plan paths. Details: [`autoresearch-routing.md`](skills/pioneer/references/autoresearch-routing.md). Default shortcut `Ctrl+Shift+F` — override in `~/.pi/agent/extensions/pi-autoresearch.json`.
|
|
230
|
+
|
|
184
231
|
### Agents, skills, and scope
|
|
185
232
|
|
|
186
233
|
Pi resolves bundled assets at **user (global)**, **project**, and **package** layers. hotmilk ships package defaults; you override per machine or per repo.
|
|
@@ -284,46 +331,38 @@ Set `"btw": false` in `/mode` if you want delegation only with no side channel.
|
|
|
284
331
|
|
|
285
332
|
### Optional extensions (off by default)
|
|
286
333
|
|
|
287
|
-
Enable in `/mode` or set the key to `true` in `hotmilk.json`, then `/reload`.
|
|
288
|
-
|
|
289
|
-
| Toggle
|
|
290
|
-
|
|
|
291
|
-
| `
|
|
292
|
-
| `
|
|
293
|
-
| `
|
|
294
|
-
| `
|
|
295
|
-
| `
|
|
296
|
-
| `
|
|
297
|
-
| `
|
|
298
|
-
| `
|
|
299
|
-
| `
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
`
|
|
334
|
+
Enable in `/mode` or set the key to `true` in `hotmilk.json`, then `/reload`. Workflow-oriented toggles are summarized in [Workflow routing](#workflow-routing).
|
|
335
|
+
|
|
336
|
+
| Toggle | Package | Notes |
|
|
337
|
+
| ----------------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------- |
|
|
338
|
+
| `planning-with-files` | [@tomxprime/planning-with-files](https://www.npmjs.com/package/@tomxprime/planning-with-files) | On-disk planning; `/skill:planning-with-files` |
|
|
339
|
+
| `plannotator` | [@plannotator/pi-extension](https://www.npmjs.com/package/@plannotator/pi-extension) | `/plannotator`, `pi --plan`; ~37MB UI; `plannotator.json` |
|
|
340
|
+
| `observational-memory` | [pi-observational-memory](https://www.npmjs.com/package/pi-observational-memory) | Compaction continuity; V3 = clean session after upgrade |
|
|
341
|
+
| `supi-context` | [@mrclrchtr/supi-context](https://www.npmjs.com/package/@mrclrchtr/supi-context) | Context analysis & formatting; default off |
|
|
342
|
+
| `shazam` | [pi-shazam](https://www.npmjs.com/package/pi-shazam) | `shazam_*` tools; LSP-backed verify; complements graphify |
|
|
343
|
+
| `autoresearch` | [pi-autoresearch](https://www.npmjs.com/package/pi-autoresearch) | `/autoresearch`, `.auto/`; shortcut override in `pi-autoresearch.json` |
|
|
344
|
+
| `caveman` | [pi-caveman](https://www.npmjs.com/package/pi-caveman) | Terse English; conflicts with `defaults.language: ja` |
|
|
345
|
+
| `red-green` | [pi-red-green](https://www.npmjs.com/package/pi-red-green) | `/tdd`, `/tdd-status`; `~/.pi/red-green/config.json` |
|
|
346
|
+
| `agent-dashboard` | [@blackbelt-technology/pi-agent-dashboard](https://www.npmjs.com/package/@blackbelt-technology/pi-agent-dashboard) | Warm-start; peers **0.74** — test on 0.80 |
|
|
347
|
+
| `web-access` | [pi-web-access](https://www.npmjs.com/package/pi-web-access) | `web_search`, fetch; `~/.pi/web-search.json` |
|
|
348
|
+
| `pi-flows` | [@blackbelt-technology/pi-flows](https://www.npmjs.com/package/@blackbelt-technology/pi-flows) | `/flows`; peers **0.74** |
|
|
349
|
+
| `pi-actors` | [@llblab/pi-actors](https://www.npmjs.com/package/@llblab/pi-actors) | Local actor kernel (`spawn`, `message`, `inspect`) |
|
|
350
|
+
| `prompt-template-model` | [pi-prompt-template-model](https://www.npmjs.com/package/pi-prompt-template-model) | Prompt template model selector; default off |
|
|
351
|
+
| `kanagawa` | [pi-kanagawa](https://www.npmjs.com/package/pi-kanagawa) | Theme; **replaces hotmilk footer** when on |
|
|
352
|
+
| `tetris` | [pi-tetris](https://www.npmjs.com/package/pi-tetris) | `/tetris` |
|
|
353
|
+
| `latchkey` | [latchkey](https://www.npmjs.com/package/latchkey) | **Skill-only** — API credential injection via `/skill:latchkey` |
|
|
354
|
+
|
|
355
|
+
### Alternative skill stacks (not bundled)
|
|
356
|
+
|
|
357
|
+
hotmilk does **not** bundle [bigpowers](https://github.com/danielvm-git/bigpowers) — a separate spec-driven skill stack (70+ skills, prompts, MCP). It has no `pi.extensions` entry, runs `postinstall` global symlinks, and **conflicts with gentle-pi / pioneer plan routing**. Install separately if you want that workflow instead of hotmilk's defaults:
|
|
304
358
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
| Optimize metric (test time, bundle size, loss, Lighthouse) | `autoresearch: true` → `/skill:autoresearch-create` or `/autoresearch` |
|
|
308
|
-
| Feature, spec, cross-cutting, review >400 lines | `gentle-ai` + OpenSpec/SDD — keep `autoresearch` off |
|
|
309
|
-
| Human plan approval before writes | `plannotator` — not autoresearch as plan authority |
|
|
310
|
-
| Strict correctness-first test cycle | `red-green` (`/tdd`) — autoresearch only when optimizing the metric itself |
|
|
311
|
-
|
|
312
|
-
**Do not run SDD phases and an active autoresearch loop on the same task.** Stop the loop (`/autoresearch off`) before `/sdd-continue` or Plannotator approval work. Pioneer routing: [`skills/pioneer/references/autoresearch-routing.md`](skills/pioneer/references/autoresearch-routing.md).
|
|
313
|
-
|
|
314
|
-
**Shortcut conflicts:** default fullscreen dashboard is `Ctrl+Shift+F`. Override or disable in `~/.pi/agent/extensions/pi-autoresearch.json`:
|
|
315
|
-
|
|
316
|
-
```json
|
|
317
|
-
{
|
|
318
|
-
"shortcuts": {
|
|
319
|
-
"fullscreenDashboard": "ctrl+shift+y"
|
|
320
|
-
}
|
|
321
|
-
}
|
|
359
|
+
```bash
|
|
360
|
+
pi install npm:bigpowers
|
|
322
361
|
```
|
|
323
362
|
|
|
324
|
-
|
|
363
|
+
Do not enable bigpowers alongside pioneer OpenSpec/Plannotator on the same task. See [`.agents/plans/EXTENSIONS.md`](.agents/plans/EXTENSIONS.md) §L8.
|
|
325
364
|
|
|
326
|
-
|
|
365
|
+
### Agent dashboard troubleshooting
|
|
327
366
|
|
|
328
367
|
- Run **one** dashboard process: either hotmilk warm-start (`agent-dashboard: true`) **or** manual `npm run dashboard:start`, not both.
|
|
329
368
|
- Keep only `"hotmilk"` in `~/.pi/agent/settings.json` `packages[]` (not a standalone dashboard extension path). Hotmilk prunes duplicate dashboard paths on session start when `agent-dashboard` is enabled.
|
|
@@ -388,14 +427,14 @@ npm publish --access public
|
|
|
388
427
|
|
|
389
428
|
### Layout
|
|
390
429
|
|
|
391
|
-
| Path | Role
|
|
392
|
-
| -------------------------------- |
|
|
393
|
-
| `src/index.ts` | Extension entry: config, bundled extensions, session UI, input routing
|
|
394
|
-
| `src/config/hotmilk.ts` | `hotmilk.json` load / seed / save
|
|
395
|
-
| `agents/` | Package-canonical subagent prompts (`package: hotmilk`); install into `.pi/agents/` for discovery
|
|
396
|
-
| `prompts/`, `skills/`, `themes/` | Shipped with the package (`pi.prompts`, `pi.skills`, `pi.themes`)
|
|
397
|
-
| `mcp.json` | MCP server template for local projects
|
|
398
|
-
| `hotmilk.json` | Default toggle template (published in the npm package)
|
|
430
|
+
| Path | Role |
|
|
431
|
+
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
432
|
+
| `src/index.ts` | Extension entry: config, bundled extensions, session UI, input routing |
|
|
433
|
+
| `src/config/hotmilk.ts` | `hotmilk.json` load / seed / save |
|
|
434
|
+
| `agents/` | Package-canonical subagent prompts (`package: hotmilk`); install into `.pi/agents/` for discovery |
|
|
435
|
+
| `prompts/`, `skills/`, `themes/` | Shipped with the package (`pi.prompts`, `pi.skills`, `pi.themes`); workflow routing in [`skills/pioneer/`](skills/pioneer/SKILL.md) |
|
|
436
|
+
| `mcp.json` | MCP server template for local projects |
|
|
437
|
+
| `hotmilk.json` | Default toggle template (published in the npm package) |
|
|
399
438
|
|
|
400
439
|
## License
|
|
401
440
|
|
package/agents/assistant.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: assistant
|
|
3
3
|
description: General-purpose coding assistant for reading, writing, and reviewing code
|
|
4
4
|
tools: read, grep, find, ls, bash, edit, write, todo, subagent
|
|
5
|
-
model: cursor/auto
|
|
5
|
+
# model: cursor/auto
|
|
6
6
|
thinking: low
|
|
7
7
|
systemPromptMode: replace
|
|
8
8
|
inheritProjectContext: true
|
package/agents/coach.md
CHANGED
|
@@ -35,9 +35,30 @@ When the user clearly wants implementation, say so and recommend parent route to
|
|
|
35
35
|
## Coaching method
|
|
36
36
|
|
|
37
37
|
1. Restate the goal in one sentence; list what is **known** vs **assumed**.
|
|
38
|
-
2.
|
|
39
|
-
3.
|
|
40
|
-
4.
|
|
38
|
+
2. Surface the **TCZ contract** for this goal: `V`, `θ`, `Share`/`S_i`, and the **LUB candidate** (see below).
|
|
39
|
+
3. Teach the **minimum** concept needed for the next decision (diagrams or short tables OK).
|
|
40
|
+
4. Offer **2–3** options with tradeoffs and how each would be **verified** (`bun test`, doctor, graphify, Share_op, multi-bridge ensemble, etc.).
|
|
41
|
+
5. End with one **recommended next step** for the parent (e.g. `planner`, `scout`, `ask-user`, inline fix).
|
|
42
|
+
|
|
43
|
+
### TCZ convergence check (V / θ / Share / LUB)
|
|
44
|
+
|
|
45
|
+
Treat coaching as helping the human ascend toward the **least upper bound (LUB)** of shared abstraction, not just answering the immediate question.
|
|
46
|
+
|
|
47
|
+
- **Theorem 1 / 個別収束**: for every goal, make `V` (verification potential) and `θ` (acceptance threshold) explicit in the coaching output. If the user cannot state them, push back and ask up to three targeted questions before routing to a planner.
|
|
48
|
+
- **Theorem 2 / 共有整合**: when the goal involves multiple agents, shared artifacts, or review gates, identify the shared checks `S_i` and the minimum `Share ≥ η` that must hold across them.
|
|
49
|
+
- **Theorem 3 / 領域固定**: for large, ambiguous, or bridge-split changes, state an **LUB candidate** — the smallest shared abstraction that all acceptable implementations would satisfy. If multiple plausible agent outputs exist, recommend a **multi-bridge ensemble** (multiple independent implementations whose LUB is checked against the LUB candidate).
|
|
50
|
+
- **Boundary maintenance**: the coach intervenes at the `V ≈ θ` boundary, not inside the converged interior. If the user is about to delegate to `planner` with unstated `V`/`θ` or LUB, pause and ask.
|
|
51
|
+
|
|
52
|
+
## Before delegating to planner
|
|
53
|
+
|
|
54
|
+
A handoff to `planner` should include — or explicitly waive — all of:
|
|
55
|
+
|
|
56
|
+
1. `V`: what concrete evidence will prove the change is correct?
|
|
57
|
+
2. `θ`: what is the minimum acceptable value of that evidence?
|
|
58
|
+
3. `LUB candidate`: what shared abstraction must every acceptable implementation satisfy?
|
|
59
|
+
4. `Constraints / Boundaries / Iteration policy / Blocked stop condition` from the strong goal contract.
|
|
60
|
+
|
|
61
|
+
If any are missing and the user still wants a plan, write the handoff with `V`, `θ`, and LUB as open risks that `planner` must resolve first.
|
|
41
62
|
|
|
42
63
|
## Working rules
|
|
43
64
|
|
package/agents/designer.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: designer
|
|
3
3
|
description: Frontend design specialist for HTML/CSS/JSX/TSX/MDX with UI styling and UX focus
|
|
4
4
|
tools: read, grep, find, ls, bash, edit, write, todo, subagent
|
|
5
|
-
model: cursor/auto
|
|
5
|
+
# model: cursor/auto
|
|
6
6
|
thinking: medium
|
|
7
7
|
systemPromptMode: replace
|
|
8
8
|
inheritProjectContext: true
|
package/hotmilk.json
CHANGED
|
@@ -6,13 +6,17 @@
|
|
|
6
6
|
"context-mode": true,
|
|
7
7
|
"ask-user": true,
|
|
8
8
|
"graphify": true,
|
|
9
|
+
"shazam": false,
|
|
9
10
|
"subagents": true,
|
|
11
|
+
"pi-actors": false,
|
|
10
12
|
"goal": true,
|
|
11
13
|
"docparser": true,
|
|
12
14
|
"obsidian": true,
|
|
13
15
|
"btw": true,
|
|
14
16
|
"simplify": true,
|
|
15
17
|
"rtk-optimizer": false,
|
|
18
|
+
"observational-memory": false,
|
|
19
|
+
"supi-context": false,
|
|
16
20
|
"mcp-adapter": false,
|
|
17
21
|
"planning-with-files": false,
|
|
18
22
|
"plannotator": false,
|
|
@@ -23,6 +27,7 @@
|
|
|
23
27
|
"web-access": false,
|
|
24
28
|
"pi-flows": false,
|
|
25
29
|
"kanagawa": false,
|
|
30
|
+
"prompt-template-model": false,
|
|
26
31
|
"tetris": false
|
|
27
32
|
},
|
|
28
33
|
"graph": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hotmilk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.15",
|
|
4
4
|
"description": "hotmilk — Pi package bundling gentle-pi, context-mode, graphify, subagents, and bundled extension toggles via hotmilk.json",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hotmilk",
|
|
@@ -38,47 +38,63 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@blackbelt-technology/pi-agent-dashboard": "^0.5.4",
|
|
41
|
-
"@blackbelt-technology/pi-flows": "^0.2
|
|
41
|
+
"@blackbelt-technology/pi-flows": "^0.3.2",
|
|
42
42
|
"@haispeed/pi-obsidian": "^0.1.1",
|
|
43
|
-
"@
|
|
43
|
+
"@llblab/pi-actors": "^0.39.0",
|
|
44
|
+
"@mrclrchtr/supi-context": "^2.2.1",
|
|
45
|
+
"@plannotator/pi-extension": "^0.22.0",
|
|
44
46
|
"@tomxprime/planning-with-files": "^1.1.0",
|
|
45
|
-
"context-mode": "^1.0.
|
|
46
|
-
"gentle-pi": "^0.
|
|
47
|
+
"context-mode": "^1.0.169",
|
|
48
|
+
"gentle-pi": "^0.13.0",
|
|
47
49
|
"graphify-pi": "^0.3.0",
|
|
48
|
-
"
|
|
49
|
-
"pi-
|
|
50
|
+
"latchkey": "^2.20.1",
|
|
51
|
+
"pi-ask-user": "^0.12.0",
|
|
52
|
+
"pi-autoresearch": "^1.6.2",
|
|
50
53
|
"pi-btw": "^0.4.1",
|
|
51
54
|
"pi-caveman": "^1.0.7",
|
|
52
55
|
"pi-docparser": "^3.0.1",
|
|
53
56
|
"pi-goal": "^0.1.7",
|
|
54
57
|
"pi-kanagawa": "^1.0.0",
|
|
55
|
-
"pi-mcp-adapter": "^2.
|
|
58
|
+
"pi-mcp-adapter": "^2.11.0",
|
|
59
|
+
"pi-observational-memory": "^3.0.3",
|
|
60
|
+
"pi-prompt-template-model": "^0.10.0",
|
|
56
61
|
"pi-red-green": "^0.2.2",
|
|
57
|
-
"pi-rtk-optimizer": "^0.
|
|
62
|
+
"pi-rtk-optimizer": "^0.9.0",
|
|
63
|
+
"pi-shazam": "^0.26.0",
|
|
58
64
|
"pi-simplify": "^0.2.2",
|
|
59
|
-
"pi-subagents": "^0.
|
|
65
|
+
"pi-subagents": "^0.34.0",
|
|
60
66
|
"pi-tetris": "^1.3.1",
|
|
61
67
|
"pi-web-access": "^0.13.0"
|
|
62
68
|
},
|
|
63
69
|
"devDependencies": {
|
|
64
|
-
"@earendil-works/pi-agent-core": "^0.80.
|
|
65
|
-
"@earendil-works/pi-ai": "^0.80.
|
|
66
|
-
"@earendil-works/pi-coding-agent": "^0.80.
|
|
67
|
-
"@earendil-works/pi-tui": "^0.80.
|
|
68
|
-
"@types/node": "^22.20.
|
|
69
|
-
"typebox": "^1.3.
|
|
70
|
-
"vite-plus": "^0.2.
|
|
70
|
+
"@earendil-works/pi-agent-core": "^0.80.6",
|
|
71
|
+
"@earendil-works/pi-ai": "^0.80.6",
|
|
72
|
+
"@earendil-works/pi-coding-agent": "^0.80.6",
|
|
73
|
+
"@earendil-works/pi-tui": "^0.80.6",
|
|
74
|
+
"@types/node": "^22.20.1",
|
|
75
|
+
"typebox": "^1.3.6",
|
|
76
|
+
"vite-plus": "^0.2.4"
|
|
71
77
|
},
|
|
72
78
|
"peerDependencies": {
|
|
73
|
-
"@earendil-works/pi-agent-core": "^0.80.
|
|
74
|
-
"@earendil-works/pi-ai": "^0.80.
|
|
75
|
-
"@earendil-works/pi-coding-agent": "^0.80.
|
|
76
|
-
"@earendil-works/pi-tui": "^0.80.
|
|
77
|
-
"typebox": "^1.3.
|
|
79
|
+
"@earendil-works/pi-agent-core": "^0.80.6",
|
|
80
|
+
"@earendil-works/pi-ai": "^0.80.6",
|
|
81
|
+
"@earendil-works/pi-coding-agent": "^0.80.6",
|
|
82
|
+
"@earendil-works/pi-tui": "^0.80.6",
|
|
83
|
+
"typebox": "^1.3.6"
|
|
78
84
|
},
|
|
79
85
|
"overrides": {
|
|
86
|
+
"@earendil-works/pi-coding-agent": "^0.80.6",
|
|
80
87
|
"@fastify/static": "9.1.3",
|
|
81
|
-
"@
|
|
88
|
+
"@mariozechner/pi-coding-agent": "npm:@earendil-works/pi-coding-agent@^0.80.6",
|
|
89
|
+
"@mozilla/readability": "0.6.0",
|
|
90
|
+
"dompurify": "^3.4.11",
|
|
91
|
+
"esbuild": "0.28.1",
|
|
92
|
+
"hono": "^4.12.28",
|
|
93
|
+
"linkify-it": "^5.0.1",
|
|
94
|
+
"protobufjs": "^7.6.3",
|
|
95
|
+
"undici": "^7.28.0",
|
|
96
|
+
"vite": "^8.1.4",
|
|
97
|
+
"ws": "8.21.0"
|
|
82
98
|
},
|
|
83
99
|
"engines": {
|
|
84
100
|
"node": "22"
|