pi-soly 1.9.1 → 1.9.2

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.
Files changed (2) hide show
  1. package/README.md +162 -87
  2. package/package.json +4 -5
package/README.md CHANGED
@@ -2,11 +2,9 @@
2
2
 
3
3
  # ⚡ pi-soly
4
4
 
5
- **The project management framework for [pi-coding-agent](https://github.com/nicobailon/pi-coding-agent).**
5
+ **The project management + workflow engine for [pi-coding-agent](https://github.com/nicobailon/pi-coding-agent).**
6
6
 
7
- Plans · State · Subagents · Multi-question picker · Live task list.
8
-
9
- One `npm install`. Zero config. Pure magic.
7
+ Plans · State · Rules · Multi-question picker. One `npm install`. Zero config.
10
8
 
11
9
  [![npm version](https://img.shields.io/npm/v/pi-soly.svg)](https://www.npmjs.com/package/pi-soly)
12
10
  [![npm downloads](https://img.shields.io/npm/dm/pi-soly.svg)](https://www.npmjs.com/package/pi-soly)
@@ -14,7 +12,7 @@ One `npm install`. Zero config. Pure magic.
14
12
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/lowern1ght/pi-soly/blob/master/LICENSE)
15
13
  [![Built with Bun](https://img.shields.io/badge/Built_with-Bun-f9f1e1?logo=bun)](https://bun.sh)
16
14
 
17
- [Install](#-install) · [Features](#-features) · [Docs](#-documentation) · [Architecture](#-architecture) · [Releases](#-releases)
15
+ [Install](#-install) · [Commands](#-commands) · [Rules & Docs](#-rules--docs) · [Architecture](#-architecture) · [Releases](#-releases)
18
16
 
19
17
  </div>
20
18
 
@@ -26,13 +24,15 @@ One `npm install`. Zero config. Pure magic.
26
24
  pi install npm:pi-soly
27
25
  ```
28
26
 
29
- That's it. Restart pi, and you have:
27
+ Restart pi (`/reload`), and you have:
28
+
29
+ - **Project management** — plans, state, phases, decisions
30
+ - **Workflow engine** — `/plan`, `/execute`, `/resume`, `/inspect`, `/discuss`, `/quick`
31
+ - **Mandatory rules** — strict-mode directives injected every turn
32
+ - **Multi-question picker** — `ask_pro` tool for the LLM
33
+ - **Skill-based execution** — LLM reads the `soly-framework` skill on demand
30
34
 
31
- - **A complete project management engine** plans, state, subagent-driven execution
32
- - **A multi-question picker** — `ask_pro` tool for the LLM
33
- - **Live task list + notifications** — see nudge + deprecation warnings as framed Box widgets
34
- - **A live task list** — `todo_update` tool renders in the footer
35
- - **7 soly agents** installed on first run
35
+ No agents, no rotors, no mode cycling. The LLM is the executor. You focus on the work.
36
36
 
37
37
  ---
38
38
 
@@ -40,45 +40,128 @@ That's it. Restart pi, and you have:
40
40
 
41
41
  | Without pi-soly | With pi-soly |
42
42
  |---|---|
43
- | Write your own planning workflow | `/plan`, `/execute`, `/resume`, `/inspect` ready |
44
- | Manually dispatch subagents | `useSolyWorkerSubagents: true` automatic routing |
45
- | 3 different packages for pickers/tasks/agents | One package, one config, one install |
46
- | Mode selection (oracle/scout/reviewer) | LLM picks via `subagent(...)` based on task brief |
47
- | Re-invent the state machine | `.soly/STATE.md` + auto-managed phases |
43
+ | Re-invent plan/state/resume from scratch | `/plan`, `/execute`, `/resume`, `/inspect` ready |
44
+ | Forget rules mid-session | `## ⚠️ MANDATORY` header in every system prompt |
45
+ | Wonder which rules eat context | `/rules stats` Claude-memory-style breakdown |
46
+ | Wonder which docs eat context | `/docs stats` same for intent docs |
47
+ | Ask the LLM the same clarifying question 5 times | `ask_pro` multi-question picker |
48
48
 
49
49
  ---
50
50
 
51
- ## 🔥 Features
51
+ ## 📋 Commands
52
+
53
+ ### Workflow
52
54
 
53
- ### 📋 Project Management Engine
55
+ ```bash
56
+ /plan # generate PLAN.md for the current phase
57
+ /execute # execute plan directly (LLM does the work)
58
+ /resume # pick up a paused session
59
+ /inspect # show current state summary
60
+ /discuss 3 # talk through decisions before planning phase 3
61
+ /quick "fix typo" # one-shot task with HANDOFF-style context
62
+ ```
54
63
 
55
- GSD-inspired planning and execution. State is the source of truth, not vibes.
64
+ ### State inspection (`/soly`)
56
65
 
57
66
  ```bash
58
- /plan # generate PLAN.md for the current phase
59
- /execute # execute plan directly (LLM does the work)
60
- /resume # pick up a paused session
61
- /inspect # show current state summary
62
- /discuss 3 # talk through decisions before planning phase 3
67
+ /soly # interactive picker (📍📄📋💡🔬🗺️📊📁✅⭐🎯🔄⚙️)
68
+ /soly position # where am I in the plan
69
+ /soly state # current STATE.md content
70
+ /soly roadmap # all phases
71
+ /soly progress # phases/plans/tasks done vs total
72
+ /soly phases # list phases
73
+ /soly plan [N] # show plan for phase N
63
74
  ```
64
75
 
65
- State lives in `.soly/` — portable, git-friendly, human-readable.
76
+ ### Rules & Docs
66
77
 
78
+ ```bash
79
+ /rules # interactive list
80
+ /rules stats # context breakdown (always-on vs glob-matched)
81
+ /rules analytics # token analytics + warnings + duplicates
82
+ /rules show <name> # show rule body
83
+ /rules reload # re-read all rules
84
+ /rules enable <name> / disable <name>
85
+
86
+ /docs stats # context breakdown (inline vs preview vs phase-specific)
67
87
  ```
68
- .soly/
69
- ├── ROADMAP.md # phase table
70
- ├── STATE.md # current position + decisions log
71
- ├── docs/ # 0-point intent docs (your vision, locked)
72
- └── phases/
73
- └── 01-foundation/
74
- ├── 01-CONTEXT.md # domain + decisions for this phase
75
- ├── 01-RESEARCH.md # what we looked up
76
- └── 01-PLAN.md # ordered steps to execute
88
+
89
+ ### Setup
90
+
91
+ ```bash
92
+ /soly-init # scaffold .soly/ (templates: minimal|web-app|library|cli)
93
+ /soly-migrate # atomic .soly/ → .agents/ rename (vendor-neutral)
94
+ /soly-status # one-screen health report
95
+ /soly-log # recent notifications
77
96
  ```
78
97
 
79
- ### 🎤 Multi-Question Picker
98
+ ### Debug
80
99
 
81
- Multi-question picker `ask_pro` for the LLM. Tabbed UI: single-select, multi-select, recommended ⭐, free-text Other.
100
+ ```bash
101
+ /why # rules + project state that grounded the last turn
102
+ /rulewizard # interactive guide: rule vs .editorconfig vs linter
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 🧠 Rules & Docs
108
+
109
+ Two system-prompt injections, both **opt-in** and **fully observable**.
110
+
111
+ ### Rules — `.soly/rules/` or `~/.soly/rules/`
112
+
113
+ Markdown files with frontmatter. Three modes:
114
+
115
+ ```markdown
116
+ ---
117
+ description: TypeScript code style
118
+ always: true # loaded every turn
119
+ ---
120
+
121
+ Always use `strict` mode. Never use `any`...
122
+ ```
123
+
124
+ ```markdown
125
+ ---
126
+ description: React component rules
127
+ globs: ["**/*.tsx", "**/*.jsx"] # loaded only when prompt mentions matching file
128
+ ---
129
+
130
+ Hooks only at top level. Use memo only for expensive renders...
131
+ ```
132
+
133
+ System prompt injection (every turn, after `before_agent_start`):
134
+
135
+ ```markdown
136
+ ## ⚠️ MANDATORY: soly project rules
137
+
138
+ **These rules are NON-NEGOTIABLE. Before writing or editing ANY code,
139
+ re-read the rules above that apply to the file path you are about to
140
+ modify. If a rule contradicts your instinct, the rule wins.**
141
+ ```
142
+
143
+ See context breakdown anytime: `/rules stats`.
144
+
145
+ ### Docs — `.soly/docs/` or `~/.soly/docs/`
146
+
147
+ Zero-point intent docs (your vision, business context). Loaded as **preview only** (180 chars per doc) — cheap. Add `inline: true` to opt-in to full body injection.
148
+
149
+ ```markdown
150
+ ---
151
+ title: Core principles
152
+ inline: true # full body loaded every turn (expensive!)
153
+ ---
154
+
155
+ Our core principles are...
156
+ ```
157
+
158
+ See context breakdown: `/docs stats`.
159
+
160
+ ---
161
+
162
+ ## 🎤 Multi-Question Picker
163
+
164
+ `ask_pro` tool for the LLM. Tabbed UI: single-select, multi-select, recommended ⭐, free-text Other.
82
165
 
83
166
  ```ts
84
167
  ask_pro({
@@ -94,19 +177,7 @@ ask_pro({
94
177
  })
95
178
  ```
96
179
 
97
- The LLM can update its own task list mid-turn. You watch progress without re-asking.
98
-
99
- ```ts
100
- todo_update({
101
- todos: [
102
- { content: "Read existing config", status: "completed", priority: "high" },
103
- { content: "Write new schema", status: "in_progress", priority: "high" },
104
- { content: "Add migration", status: "pending", priority: "medium" },
105
- { content: "Update tests", status: "pending", priority: "medium" },
106
- { content: "Run typecheck", status: "pending", priority: "low" }
107
- ]
108
- })
109
- ```
180
+ The LLM calls `ask_pro` when it needs structured input. Tab through questions, pick ⭐ options, confirm.
110
181
 
111
182
  ---
112
183
 
@@ -114,16 +185,15 @@ todo_update({
114
185
 
115
186
  ```
116
187
  ┌──────────────────────────────────────────────────────────────┐
117
- │ pi-coding-agent (peer dep)
188
+ │ pi-coding-agent (peer dep)
118
189
  └────────────────────────┬─────────────────────────────────────┘
119
190
 
120
191
  ┌────────────────┴────────────────┐
121
- │ │
122
192
  ▼ ▼
123
193
  ┌────────────┐ ┌─────────────┐
124
- │ ask_pro │ │ todo_
125
- │ picker │ │ update
126
- │ (tool) │ │ (tool)
194
+ │ ask_pro │ │ soly_read
195
+ │ picker │ │ soly_log_
196
+ │ (tool) │ │ decision
127
197
  └────────────┘ └─────────────┘
128
198
  │ │
129
199
  └─────────────────┬───────────────┘
@@ -135,48 +205,54 @@ todo_update({
135
205
  │ /plan /execute │
136
206
  │ /resume /inspect│
137
207
  │ /discuss /quick │
208
+ │ /soly /why │
209
+ │ /rules /docs │
138
210
  └────────┬─────────┘
139
211
 
140
212
  ┌────────────┼────────────┐
141
213
  ▼ ▼ ▼
142
- .soly/STATE phases/<N>/ iterations/
143
- (current CONTEXT, (per-exec
144
- position) PLAN, context
145
- RESEARCH) bundle)
214
+ .soly/STATE phases/<N>/ rules/
215
+ (current CONTEXT, docs/
216
+ position) PLAN, (system
217
+ RESEARCH) prompt)
146
218
 
147
219
 
148
220
  ┌──────────────────┐
149
- switch/
150
- (no rotors —
221
+ soly-framework
222
+ SKILL.md
151
223
  │ │
152
- Ctrl+Tab
153
- footer pill
154
- removed 1.4)
155
- └────────┬─────────┘
156
-
157
-
158
- ┌──────────────────┐
159
- │ 7 soly agents │
160
- │ │
161
- │ worker (cycle) │
162
- │ soly-debugger │
163
- │ soly-tester │
164
- │ soly-reviewer │
165
- │ soly-refactor │
166
- │ soly-documenter │
167
- │ soly-oracle │
224
+ LLM loads on
225
+ demand \u2014 no
226
+ subagent layer
168
227
  └──────────────────┘
169
228
  ```
170
229
 
230
+ State lives in `.soly/` — portable, git-friendly, human-readable. Migrate to vendor-neutral `.agents/` with `/soly-migrate` (both supported, `.soly/` shows deprecation warning).
231
+
232
+ ```
233
+ .soly/
234
+ ├── ROADMAP.md # phase table
235
+ ├── STATE.md # current position + decisions log
236
+ ├── docs/ # 0-point intent docs (preview-loaded)
237
+ ├── rules/ # rules (glob-matched or always-on)
238
+ └── phases/
239
+ └── 01-foundation/
240
+ ├── 01-CONTEXT.md # domain + decisions for this phase
241
+ ├── 01-RESEARCH.md # what we looked up
242
+ └── 01-PLAN.md # ordered steps to execute
243
+ ```
244
+
171
245
  ---
172
246
 
173
- ## 📚 Documentation
247
+ ## 📚 Events
174
248
 
175
- - **Slash commands** `/plan`, `/execute`, `/resume`, `/inspect`, `/discuss <N>`, `/quick <task>`
176
- - **Tools** — `ask_pro(question[])` and `todo_update(todo[])`
177
- - **Events** — `session_start`, `before_agent_start`, `message_end`, `tool_call`, `tool_result`
178
- - **State files** `.soly/STATE.md`, `.soly/ROADMAP.md`, `.soly/phases/<N>-<slug>/<N>-PLAN.md`
179
- - **Soly agents**installed to `~/.pi/agent/agents/soly-*.md` on first run
249
+ | Event | When | What we do |
250
+ |---|---|---|
251
+ | `session_start` | session opens | Install `soly-framework` skill, build initial state |
252
+ | `before_agent_start` | every turn | Inject rules + docs sections into system prompt |
253
+ | `tool_call` (edit/write) | LLM edits file | Track edited files (silent used by `/why`) |
254
+ | `turn_end` | turn finishes | Refresh rules/state, hot-reload changes |
255
+ | `session_shutdown` | session closes | Flush iterators, cleanup |
180
256
 
181
257
  ---
182
258
 
@@ -198,7 +274,7 @@ bun install
198
274
  ### Test + typecheck
199
275
 
200
276
  ```bash
201
- bun test # 288 tests
277
+ bun test # 366 tests across 24 files
202
278
  bun run typecheck # tsc --noEmit
203
279
  bun run ci # both
204
280
  ```
@@ -217,10 +293,9 @@ pi install ./packages/pi-soly
217
293
  Tag-based, fully automated. Push a `pi-soly-v*` tag, get a publish.
218
294
 
219
295
  ```bash
220
- ./scripts/release.sh pi-soly 0.5.9
221
- git push origin master
296
+ ./scripts/release.sh pi-soly 1.9.1
222
297
  git push github master
223
- git push github pi-soly-v0.5.9 --force
298
+ git push github pi-soly-v1.9.1 --force
224
299
  ```
225
300
 
226
301
  CI runs on a self-hosted GitHub Actions runner:
@@ -256,4 +331,4 @@ MIT — see [LICENSE](LICENSE).
256
331
 
257
332
  [⭐ Star on GitHub](https://github.com/lowern1ght/pi-soly) · [📦 View on npm](https://www.npmjs.com/package/pi-soly) · [🐛 Report a bug](https://github.com/lowern1ght/pi-soly/issues)
258
333
 
259
- </div>
334
+ </div>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-soly",
3
- "version": "1.9.1",
4
- "description": "Project management framework for pi-coding-agent. Workflows, planning, multi-question picker, agent switcher, live task list — one npm install, zero config.",
3
+ "version": "1.9.2",
4
+ "description": "Project management + workflow engine for pi-coding-agent. Plans, state, MANDATORY rules, multi-question picker — one npm install, zero config. LLM is the executor (no subagent layer).",
5
5
  "type": "module",
6
6
  "main": "index.ts",
7
7
  "scripts": {
@@ -49,11 +49,10 @@
49
49
  "pi-package",
50
50
  "project-management",
51
51
  "planning",
52
- "subagents",
53
52
  "multi-question",
54
- "agent-switcher",
55
- "task-list",
56
53
  "workflow-engine",
54
+ "rules-engine",
55
+ "intent-docs",
57
56
  "ai-coding"
58
57
  ],
59
58
  "license": "MIT",