@huseynsnmz/pi-suite 0.0.0-stage → 0.2.0
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/CHANGELOG.md +28 -0
- package/LICENSE +21 -0
- package/README.md +88 -2
- package/SECURITY.md +5 -0
- package/package.json +112 -4
- package/packages/board/CHANGELOG.md +340 -0
- package/packages/board/CONTRIBUTING.md +7 -0
- package/packages/board/LICENSE +21 -0
- package/packages/board/README.md +88 -0
- package/packages/board/SECURITY.md +19 -0
- package/packages/board/docs/how-it-works.md +31 -0
- package/packages/board/docs/reference.md +278 -0
- package/packages/board/package.json +81 -0
- package/packages/board/runner/job-runner-legacy.mjs +68 -0
- package/packages/board/runner/job-runner.mjs +834 -0
- package/packages/board/runner/pty-runner-legacy.mjs +50 -0
- package/packages/board/runner/pty-runner.mjs +2175 -0
- package/packages/board/runner/state-coordinator.mjs +673 -0
- package/packages/board/runner/state-runner.mjs +203 -0
- package/packages/board/runner/title-runner.mjs +80 -0
- package/packages/board/src/commands/agent-board.ts +394 -0
- package/packages/board/src/commands/attach-decision.mjs +66 -0
- package/packages/board/src/commands/attach-flow.ts +251 -0
- package/packages/board/src/commands/bg.ts +103 -0
- package/packages/board/src/commands/board-model.ts +21 -0
- package/packages/board/src/core/atomic.mjs +184 -0
- package/packages/board/src/core/attach-delete.mjs +24 -0
- package/packages/board/src/core/attach-frame-proof.mjs +870 -0
- package/packages/board/src/core/attach-frame-reporter.mjs +648 -0
- package/packages/board/src/core/attach-frame-stream.mjs +266 -0
- package/packages/board/src/core/attach-view-proof.mjs +709 -0
- package/packages/board/src/core/auto-state.mjs +377 -0
- package/packages/board/src/core/background-runs.mjs +273 -0
- package/packages/board/src/core/code-refs-store.mjs +315 -0
- package/packages/board/src/core/code-refs.mjs +913 -0
- package/packages/board/src/core/config.mjs +77 -0
- package/packages/board/src/core/control-protocol.mjs +482 -0
- package/packages/board/src/core/coordinator-client.mjs +633 -0
- package/packages/board/src/core/coordinator-journal.mjs +282 -0
- package/packages/board/src/core/coordinator-protocol.mjs +14 -0
- package/packages/board/src/core/cwd-stats.mjs +114 -0
- package/packages/board/src/core/dashboard-render.mjs +10 -0
- package/packages/board/src/core/derive.mjs +117 -0
- package/packages/board/src/core/diagnostics.mjs +133 -0
- package/packages/board/src/core/double-press.mjs +26 -0
- package/packages/board/src/core/editor-state-reporter.mjs +112 -0
- package/packages/board/src/core/events.mjs +286 -0
- package/packages/board/src/core/evidence.mjs +245 -0
- package/packages/board/src/core/follow-up-queue.mjs +211 -0
- package/packages/board/src/core/foreground-preview-cache.mjs +117 -0
- package/packages/board/src/core/foreground-projection-cache.mjs +99 -0
- package/packages/board/src/core/frame-witness-update.mjs +35 -0
- package/packages/board/src/core/heuristics.mjs +313 -0
- package/packages/board/src/core/hold-input.mjs +27 -0
- package/packages/board/src/core/host-coordination.mjs +300 -0
- package/packages/board/src/core/host-crash.mjs +79 -0
- package/packages/board/src/core/host-probe.mjs +207 -0
- package/packages/board/src/core/host-protocol.mjs +73 -0
- package/packages/board/src/core/ids.mjs +35 -0
- package/packages/board/src/core/ime-cursor-coalesce.mjs +193 -0
- package/packages/board/src/core/invocation.mjs +43 -0
- package/packages/board/src/core/launch-options.mjs +418 -0
- package/packages/board/src/core/launch.mjs +157 -0
- package/packages/board/src/core/load-config.mjs +4 -0
- package/packages/board/src/core/locks.mjs +530 -0
- package/packages/board/src/core/paths.mjs +183 -0
- package/packages/board/src/core/pid.mjs +75 -0
- package/packages/board/src/core/prewarm-schedule.mjs +41 -0
- package/packages/board/src/core/process-identity-probe.mjs +228 -0
- package/packages/board/src/core/prompt-transport.mjs +13 -0
- package/packages/board/src/core/pty-attach-jiggle-controller.mjs +356 -0
- package/packages/board/src/core/pty-attach-jiggle-retry.mjs +109 -0
- package/packages/board/src/core/pty-attach-reconnect.mjs +61 -0
- package/packages/board/src/core/pty-attach-render.mjs +229 -0
- package/packages/board/src/core/pty-links.mjs +81 -0
- package/packages/board/src/core/pty-scroll.mjs +522 -0
- package/packages/board/src/core/pty-support.mjs +327 -0
- package/packages/board/src/core/repo.mjs +103 -0
- package/packages/board/src/core/rows.mjs +414 -0
- package/packages/board/src/core/screen-log-gc.mjs +198 -0
- package/packages/board/src/core/screen-log.mjs +160 -0
- package/packages/board/src/core/session-view.mjs +174 -0
- package/packages/board/src/core/slash-commands.mjs +52 -0
- package/packages/board/src/core/state-commands.mjs +757 -0
- package/packages/board/src/core/status-consistency.mjs +98 -0
- package/packages/board/src/core/steering-prompts.mjs +34 -0
- package/packages/board/src/core/steering.mjs +133 -0
- package/packages/board/src/core/stop-latch.mjs +41 -0
- package/packages/board/src/core/store.mjs +523 -0
- package/packages/board/src/core/suspend.mjs +36 -0
- package/packages/board/src/core/terminal-attach-client.mjs +981 -0
- package/packages/board/src/core/terminal-attach-protocol.mjs +460 -0
- package/packages/board/src/core/terminal-model.mjs +222 -0
- package/packages/board/src/core/terminal-query-sequences.mjs +239 -0
- package/packages/board/src/core/terminal-reply-guard.mjs +222 -0
- package/packages/board/src/core/terminal-snapshot.mjs +440 -0
- package/packages/board/src/core/test-knobs.mjs +28 -0
- package/packages/board/src/core/title.mjs +43 -0
- package/packages/board/src/core/types.mjs +414 -0
- package/packages/board/src/core/warm-host-sweeper.mjs +168 -0
- package/packages/board/src/core/worktree.mjs +65 -0
- package/packages/board/src/index.ts +303 -0
- package/packages/board/src/runtime/service.mjs +3222 -0
- package/packages/board/src/ui/chrome.ts +20 -0
- package/packages/board/src/ui/dashboard-decisions.mjs +55 -0
- package/packages/board/src/ui/dashboard-evidence.mjs +85 -0
- package/packages/board/src/ui/dashboard.ts +2237 -0
- package/packages/board/src/ui/double-left.ts +30 -0
- package/packages/board/src/ui/external-editor.ts +25 -0
- package/packages/board/src/ui/focus.ts +32 -0
- package/packages/board/src/ui/pty-attach.ts +3184 -0
- package/packages/board/src/ui/waiting.ts +30 -0
- package/packages/commands/LICENSE +21 -0
- package/packages/commands/README.md +19 -0
- package/packages/commands/package.json +22 -0
- package/packages/commands/src/index.ts +43 -0
- package/packages/commands/src/security-review.ts +109 -0
- package/packages/frame/CHANGELOG.md +113 -0
- package/packages/frame/CONTRIBUTING.md +7 -0
- package/packages/frame/LICENSE +22 -0
- package/packages/frame/README.md +105 -0
- package/packages/frame/SECURITY.md +16 -0
- package/packages/frame/docs/how-it-works.md +53 -0
- package/packages/frame/docs/reference.md +78 -0
- package/packages/frame/package.json +72 -0
- package/packages/frame/src/data/git.ts +90 -0
- package/packages/frame/src/data/github.ts +140 -0
- package/packages/frame/src/data/gitlab.ts +63 -0
- package/packages/frame/src/data/mode.ts +49 -0
- package/packages/frame/src/data/past-prompts.ts +57 -0
- package/packages/frame/src/data/runner.ts +32 -0
- package/packages/frame/src/data/snapshot.ts +223 -0
- package/packages/frame/src/data/start-notes.ts +104 -0
- package/packages/frame/src/data/telemetry.ts +337 -0
- package/packages/frame/src/data/todos.ts +162 -0
- package/packages/frame/src/data/totals.ts +94 -0
- package/packages/frame/src/data/visits.ts +45 -0
- package/packages/frame/src/index.ts +696 -0
- package/packages/frame/src/kit/LICENSE +21 -0
- package/packages/frame/src/kit/app/attribution.ts +30 -0
- package/packages/frame/src/kit/app/builder.ts +186 -0
- package/packages/frame/src/kit/app/claim.ts +27 -0
- package/packages/frame/src/kit/app/feature.ts +91 -0
- package/packages/frame/src/kit/app/host.ts +214 -0
- package/packages/frame/src/kit/app/renderers.ts +62 -0
- package/packages/frame/src/kit/app/scope.ts +125 -0
- package/packages/frame/src/kit/board/model.ts +337 -0
- package/packages/frame/src/kit/contract.ts +79 -0
- package/packages/frame/src/kit/contracts/accounts.ts +33 -0
- package/packages/frame/src/kit/contracts/ask.ts +120 -0
- package/packages/frame/src/kit/contracts/board.ts +6 -0
- package/packages/frame/src/kit/contracts/by.ts +22 -0
- package/packages/frame/src/kit/contracts/calls.ts +46 -0
- package/packages/frame/src/kit/contracts/events.ts +89 -0
- package/packages/frame/src/kit/contracts/mode.ts +26 -0
- package/packages/frame/src/kit/contracts/names.ts +12 -0
- package/packages/frame/src/kit/contracts/peers.ts +77 -0
- package/packages/frame/src/kit/contracts/prompts.ts +8 -0
- package/packages/frame/src/kit/contracts/screen.ts +75 -0
- package/packages/frame/src/kit/contracts/skills.ts +81 -0
- package/packages/frame/src/kit/contracts/sources.ts +81 -0
- package/packages/frame/src/kit/contracts/views.ts +42 -0
- package/packages/frame/src/kit/control.ts +59 -0
- package/packages/frame/src/kit/dark-theme.ts +41 -0
- package/packages/frame/src/kit/decode.ts +210 -0
- package/packages/frame/src/kit/events/log.ts +313 -0
- package/packages/frame/src/kit/format.ts +25 -0
- package/packages/frame/src/kit/host.ts +4 -0
- package/packages/frame/src/kit/index.ts +25 -0
- package/packages/frame/src/kit/legacy-tasks.ts +39 -0
- package/packages/frame/src/kit/overlay-images.ts +36 -0
- package/packages/frame/src/kit/paths.ts +16 -0
- package/packages/frame/src/kit/screen/client.ts +74 -0
- package/packages/frame/src/kit/screen/feature.ts +64 -0
- package/packages/frame/src/kit/screen/model.ts +182 -0
- package/packages/frame/src/kit/screen/view.ts +838 -0
- package/packages/frame/src/kit/settings/files.ts +90 -0
- package/packages/frame/src/kit/settings/setting.ts +57 -0
- package/packages/frame/src/kit/settings/store.ts +192 -0
- package/packages/frame/src/kit/sources/file.ts +129 -0
- package/packages/frame/src/kit/sources/follow.ts +155 -0
- package/packages/frame/src/kit/testing.ts +260 -0
- package/packages/frame/src/kit/totals.ts +72 -0
- package/packages/frame/src/kit/ui/entry.ts +75 -0
- package/packages/frame/src/kit/ui/frame.ts +212 -0
- package/packages/frame/src/kit/ui/glyphs.ts +132 -0
- package/packages/frame/src/kit/ui/scroll.ts +14 -0
- package/packages/frame/src/render/diff.ts +157 -0
- package/packages/frame/src/render/fit.ts +86 -0
- package/packages/frame/src/render/format.ts +108 -0
- package/packages/frame/src/render/frame.ts +106 -0
- package/packages/frame/src/render/glyphs.ts +189 -0
- package/packages/frame/src/render/keys.ts +43 -0
- package/packages/frame/src/render/lead.ts +37 -0
- package/packages/frame/src/render/paint.ts +135 -0
- package/packages/frame/src/render/safe.ts +19 -0
- package/packages/frame/src/render/segments.ts +735 -0
- package/packages/frame/src/render/streaming.ts +223 -0
- package/packages/frame/src/render/timing.ts +106 -0
- package/packages/frame/src/render/tools.ts +167 -0
- package/packages/frame/src/settings.ts +105 -0
- package/packages/frame/src/ui/editor.ts +272 -0
- package/packages/frame/src/ui/effort.ts +36 -0
- package/packages/frame/src/ui/footer.ts +165 -0
- package/packages/frame/src/ui/header.ts +362 -0
- package/packages/frame/src/ui/history-search.ts +23 -0
- package/packages/frame/src/ui/interrupt.ts +21 -0
- package/packages/frame/src/ui/outputs.ts +170 -0
- package/packages/frame/src/ui/pi-entries.ts +298 -0
- package/packages/frame/src/ui/previews.ts +72 -0
- package/packages/frame/src/ui/queue.ts +75 -0
- package/packages/frame/src/ui/screen.ts +59 -0
- package/packages/frame/src/ui/timings.ts +48 -0
- package/packages/frame/src/ui/todos.ts +205 -0
- package/packages/frame/src/ui/tool-frame.ts +595 -0
- package/packages/frame/src/ui/working.ts +25 -0
- package/packages/frame/src/view/state.ts +97 -0
- package/packages/frame/src/view/transcript.ts +175 -0
- package/packages/frame/src/view/view.ts +162 -0
- package/packages/memory/CONTRIBUTING.md +7 -0
- package/packages/memory/LICENSE +21 -0
- package/packages/memory/README.md +44 -0
- package/packages/memory/SECURITY.md +20 -0
- package/packages/memory/package.json +55 -0
- package/packages/memory/skills/review-memory/SKILL.md +48 -0
- package/packages/memory/src/index.ts +163 -0
- package/packages/memory/src/prompt.ts +25 -0
- package/packages/memory/src/review.ts +150 -0
- package/packages/memory/src/secrets.ts +22 -0
- package/packages/memory/src/store.ts +173 -0
- package/packages/modes/CHANGELOG.md +104 -0
- package/packages/modes/CONTRIBUTING.md +7 -0
- package/packages/modes/LICENSE +21 -0
- package/packages/modes/README.md +174 -0
- package/packages/modes/SECURITY.md +17 -0
- package/packages/modes/package.json +55 -0
- package/packages/modes/skills/review-permissions/SKILL.md +54 -0
- package/packages/modes/src/bash.ts +218 -0
- package/packages/modes/src/deny-off.ts +62 -0
- package/packages/modes/src/git-safety.ts +72 -0
- package/packages/modes/src/index.ts +338 -0
- package/packages/modes/src/interview.ts +206 -0
- package/packages/modes/src/judge-gate.ts +113 -0
- package/packages/modes/src/modes.ts +121 -0
- package/packages/modes/src/review/apply.mjs +156 -0
- package/packages/modes/src/review/collect.mjs +208 -0
- package/packages/modes/src/review/tools.ts +71 -0
- package/packages/modes/src/sandbox.ts +37 -0
- package/packages/router/CHANGELOG.md +8 -0
- package/packages/router/LICENSE +21 -0
- package/packages/router/README.md +90 -0
- package/packages/router/package.json +51 -0
- package/packages/router/src/config.ts +65 -0
- package/packages/router/src/index.ts +172 -0
- package/packages/router/src/judge.ts +51 -0
- package/packages/router/src/route.ts +67 -0
- package/packages/web/CHANGELOG.md +36 -0
- package/packages/web/LICENSE +21 -0
- package/packages/web/README.md +87 -0
- package/packages/web/SECURITY.md +13 -0
- package/packages/web/package.json +59 -0
- package/packages/web/src/config.ts +109 -0
- package/packages/web/src/dnsfilter.ts +97 -0
- package/packages/web/src/extract.ts +65 -0
- package/packages/web/src/index.ts +217 -0
- package/packages/web/src/markdown.ts +122 -0
- package/packages/web/src/net.ts +109 -0
- package/packages/web/src/reader.ts +73 -0
- package/packages/web/src/sanitize.ts +50 -0
- package/packages/web/src/search.ts +76 -0
- package/packages/web/src/secrets.ts +22 -0
- package/packages/web/src/validate.ts +186 -0
- package/src/index.ts +156 -0
- package/src/settings.ts +79 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.2.0]
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- `/clear` clears the conversation and starts a new session.
|
|
8
|
+
- `/security-review` reviews your changes for security problems.
|
|
9
|
+
- Your messages keep the color of the mode you sent them in, and name it unless it's `normal`.
|
|
10
|
+
|
|
11
|
+
### Changes
|
|
12
|
+
|
|
13
|
+
- Board notices now show at the bottom of the screen, go away by themselves, and no longer move the list.
|
|
14
|
+
- Deleting a session on the board moves the cursor up one in the same group instead of to the top.
|
|
15
|
+
- Fewer outside packages run inside Pi. The parts of `@adeildo/pi-kit` that frame uses are now a copy in `packages/frame/src/kit`, while word diffs and page-to-Markdown are our own code in place of `diff` and `turndown`. Removing `c8`, used only for a coverage script, clears the open `minimatch` alert.
|
|
16
|
+
|
|
17
|
+
## [0.1.0]
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
- One package for `pi-modes`, `pi-router`, `pi-web`, `pi-memory`, `pi-frame` and `pi-board`, with their history.
|
|
22
|
+
- `/suite` and `~/.pi/agent/suite.json` turn each part on or off.
|
|
23
|
+
- `router/auto`, a new virtual model. The other parts now work with it: `modes` shares the mode, `web` asks it for a reader, `frame` shows which model answered, and `/router` sets the judge's model.
|
|
24
|
+
|
|
25
|
+
### Changes
|
|
26
|
+
|
|
27
|
+
- In `plan` and `read-only`, `todo`, `ask_questions`, `web_fetch` and `web_search` are only allowed from pi-suite itself.
|
|
28
|
+
- If `modes` fails to load, Pi stops rather than running without it.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Hüseyin Sönmez
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,89 @@
|
|
|
1
|
-
#
|
|
1
|
+
# pi-suite
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
One package for [Pi](https://pi.dev): modes and permissions, a framed screen, a board of agent sessions, long-term memory, web tools with a separate page reader, and a model router. Everything is on until you turn it off.
|
|
4
|
+
|
|
5
|
+
| Part | What it adds | Details |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| `modes` | `plan`, `auto`, `read-only` and `yolo` modes, plan approval, and interviews with `ask_questions` | [README](packages/modes/README.md) |
|
|
8
|
+
| `router` | `router/auto`: one model to plan, another to build, and one each for the page reader, the judge and subagents | [README](packages/router/README.md) |
|
|
9
|
+
| `web` | `web_fetch` and `web_search`, with pages read by a separate model that has no tools | [README](packages/web/README.md) |
|
|
10
|
+
| `memory` | Memory the agent keeps between sessions | [README](packages/memory/README.md) |
|
|
11
|
+
| `frame` | The start card, framed editor, tool boxes, footer and the agent's todo list | [README](packages/frame/README.md) |
|
|
12
|
+
| `board` | A board for starting, watching and attaching to background sessions | [README](packages/board/README.md) |
|
|
13
|
+
| `commands` | `/clear` and `/security-review` | [README](packages/commands/README.md) |
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
Requires Pi 1.5 or newer.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pi install npm:@huseynsnmz/pi-suite@0.2.0
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
If you installed any of these separately, remove them first:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pi remove npm:@huseynsnmz/pi-board
|
|
27
|
+
pi remove npm:@huseynsnmz/pi-frame
|
|
28
|
+
pi remove npm:@huseynsnmz/pi-memory
|
|
29
|
+
pi remove npm:@huseynsnmz/pi-modes
|
|
30
|
+
pi remove npm:@huseynsnmz/pi-web
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Pi won't start if two packages add a tool with the same name, and `/suite` can't help at that point. So if another package also has a `todo`, `web_fetch` or `memory_add` tool, or you get a conflict error, add the part to `~/.pi/agent/suite.json` by hand, or remove the other package.
|
|
34
|
+
|
|
35
|
+
Your settings carry over, since each part still reads its own config file.
|
|
36
|
+
|
|
37
|
+
If you use `@gotgenes/pi-permission-system`, move pi-suite above it in `packages` in `~/.pi/agent/settings.json`. `pi install` adds packages last, and otherwise you may be asked to approve an action that `plan` or `read-only` then blocks. With `pi-sandbox`, keep pi-suite first in `packages`, or `yolo` will refuse to start.
|
|
38
|
+
|
|
39
|
+
## Turning parts off
|
|
40
|
+
|
|
41
|
+
| Command | What it does |
|
|
42
|
+
|---|---|
|
|
43
|
+
| `/suite` | A list to turn parts on and off |
|
|
44
|
+
| `/suite list` | What's on now, and what changes after a reload |
|
|
45
|
+
| `/suite off board` | Turn one part off |
|
|
46
|
+
| `/suite on board` | Turn one part back on |
|
|
47
|
+
|
|
48
|
+
Changes apply after a reload, which `/suite` offers to do. They're saved in `~/.pi/agent/suite.json`, which you can also edit:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{ "off": ["board", "web"] }
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
A part that's off isn't loaded at all, so it adds no tools, skills, prompts or start-up time. If the file has a mistake, everything stays on and Pi tells you, so a typo can't quietly turn off plan mode.
|
|
55
|
+
|
|
56
|
+
`modes` is treated differently, because it enforces plan and read-only:
|
|
57
|
+
|
|
58
|
+
- Turning it off asks first, and is refused where nobody can answer, as in `pi -p`.
|
|
59
|
+
- While it's off, every session says so.
|
|
60
|
+
- If it fails to load, Pi stops instead of running without it. Any other part that fails is reported, and the rest carry on.
|
|
61
|
+
- In `plan` and `read-only`, `todo`, `ask_questions`, `web_fetch` and `web_search` are only allowed from pi-suite itself, so another package's tools with those names are blocked there.
|
|
62
|
+
|
|
63
|
+
Parts work on their own and use each other when they're on. With `modes` off, for example, `router` only goes by the first edit. With `router` off, `web` reads pages with the session's model.
|
|
64
|
+
|
|
65
|
+
## Good to know
|
|
66
|
+
|
|
67
|
+
- **All parts share one version.** A fix to one part means a new version of the whole package.
|
|
68
|
+
- **Load order is per package.** Every part loads where pi-suite is listed in `packages`. `modes` wants that to be first, while `pi-claude-code-ui` has to be listed before `frame`, so they can't both get their way. If you use `pi-claude-code-ui`, see [frame's notes](packages/frame/README.md#using-it-with-other-extensions).
|
|
69
|
+
- **Pi counts it as one extension.** The start card lists `pi-suite` rather than each part.
|
|
70
|
+
- **`board` on Linux is untested.** It uses `node-pty`, which has no Linux build in its package and needs its install script. The rest of the suite should still load without it.
|
|
71
|
+
|
|
72
|
+
## Security limits
|
|
73
|
+
|
|
74
|
+
Each part has its own limits, listed in its README or `SECURITY.md`. None of this is a sandbox. Use a container for repositories you don't trust.
|
|
75
|
+
|
|
76
|
+
## Credits
|
|
77
|
+
|
|
78
|
+
`frame` started as a fork of [`@adeildo/pi-look`](https://github.com/felipeadeildo/pi-harness/tree/main/packages/look) by adeildo, and `board` as a fork of [`@zhuxixi/pi-agent-board`](https://github.com/zhuxixi/pi-agent-board). Their licenses are in each folder.
|
|
79
|
+
|
|
80
|
+
## Development
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npm install --ignore-scripts
|
|
84
|
+
npm run check
|
|
85
|
+
npm test
|
|
86
|
+
npm run test:e2e
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Each part keeps its own tests under `packages/<part>/test`. `frame` needs [bun](https://bun.sh) for its unit tests. `npm run test:e2e` drives real Pi in a real terminal with a fake model.
|
package/SECURITY.md
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,114 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huseynsnmz/pi-suite",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "One Pi package for all of it: modes and permissions, a framed screen, an agent board, memory, web tools with a separate page reader, and a model router. Turn off what you don't want with /suite.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Hüseyin Sönmez",
|
|
9
|
+
"email": "huseyin@snmz.org",
|
|
10
|
+
"url": "https://github.com/huseynsnmz"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"pi-package",
|
|
14
|
+
"pi-extension"
|
|
15
|
+
],
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/huseynsnmz/pi-suite.git"
|
|
19
|
+
},
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"workspaces": [
|
|
24
|
+
"packages/*"
|
|
25
|
+
],
|
|
26
|
+
"files": [
|
|
27
|
+
"src",
|
|
28
|
+
"README.md",
|
|
29
|
+
"CHANGELOG.md",
|
|
30
|
+
"LICENSE",
|
|
31
|
+
"packages/commands/src",
|
|
32
|
+
"packages/commands/package.json",
|
|
33
|
+
"packages/commands/README.md",
|
|
34
|
+
"packages/commands/LICENSE",
|
|
35
|
+
"packages/board/src",
|
|
36
|
+
"packages/board/runner",
|
|
37
|
+
"packages/board/docs",
|
|
38
|
+
"packages/board/package.json",
|
|
39
|
+
"packages/board/README.md",
|
|
40
|
+
"packages/board/LICENSE",
|
|
41
|
+
"packages/frame/src",
|
|
42
|
+
"packages/frame/docs",
|
|
43
|
+
"packages/frame/package.json",
|
|
44
|
+
"packages/frame/README.md",
|
|
45
|
+
"packages/frame/LICENSE",
|
|
46
|
+
"packages/memory/src",
|
|
47
|
+
"packages/memory/skills",
|
|
48
|
+
"packages/memory/package.json",
|
|
49
|
+
"packages/memory/README.md",
|
|
50
|
+
"packages/memory/LICENSE",
|
|
51
|
+
"packages/modes/src",
|
|
52
|
+
"packages/modes/skills",
|
|
53
|
+
"packages/modes/package.json",
|
|
54
|
+
"packages/modes/README.md",
|
|
55
|
+
"packages/modes/LICENSE",
|
|
56
|
+
"packages/router/src",
|
|
57
|
+
"packages/router/package.json",
|
|
58
|
+
"packages/router/README.md",
|
|
59
|
+
"packages/router/LICENSE",
|
|
60
|
+
"packages/web/src",
|
|
61
|
+
"packages/web/package.json",
|
|
62
|
+
"packages/web/README.md",
|
|
63
|
+
"packages/web/LICENSE",
|
|
64
|
+
"SECURITY.md",
|
|
65
|
+
"packages/board/SECURITY.md",
|
|
66
|
+
"packages/board/CONTRIBUTING.md",
|
|
67
|
+
"packages/board/CHANGELOG.md",
|
|
68
|
+
"packages/frame/SECURITY.md",
|
|
69
|
+
"packages/frame/CONTRIBUTING.md",
|
|
70
|
+
"packages/frame/CHANGELOG.md",
|
|
71
|
+
"packages/memory/SECURITY.md",
|
|
72
|
+
"packages/memory/CONTRIBUTING.md",
|
|
73
|
+
"packages/modes/SECURITY.md",
|
|
74
|
+
"packages/modes/CONTRIBUTING.md",
|
|
75
|
+
"packages/modes/CHANGELOG.md",
|
|
76
|
+
"packages/router/CHANGELOG.md",
|
|
77
|
+
"packages/web/SECURITY.md",
|
|
78
|
+
"packages/web/CHANGELOG.md"
|
|
79
|
+
],
|
|
80
|
+
"pi": {
|
|
81
|
+
"extensions": [
|
|
82
|
+
"./src/index.ts"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"engines": {
|
|
86
|
+
"node": ">=22.18"
|
|
87
|
+
},
|
|
88
|
+
"scripts": {
|
|
89
|
+
"check": "tsc --noEmit && npm run --workspaces --if-present check && npm run -w packages/board typecheck",
|
|
90
|
+
"test": "node --test test/*.test.ts && npm run --workspaces --if-present test",
|
|
91
|
+
"test:e2e": "python3 test/e2e/run.py"
|
|
92
|
+
},
|
|
93
|
+
"dependencies": {
|
|
94
|
+
"@xterm/headless": "6.0.0",
|
|
95
|
+
"node-pty": "1.1.0",
|
|
96
|
+
"@mozilla/readability": "0.6.0",
|
|
97
|
+
"linkedom": "0.18.12"
|
|
98
|
+
},
|
|
99
|
+
"peerDependencies": {
|
|
100
|
+
"@earendil-works/pi-ai": ">=1.5.0",
|
|
101
|
+
"@earendil-works/pi-coding-agent": ">=1.5.0",
|
|
102
|
+
"@earendil-works/pi-tui": ">=1.5.0",
|
|
103
|
+
"typebox": "*"
|
|
104
|
+
},
|
|
105
|
+
"devDependencies": {
|
|
106
|
+
"@earendil-works/pi-ai": "1.5.0",
|
|
107
|
+
"@earendil-works/pi-coding-agent": "1.5.0",
|
|
108
|
+
"@earendil-works/pi-tui": "1.5.0",
|
|
109
|
+
"@types/bun": "1.4.4",
|
|
110
|
+
"@types/node": "26.6.6",
|
|
111
|
+
"typebox": "1.4.3",
|
|
112
|
+
"typescript": "7.0.2"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.18.2] - 2026-11-04
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
|
|
7
|
+
- **attach**: a session past about 85 frames opens at once instead of showing Loading for 2.5s, or 5.5s at a new size, and it follows resizes again. It stopped proving its frames when an internal log filled up. Sessions need a restart to pick this up, since the fix runs inside them
|
|
8
|
+
- **attach**: sessions fill screens wider than 300 columns or taller than 120 rows
|
|
9
|
+
- **attach**: a big frame no longer shows `���` and wraps a row when a read ends halfway through a character. Pasted text gets the same fix
|
|
10
|
+
|
|
11
|
+
## [0.18.1] - 2026-11-04
|
|
12
|
+
|
|
13
|
+
### Fixes
|
|
14
|
+
|
|
15
|
+
- **keys**: `Ctrl+Z` puts Pi in the background from the board and from an attached session. It did nothing on the board, and in an attached session it stopped that session's screen, so it no longer took input
|
|
16
|
+
|
|
17
|
+
## [0.18.0] - 2026-11-04
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
- **board**: a new task starts in the selected session's folder, and the input's title shows which
|
|
22
|
+
|
|
23
|
+
### Fixes
|
|
24
|
+
|
|
25
|
+
- **attach**: reattaching at a new window size, or resizing during an attach, no longer sticks on "waiting for the session to render"
|
|
26
|
+
- **attach**: a session that redraws for a resize without proving it finished gets resized away and back, so the attach can't hang
|
|
27
|
+
- **keys**: the board and attached sessions get every key. Shift+Tab reached the Pi behind them, where `pi-modes` changed its permission mode
|
|
28
|
+
- **launch**: after choosing a folder, Enter starts the session rather than opening the picker again
|
|
29
|
+
- **security**: only `http` and `https` links open on click, since `open` also starts apps from other schemes
|
|
30
|
+
- **security**: session output can no longer start an iTerm2 file download, only show an inline image
|
|
31
|
+
- **security**: the board's folder is private to you, as it holds transcripts and screen logs
|
|
32
|
+
|
|
33
|
+
### Performance
|
|
34
|
+
|
|
35
|
+
- **attach**: frames that answer a key or the wheel paint as soon as they're whole. A wheel notch took 58 ms in testing, and now takes 17 ms
|
|
36
|
+
|
|
37
|
+
## [0.17.0] - 2026-11-04
|
|
38
|
+
|
|
39
|
+
### Features
|
|
40
|
+
|
|
41
|
+
- **keys**: `/` opens Pi's commands, with the usual menu. Commands run in the Pi the board was opened from; templates and skills start a session
|
|
42
|
+
- **keys**: `Ctrl+C` twice quits Pi from the board and from an attached session, and leaves background sessions running
|
|
43
|
+
|
|
44
|
+
### Changes
|
|
45
|
+
|
|
46
|
+
- **keys**: `Ctrl+F` is now the only way to filter
|
|
47
|
+
|
|
48
|
+
## [0.16.0] - 2026-11-04
|
|
49
|
+
|
|
50
|
+
### Features
|
|
51
|
+
|
|
52
|
+
- **keys**: `Alt+1..9` counts the rows in the selected session's folder
|
|
53
|
+
|
|
54
|
+
### Fixes
|
|
55
|
+
|
|
56
|
+
- **replies**: a reply during a permission prompt now waits in the queue. Sent straight to the session, its Enter could approve the prompt (from 0.15.1)
|
|
57
|
+
|
|
58
|
+
### Changes
|
|
59
|
+
|
|
60
|
+
- **repo**: its own repository, with new docs and without the original's plans and release tooling
|
|
61
|
+
|
|
62
|
+
## [0.15.3] - 2026-11-04
|
|
63
|
+
|
|
64
|
+
### Fixes
|
|
65
|
+
|
|
66
|
+
- **state**: Pi no longer crashes on `/new`, `/resume`, `/fork` or `/reload` (from 0.15.0)
|
|
67
|
+
|
|
68
|
+
## [0.15.2] - 2026-11-04
|
|
69
|
+
|
|
70
|
+
### Changes
|
|
71
|
+
|
|
72
|
+
- **deps**: exact versions everywhere, with Pi 1.5.0, TypeScript 7 and @types/node 26 for development
|
|
73
|
+
- **deps**: remove the postinstall script, since Pi 1.5.0 no longer ships the versions it patched
|
|
74
|
+
|
|
75
|
+
## [0.15.1] - 2026-11-04
|
|
76
|
+
|
|
77
|
+
### Features
|
|
78
|
+
|
|
79
|
+
- **keys**: `Ctrl+S` groups by directory, `Shift+Up` and `Shift+Down` reorder, `Ctrl+G` opens your editor
|
|
80
|
+
- **state**: a session waiting on a permission prompt or other dialog shows as `Needs answer`
|
|
81
|
+
|
|
82
|
+
## [0.15.0] - 2026-11-04
|
|
83
|
+
|
|
84
|
+
### Features
|
|
85
|
+
|
|
86
|
+
- **keys**: typing starts a task with no key first, and the keys follow Claude Code's agent view
|
|
87
|
+
- **board**: `Left` twice puts the session you're in on the board, so you can come back to it
|
|
88
|
+
- **config**: settings move to `~/.pi/agent/extensions/pi-board/config.json`
|
|
89
|
+
- **model**: `/board-model` chooses the helper model, which is now off until you choose one
|
|
90
|
+
- **ui**: drawn with frames and Pi's theme colors, to match pi-frame
|
|
91
|
+
|
|
92
|
+
## [0.14.0] - 2026-11-04
|
|
93
|
+
|
|
94
|
+
First release of `@huseynsnmz/pi-board`, a fork of `@zhuxixi/pi-agent-board` 0.13.1.
|
|
95
|
+
|
|
96
|
+
### Features
|
|
97
|
+
|
|
98
|
+
- **dispatch**: `Enter` starts a task right away; `Ctrl+N` while typing opens the Start session dialog
|
|
99
|
+
- **board**: `Left` twice on an empty prompt opens the board
|
|
100
|
+
- **board**: announce `agent-board:closed`, so an extension can draw its header and footer again
|
|
101
|
+
|
|
102
|
+
## [0.13.1] - 2026-10-28
|
|
103
|
+
|
|
104
|
+
### Fixes
|
|
105
|
+
|
|
106
|
+
- **attach**: clear the fullscreen selection highlight after copy-on-release (issue #172) (#251)
|
|
107
|
+
- **coordinator**: self-supervise the endpoint and restore the #70 cleanup gate (issue #255) (#256)
|
|
108
|
+
|
|
109
|
+
### Changes
|
|
110
|
+
|
|
111
|
+
- **ui**: align SELECT hints, help overlay and ! wording with the handler (issue #252) (#253)
|
|
112
|
+
- sync key hints with the implemented bindings — peek footer, README ! rows, multi-select table (issue #245) (#249)
|
|
113
|
+
|
|
114
|
+
[0.13.1]: https://github.com/zhuxixi/pi-agent-board/compare/v0.13.0...v0.13.1
|
|
115
|
+
|
|
116
|
+
## [0.13.0] - 2026-10-26
|
|
117
|
+
|
|
118
|
+
### Features
|
|
119
|
+
|
|
120
|
+
- **ui**: vim-style j/k/l board keys — j/k navigate, l attaches (issue #229) (#237)
|
|
121
|
+
- **ui**: paint the selected board row with selectedBg (issue #231) (#233)
|
|
122
|
+
|
|
123
|
+
### Fixes
|
|
124
|
+
|
|
125
|
+
- **coordinator**: verify lease identity before signalling (issue #239) (#247)
|
|
126
|
+
- **dashboard**: keep selected rows visible beside scroll markers (#226)
|
|
127
|
+
- **attach**: render cells that only carry a background (#235)
|
|
128
|
+
- **coordinator**: root-vanished self-exit and suite leak gate (issue #241) (#244)
|
|
129
|
+
- **host**: unify process identity tokens and produce them on win32 (issue #238) (#243)
|
|
130
|
+
- **host**: keep warm hosts alive while a background workflow run is active (issue #230) (#242)
|
|
131
|
+
- **host**: corroborate unverified process identity to unstick pid-reuse recovery (issue #217) (#240)
|
|
132
|
+
- **lease**: reclaim stale coordinator leases by heartbeat instead of pid liveness (issue #224) (#236)
|
|
133
|
+
- keep foreground rows monotonic across out-of-order state writes (#228)
|
|
134
|
+
- recognize ask_user_question and questionnaire-shaped tools as pending questions (#223)
|
|
135
|
+
|
|
136
|
+
[0.13.0]: https://github.com/zhuxixi/pi-agent-board/compare/v0.12.1...v0.13.0
|
|
137
|
+
|
|
138
|
+
## [0.12.1] - 2026-10-20
|
|
139
|
+
|
|
140
|
+
### Fixes
|
|
141
|
+
|
|
142
|
+
- **release**: collapse repeated trailing PR refs in CHANGELOG entries (#218)
|
|
143
|
+
- **attach**: keep the Alt modifier on the forwarded wheel report (#216)
|
|
144
|
+
- **attach**: stop the reply guard swallowing kitty/modifyOtherKeys PageDown (#215)
|
|
145
|
+
|
|
146
|
+
### Changes
|
|
147
|
+
|
|
148
|
+
- **attach**: tidy the mouse-enable helper placement and comment indent (#209)
|
|
149
|
+
|
|
150
|
+
[0.12.1]: https://github.com/zhuxixi/pi-agent-board/compare/v0.12.0...v0.12.1
|
|
151
|
+
|
|
152
|
+
## [0.12.0] - 2026-10-19
|
|
153
|
+
|
|
154
|
+
### Features
|
|
155
|
+
|
|
156
|
+
- **attach**: ctrl+x in-place delete confirm — archive from the attach view (#193)
|
|
157
|
+
|
|
158
|
+
### Fixes
|
|
159
|
+
|
|
160
|
+
- **attach**: re-assert the fullscreen mouse mode when the attach view opens (#208) (#208)
|
|
161
|
+
- **attach**: stop spending wheel notches on snapshot-hydration scrollback (#206)
|
|
162
|
+
- **attach**: decode the X10 mouse release code as release (#200) (#200)
|
|
163
|
+
- **attach**: classify a motion-less legacy drag by screen geometry (#202)
|
|
164
|
+
- **attach**: dispatch mixed input reads per segment and pass terminal reports through (issue #189) (#196)
|
|
165
|
+
- **attach**: forward the fullscreen wheel whenever the local viewport cannot move (#199)
|
|
166
|
+
- **attach**: stop terminal reply fragments leaking into the attached child's input (#194)
|
|
167
|
+
- **attach**: forward the fullscreen wheel to alternate-screen children (#190)
|
|
168
|
+
- **attach**: scroll the fullscreen wheel in the attach viewport (#183)
|
|
169
|
+
|
|
170
|
+
### Changes
|
|
171
|
+
|
|
172
|
+
- **attach**: gate the alt-wheel scenario on the child's first frame (#204)
|
|
173
|
+
- accept-registration race — echo-probe waits, flake postmortems, load-independent repro (#192) (#192)
|
|
174
|
+
- **attach**: keep the A5 burst inside the snapshot frame window and pin the window contract (#191)
|
|
175
|
+
|
|
176
|
+
[0.12.0]: https://github.com/zhuxixi/pi-agent-board/compare/v0.11.1...v0.12.0
|
|
177
|
+
|
|
178
|
+
## [0.11.1] - 2026-10-13
|
|
179
|
+
|
|
180
|
+
### Fixes
|
|
181
|
+
|
|
182
|
+
- **attach**: defer color-scheme reports until child input is ready (#180)
|
|
183
|
+
|
|
184
|
+
[0.11.1]: https://github.com/zhuxixi/pi-agent-board/compare/v0.11.0...v0.11.1
|
|
185
|
+
|
|
186
|
+
## [0.11.0] - 2026-10-12
|
|
187
|
+
|
|
188
|
+
### Features
|
|
189
|
+
|
|
190
|
+
- **attach**: mirror pi's fullscreen selection into X11 PRIMARY + paste-source override (#177)
|
|
191
|
+
|
|
192
|
+
[0.11.0]: https://github.com/zhuxixi/pi-agent-board/compare/v0.10.2...v0.11.0
|
|
193
|
+
|
|
194
|
+
## [0.10.2] - 2026-10-10
|
|
195
|
+
|
|
196
|
+
### Fixes
|
|
197
|
+
|
|
198
|
+
- **attach**: stop writing outer-terminal mouse mode in fullscreen TUI (#173)
|
|
199
|
+
- **attach**: middle-click paste via handleMouse under pi >=1.0 fullscreen TUI (#171)
|
|
200
|
+
- **attach**: deliver terminal color scheme at settle via feature-detected probe API (#166)
|
|
201
|
+
- **attach**: prevent startup background replies from echoing in the PTY (#165) (#165)
|
|
202
|
+
|
|
203
|
+
[0.10.2]: https://github.com/zhuxixi/pi-agent-board/compare/v0.10.1...v0.10.2
|
|
204
|
+
|
|
205
|
+
## [0.10.1] - 2026-10-01
|
|
206
|
+
|
|
207
|
+
### Fixes
|
|
208
|
+
|
|
209
|
+
- **attach**: prevent stale hyperlink IDs from leaking across cells (#158)
|
|
210
|
+
|
|
211
|
+
[0.10.1]: https://github.com/zhuxixi/pi-agent-board/compare/v0.10.0...v0.10.1
|
|
212
|
+
|
|
213
|
+
## [0.10.0] - 2026-10-01
|
|
214
|
+
|
|
215
|
+
### Features
|
|
216
|
+
|
|
217
|
+
- **ui**: x then y confirms session deletion (issue #150) (#152)
|
|
218
|
+
- 8th semantic state holding + manual-fence lift on interactive input (issue #145) (#151)
|
|
219
|
+
|
|
220
|
+
### Fixes
|
|
221
|
+
|
|
222
|
+
- **ci**: read the dispatch recovery tag from inputs, not the ref name (issue #154) (#156)
|
|
223
|
+
- job-runner boot-window stop loss + dead-run reconcile convergence (issue #153) (#155)
|
|
224
|
+
- **attach**: answer the color-scheme query client-side for attached sessions (issue #148) (#149)
|
|
225
|
+
|
|
226
|
+
### Changes
|
|
227
|
+
|
|
228
|
+
- probe knob guard uses the production-default floor, not a jitter-prone absolute bound (issue #95) (#159)
|
|
229
|
+
- flake postmortems, budget audit gate, ladder knobs (issue #95 F3-F4) (#157)
|
|
230
|
+
|
|
231
|
+
[0.10.0]: https://github.com/zhuxixi/pi-agent-board/compare/v0.9.0...v0.10.0
|
|
232
|
+
|
|
233
|
+
## [0.9.0] - 2026-09-25
|
|
234
|
+
|
|
235
|
+
### Features
|
|
236
|
+
|
|
237
|
+
- **attach**: forward terminal queries to the real terminal — automatic theme works in attach sessions (issue #128) (#138)
|
|
238
|
+
- **attach**: unconditional Ctrl+\ detach key, terminal-independent (issue #126) (#137)
|
|
239
|
+
|
|
240
|
+
### Fixes
|
|
241
|
+
|
|
242
|
+
- **runner**: probes leave attachedClients at hello (issue #130) (#142)
|
|
243
|
+
- browse-mode Tab completes and drills down directories in cwd picker (issue #127) (#141)
|
|
244
|
+
|
|
245
|
+
### Changes
|
|
246
|
+
|
|
247
|
+
- **release**: orchestrate releases and publish from CI (#144)
|
|
248
|
+
- control-reconcile flaky assertions — windowed recorder + invariant realignment (issue #140) (#143)
|
|
249
|
+
- **attach**: scope A5 mid-stream seq assertion to post-snapshot window (issue #132) (#139)
|
|
250
|
+
|
|
251
|
+
[0.9.0]: https://github.com/zhuxixi/pi-agent-board/compare/v0.8.0...v0.9.0
|
|
252
|
+
|
|
253
|
+
## [0.8.0] - 2026-09-23
|
|
254
|
+
|
|
255
|
+
### Features
|
|
256
|
+
|
|
257
|
+
- **attach**: detach gate reads only editor_state — delete buffer heuristics (issue #91 phase 6, D1) (#135)
|
|
258
|
+
- control command lifecycle — staged acks, durable journal, reconcile, generation token (issue #91 phase 5, D4) (#134)
|
|
259
|
+
- switch attach to snapshot+subscribe with legacy fallback (issue #91 phase 4, D2 closure) (#122)
|
|
260
|
+
- canonical terminal model and capture-and-subscribe protocol (issue #91 phase 3, D2+D5) (#117)
|
|
261
|
+
- reader-side revision consistency, beat bootstrap, and paired-revision invariant (issue #91, D3 arc closure) (#111)
|
|
262
|
+
|
|
263
|
+
### Fixes
|
|
264
|
+
|
|
265
|
+
- **attach**: editor-shaped ← detach anchor + restore the editor-state reporter endpoint (issue #103) (#119)
|
|
266
|
+
- **paths**: normalize root before hashing the win32 coordinator pipe name (issue #124) (#125)
|
|
267
|
+
- **locks**: reclaim Windows lease orphans on publish-rename EPERM (issue #114) (#123)
|
|
268
|
+
- **attach**: stop painting the PTY cursor block when the child hides it (issue #102) (#120)
|
|
269
|
+
- **attach**: learn TUI frame cognition in terminal chain states (issue #106) (#118)
|
|
270
|
+
- **host**: reclaim orphaned host-meta locks and add contention diagnostics (issue #112) (#116)
|
|
271
|
+
- foreground preview read-your-writes cache for coordinator write races (issue #113) (#115)
|
|
272
|
+
|
|
273
|
+
### Changes
|
|
274
|
+
|
|
275
|
+
- move the A11 perf gate out of coverage instrumentation (issue #121) (#133)
|
|
276
|
+
|
|
277
|
+
[0.8.0]: https://github.com/zhuxixi/pi-agent-board/compare/v0.7.0...v0.8.0
|
|
278
|
+
|
|
279
|
+
## [0.7.0] - 2026-09-10
|
|
280
|
+
|
|
281
|
+
### Features
|
|
282
|
+
|
|
283
|
+
- runtime cursor desync detect + rate-limited heal (issue #11) (#105)
|
|
284
|
+
- detached View State Coordinator as single writer for state/status (issue #91, phase 1+2a) (#104)
|
|
285
|
+
|
|
286
|
+
### Fixes
|
|
287
|
+
|
|
288
|
+
- **coordinator**: protocol version gate replaces stale coordinators on extension updates (issue #108) (#109)
|
|
289
|
+
|
|
290
|
+
### Changes
|
|
291
|
+
|
|
292
|
+
- route all remaining state writes through the View State Coordinator (issue #91, phase 2b) (#107)
|
|
293
|
+
|
|
294
|
+
[0.7.0]: https://github.com/zhuxixi/pi-agent-board/compare/v0.6.2...v0.7.0
|
|
295
|
+
|
|
296
|
+
## [0.6.2] - 2026-09-09
|
|
297
|
+
|
|
298
|
+
### Fixes
|
|
299
|
+
|
|
300
|
+
- **host**: claim role no longer blocks terminal host replacement (#99) (#100)
|
|
301
|
+
|
|
302
|
+
[0.6.2]: https://github.com/zhuxixi/pi-agent-board/compare/v0.6.1...v0.6.2
|
|
303
|
+
|
|
304
|
+
## [0.6.1] - 2026-09-08
|
|
305
|
+
|
|
306
|
+
### Fixes
|
|
307
|
+
|
|
308
|
+
- add an unconditional Ctrl+Left detach chord to the attach surface (issue #89) (#97)
|
|
309
|
+
- force full-clear repaint on dashboard mount and content shrink (issue #88) (#96)
|
|
310
|
+
- fail host launch fast on a provably stale defaultModel + exit attribution (issue #90) (#94)
|
|
311
|
+
- finalize provably-dead legacy hosts in attach resolver and self-heal (issue #87) (#93)
|
|
312
|
+
- swallow async spawn errors in detached runner launches (issue #86) (#92)
|
|
313
|
+
|
|
314
|
+
[0.6.1]: https://github.com/zhuxixi/pi-agent-board/compare/v0.6.0...v0.6.1
|
|
315
|
+
|
|
316
|
+
## [0.6.0] - 2026-09-07
|
|
317
|
+
|
|
318
|
+
### Features
|
|
319
|
+
|
|
320
|
+
- conventional-commit driven CHANGELOG via release_helper.mjs (issue #64) (#83)
|
|
321
|
+
|
|
322
|
+
### Fixes
|
|
323
|
+
|
|
324
|
+
- pty host stacking and control.sock cross-deletion via per-instance ownership protocol (issue #70) (#84)
|
|
325
|
+
- guard mention fallback against placeholders, code spans, and pr-context (issue #61) (#82)
|
|
326
|
+
- truncate never splits surrogate pairs or emits lone surrogates (issue #39) (#81)
|
|
327
|
+
- extract evidence outputPreview from AgentToolResult content (issue #41) (#77)
|
|
328
|
+
- reclaim idle warm PTY hosts via periodic sweep + lifecycle cleanup (issue #75) (#76)
|
|
329
|
+
- narrow code-refs PR back-link extraction by evidence context (issue #65) (#73)
|
|
330
|
+
|
|
331
|
+
### Performance
|
|
332
|
+
|
|
333
|
+
- use cached PTY probe on the reconcile drain path (issue #13) (#79)
|
|
334
|
+
|
|
335
|
+
### Changes
|
|
336
|
+
|
|
337
|
+
- Windows WezTerm IME needs a visible hardware cursor (issue #38) (#80)
|
|
338
|
+
- poll markCompleted to success instead of racing the persist window (issue #63) (#78)
|
|
339
|
+
|
|
340
|
+
[0.6.0]: https://github.com/zhuxixi/pi-agent-board/compare/v0.5.2...v0.6.0
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Issues are welcome. Pull requests are turned off, because this fork follows how its maintainer works and every line needs to be written and reviewed by them.
|
|
4
|
+
|
|
5
|
+
If you have a fix, open an issue that describes the problem and how to reproduce it. For a problem that also affects `@zhuxixi/pi-agent-board`, consider [reporting it there](https://github.com/zhuxixi/pi-agent-board/issues) too.
|
|
6
|
+
|
|
7
|
+
For security problems, follow [SECURITY.md](SECURITY.md) instead.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Pi Agent Board contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|