@gavin-hu/my-pi-agent 0.0.0-stage → 0.7.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.
Files changed (314) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +160 -2
  3. package/assets/bytefly-chrome.png +0 -0
  4. package/assets/bytefly.schema.json +769 -0
  5. package/assets/file-browse.png +0 -0
  6. package/assets/plan-review.png +0 -0
  7. package/extensions/bytefly/README.md +820 -0
  8. package/extensions/bytefly/doctor/commands.ts +68 -0
  9. package/extensions/bytefly/doctor/config.ts +47 -0
  10. package/extensions/bytefly/doctor/format.ts +188 -0
  11. package/extensions/bytefly/doctor/register.ts +54 -0
  12. package/extensions/bytefly/doctor/runtime.ts +87 -0
  13. package/extensions/bytefly/doctor/schema.ts +51 -0
  14. package/extensions/bytefly/doctor/tools.ts +113 -0
  15. package/extensions/bytefly/doctor/tui.ts +140 -0
  16. package/extensions/bytefly/footer/collect/entries.ts +137 -0
  17. package/extensions/bytefly/footer/collect/snapshot.ts +64 -0
  18. package/extensions/bytefly/footer/config.ts +35 -0
  19. package/extensions/bytefly/footer/price/config.ts +152 -0
  20. package/extensions/bytefly/footer/price/price.ts +59 -0
  21. package/extensions/bytefly/footer/price/rates.ts +54 -0
  22. package/extensions/bytefly/footer/price/schedule.ts +112 -0
  23. package/extensions/bytefly/footer/price/types.ts +53 -0
  24. package/extensions/bytefly/footer/register.ts +116 -0
  25. package/extensions/bytefly/footer/render/footer.ts +51 -0
  26. package/extensions/bytefly/footer/render/format.ts +106 -0
  27. package/extensions/bytefly/footer/render/layout.ts +139 -0
  28. package/extensions/bytefly/footer/render/lines.ts +50 -0
  29. package/extensions/bytefly/footer/render/segments.ts +281 -0
  30. package/extensions/bytefly/footer/render/status.ts +42 -0
  31. package/extensions/bytefly/footer/types.ts +104 -0
  32. package/extensions/bytefly/header/component.ts +112 -0
  33. package/extensions/bytefly/header/config.ts +77 -0
  34. package/extensions/bytefly/header/register.ts +53 -0
  35. package/extensions/bytefly/index.ts +48 -0
  36. package/extensions/bytefly/notify/config.ts +60 -0
  37. package/extensions/bytefly/notify/dispatch.ts +138 -0
  38. package/extensions/bytefly/notify/format.ts +39 -0
  39. package/extensions/bytefly/notify/register.ts +85 -0
  40. package/extensions/bytefly/notify/types.ts +28 -0
  41. package/extensions/bytefly/picker/commands.ts +73 -0
  42. package/extensions/bytefly/picker/discovery.ts +128 -0
  43. package/extensions/bytefly/picker/resources.ts +226 -0
  44. package/extensions/bytefly/picker/runtime.ts +108 -0
  45. package/extensions/bytefly/picker/toggle.ts +145 -0
  46. package/extensions/bytefly/picker/tui.ts +260 -0
  47. package/extensions/bytefly/picker/types.ts +55 -0
  48. package/extensions/bytefly/separator/component.ts +26 -0
  49. package/extensions/bytefly/separator/config.ts +24 -0
  50. package/extensions/bytefly/separator/format.ts +50 -0
  51. package/extensions/bytefly/separator/register.ts +42 -0
  52. package/extensions/bytefly/separator/types.ts +22 -0
  53. package/extensions/document/README.md +281 -0
  54. package/extensions/document/config.ts +58 -0
  55. package/extensions/document/extract/doc.ts +19 -0
  56. package/extensions/document/extract/docx.ts +18 -0
  57. package/extensions/document/extract/file.ts +45 -0
  58. package/extensions/document/extract/odt.ts +101 -0
  59. package/extensions/document/extract/pdf.ts +25 -0
  60. package/extensions/document/extract/rtf.ts +45 -0
  61. package/extensions/document/extract/vendor.d.ts +39 -0
  62. package/extensions/document/extract/xlsx.ts +88 -0
  63. package/extensions/document/formats.ts +59 -0
  64. package/extensions/document/index.ts +17 -0
  65. package/extensions/document/paging.ts +110 -0
  66. package/extensions/document/render.ts +105 -0
  67. package/extensions/document/schema.ts +50 -0
  68. package/extensions/document/tool.ts +152 -0
  69. package/extensions/file-browse/README.md +269 -0
  70. package/extensions/file-browse/client.ts +550 -0
  71. package/extensions/file-browse/config.ts +82 -0
  72. package/extensions/file-browse/files.ts +433 -0
  73. package/extensions/file-browse/fuzzy.ts +75 -0
  74. package/extensions/file-browse/git.ts +74 -0
  75. package/extensions/file-browse/html.ts +346 -0
  76. package/extensions/file-browse/icons.ts +119 -0
  77. package/extensions/file-browse/index.ts +149 -0
  78. package/extensions/file-browse/markdown.ts +592 -0
  79. package/extensions/file-browse/paths.ts +101 -0
  80. package/extensions/file-browse/router.ts +289 -0
  81. package/extensions/file-browse/server.ts +104 -0
  82. package/extensions/file-open/README.md +135 -0
  83. package/extensions/file-open/index.ts +93 -0
  84. package/extensions/file-open/open.ts +102 -0
  85. package/extensions/file-open/schema.ts +31 -0
  86. package/extensions/goal/README.md +241 -0
  87. package/extensions/goal/clarify-parse.ts +203 -0
  88. package/extensions/goal/clarify-prompt.ts +80 -0
  89. package/extensions/goal/clarify.ts +234 -0
  90. package/extensions/goal/commands.ts +220 -0
  91. package/extensions/goal/config.ts +35 -0
  92. package/extensions/goal/format.ts +111 -0
  93. package/extensions/goal/index.ts +77 -0
  94. package/extensions/goal/runtime.ts +90 -0
  95. package/extensions/goal/schema.ts +105 -0
  96. package/extensions/goal/state.ts +69 -0
  97. package/extensions/goal/tools.ts +136 -0
  98. package/extensions/goal/tui.ts +97 -0
  99. package/extensions/goal/types.ts +42 -0
  100. package/extensions/job/README.md +309 -0
  101. package/extensions/job/commands.ts +74 -0
  102. package/extensions/job/config.ts +68 -0
  103. package/extensions/job/format.ts +256 -0
  104. package/extensions/job/index.ts +140 -0
  105. package/extensions/job/logs.ts +56 -0
  106. package/extensions/job/paths.ts +31 -0
  107. package/extensions/job/process.ts +106 -0
  108. package/extensions/job/registry.ts +265 -0
  109. package/extensions/job/reservations.ts +82 -0
  110. package/extensions/job/runtime.ts +846 -0
  111. package/extensions/job/schema.ts +148 -0
  112. package/extensions/job/session.ts +116 -0
  113. package/extensions/job/status.ts +69 -0
  114. package/extensions/job/store.ts +103 -0
  115. package/extensions/job/tools.ts +295 -0
  116. package/extensions/job/tui.ts +486 -0
  117. package/extensions/job/types.ts +92 -0
  118. package/extensions/job/ui.ts +99 -0
  119. package/extensions/job/waiters.ts +46 -0
  120. package/extensions/memory/README.md +221 -0
  121. package/extensions/memory/commands.ts +190 -0
  122. package/extensions/memory/config.ts +35 -0
  123. package/extensions/memory/errors.ts +9 -0
  124. package/extensions/memory/format.ts +141 -0
  125. package/extensions/memory/index.ts +59 -0
  126. package/extensions/memory/runtime.ts +199 -0
  127. package/extensions/memory/schema.ts +86 -0
  128. package/extensions/memory/store.ts +231 -0
  129. package/extensions/memory/tools.ts +165 -0
  130. package/extensions/memory/tui.ts +430 -0
  131. package/extensions/memory/types.ts +38 -0
  132. package/extensions/plan/README.md +417 -0
  133. package/extensions/plan/blocks.ts +197 -0
  134. package/extensions/plan/commands.ts +134 -0
  135. package/extensions/plan/feedback.ts +157 -0
  136. package/extensions/plan/git-bash.ts +320 -0
  137. package/extensions/plan/index.ts +179 -0
  138. package/extensions/plan/path-guard.ts +101 -0
  139. package/extensions/plan/plans.ts +267 -0
  140. package/extensions/plan/policy.ts +73 -0
  141. package/extensions/plan/runtime.ts +195 -0
  142. package/extensions/plan/steps.ts +228 -0
  143. package/extensions/plan/tools.ts +605 -0
  144. package/extensions/plan/tui.ts +391 -0
  145. package/extensions/plan/types.ts +67 -0
  146. package/extensions/plan/web-client.ts +433 -0
  147. package/extensions/plan/web-page.ts +169 -0
  148. package/extensions/plan/web-router.ts +155 -0
  149. package/extensions/plan/web.ts +267 -0
  150. package/extensions/question/README.md +189 -0
  151. package/extensions/question/answers.ts +119 -0
  152. package/extensions/question/dialogs.ts +109 -0
  153. package/extensions/question/index.ts +28 -0
  154. package/extensions/question/schema.ts +119 -0
  155. package/extensions/question/tools.ts +122 -0
  156. package/extensions/question/tui-state.ts +240 -0
  157. package/extensions/question/tui.ts +324 -0
  158. package/extensions/question/types.ts +61 -0
  159. package/extensions/rewind/README.md +202 -0
  160. package/extensions/rewind/commands.ts +74 -0
  161. package/extensions/rewind/config.ts +71 -0
  162. package/extensions/rewind/format.ts +110 -0
  163. package/extensions/rewind/git.ts +177 -0
  164. package/extensions/rewind/index.ts +60 -0
  165. package/extensions/rewind/policy.ts +42 -0
  166. package/extensions/rewind/queue.ts +27 -0
  167. package/extensions/rewind/restore.ts +96 -0
  168. package/extensions/rewind/rewind-tui.ts +135 -0
  169. package/extensions/rewind/rewind.ts +146 -0
  170. package/extensions/rewind/runtime.ts +174 -0
  171. package/extensions/rewind/snapshot-run.ts +103 -0
  172. package/extensions/rewind/snapshot.ts +80 -0
  173. package/extensions/rewind/status.ts +67 -0
  174. package/extensions/rewind/store.ts +142 -0
  175. package/extensions/rewind/temp-index.ts +87 -0
  176. package/extensions/rewind/timeline.ts +119 -0
  177. package/extensions/rewind/types.ts +58 -0
  178. package/extensions/subagent/README.md +310 -0
  179. package/extensions/subagent/agents.ts +454 -0
  180. package/extensions/subagent/format.ts +126 -0
  181. package/extensions/subagent/index.ts +181 -0
  182. package/extensions/subagent/invocation.ts +57 -0
  183. package/extensions/subagent/orchestrate.ts +182 -0
  184. package/extensions/subagent/render.ts +491 -0
  185. package/extensions/subagent/run.ts +212 -0
  186. package/extensions/subagent/schema.ts +102 -0
  187. package/extensions/subagent/stream.ts +144 -0
  188. package/extensions/subagent/types.ts +79 -0
  189. package/extensions/todo/README.md +230 -0
  190. package/extensions/todo/commands.ts +41 -0
  191. package/extensions/todo/config.ts +29 -0
  192. package/extensions/todo/format.ts +142 -0
  193. package/extensions/todo/index.ts +100 -0
  194. package/extensions/todo/nudge.ts +64 -0
  195. package/extensions/todo/runtime.ts +149 -0
  196. package/extensions/todo/schema.ts +125 -0
  197. package/extensions/todo/state.ts +65 -0
  198. package/extensions/todo/tools.ts +136 -0
  199. package/extensions/todo/tui.ts +170 -0
  200. package/extensions/todo/types.ts +33 -0
  201. package/extensions/watch/README.md +214 -0
  202. package/extensions/watch/commands.ts +144 -0
  203. package/extensions/watch/config.ts +59 -0
  204. package/extensions/watch/format.ts +212 -0
  205. package/extensions/watch/index.ts +129 -0
  206. package/extensions/watch/process.ts +63 -0
  207. package/extensions/watch/runtime.ts +525 -0
  208. package/extensions/watch/schema.ts +177 -0
  209. package/extensions/watch/tools.ts +278 -0
  210. package/extensions/watch/tui.ts +427 -0
  211. package/extensions/watch/types.ts +83 -0
  212. package/extensions/watch/ui.ts +97 -0
  213. package/extensions/web-access/README.md +347 -0
  214. package/extensions/web-access/config.ts +36 -0
  215. package/extensions/web-access/fetch/cache.ts +78 -0
  216. package/extensions/web-access/fetch/config.ts +81 -0
  217. package/extensions/web-access/fetch/extract.ts +124 -0
  218. package/extensions/web-access/fetch/find.ts +158 -0
  219. package/extensions/web-access/fetch/format.ts +117 -0
  220. package/extensions/web-access/fetch/page.ts +169 -0
  221. package/extensions/web-access/fetch/pdf.ts +45 -0
  222. package/extensions/web-access/fetch/schema.ts +192 -0
  223. package/extensions/web-access/fetch/ssrf.ts +191 -0
  224. package/extensions/web-access/fetch/tool.ts +238 -0
  225. package/extensions/web-access/fetch/types.ts +26 -0
  226. package/extensions/web-access/html.ts +41 -0
  227. package/extensions/web-access/http.ts +133 -0
  228. package/extensions/web-access/index.ts +28 -0
  229. package/extensions/web-access/search/config.ts +115 -0
  230. package/extensions/web-access/search/format.ts +65 -0
  231. package/extensions/web-access/search/json.ts +75 -0
  232. package/extensions/web-access/search/provider.ts +38 -0
  233. package/extensions/web-access/search/providers/brave.ts +76 -0
  234. package/extensions/web-access/search/providers/duckduckgo.ts +109 -0
  235. package/extensions/web-access/search/providers/searxng.ts +98 -0
  236. package/extensions/web-access/search/registry.ts +49 -0
  237. package/extensions/web-access/search/schema.ts +65 -0
  238. package/extensions/web-access/search/search.ts +129 -0
  239. package/extensions/web-access/search/tool.ts +112 -0
  240. package/extensions/web-access/search/types.ts +32 -0
  241. package/extensions/web-access/text.ts +26 -0
  242. package/extensions/web-access/transcript.ts +20 -0
  243. package/extensions/wechat/README.md +273 -0
  244. package/extensions/wechat/bridge.ts +577 -0
  245. package/extensions/wechat/client.ts +411 -0
  246. package/extensions/wechat/commands.ts +220 -0
  247. package/extensions/wechat/config.ts +88 -0
  248. package/extensions/wechat/credentials.ts +89 -0
  249. package/extensions/wechat/format.ts +76 -0
  250. package/extensions/wechat/index.ts +175 -0
  251. package/extensions/wechat/interaction.ts +130 -0
  252. package/extensions/wechat/lock.ts +86 -0
  253. package/extensions/wechat/login-screen.ts +91 -0
  254. package/extensions/wechat/login.ts +130 -0
  255. package/extensions/wechat/media.ts +103 -0
  256. package/extensions/wechat/outbound.ts +102 -0
  257. package/extensions/wechat/prompt.ts +104 -0
  258. package/extensions/wechat/qrcode.ts +46 -0
  259. package/extensions/wechat/remote-ui.ts +97 -0
  260. package/extensions/wechat/slash.ts +114 -0
  261. package/extensions/wechat/state.ts +71 -0
  262. package/extensions/wechat/status-screen.ts +176 -0
  263. package/extensions/wechat/tools.ts +109 -0
  264. package/extensions/wechat/types.ts +170 -0
  265. package/extensions/worktree/README.md +278 -0
  266. package/extensions/worktree/commands.ts +110 -0
  267. package/extensions/worktree/config.ts +107 -0
  268. package/extensions/worktree/enter.ts +273 -0
  269. package/extensions/worktree/errors.ts +18 -0
  270. package/extensions/worktree/exit.ts +122 -0
  271. package/extensions/worktree/git.ts +429 -0
  272. package/extensions/worktree/guard.ts +566 -0
  273. package/extensions/worktree/include.ts +147 -0
  274. package/extensions/worktree/index.ts +221 -0
  275. package/extensions/worktree/lifecycle.ts +14 -0
  276. package/extensions/worktree/prune.ts +99 -0
  277. package/extensions/worktree/registry.ts +221 -0
  278. package/extensions/worktree/root-tools.ts +162 -0
  279. package/extensions/worktree/runtime.ts +135 -0
  280. package/extensions/worktree/state.ts +65 -0
  281. package/extensions/worktree/status.ts +115 -0
  282. package/extensions/worktree/tools.ts +147 -0
  283. package/lib/README.md +49 -0
  284. package/lib/browser.ts +40 -0
  285. package/lib/config.ts +186 -0
  286. package/lib/env.ts +41 -0
  287. package/lib/escape.ts +27 -0
  288. package/lib/events.ts +40 -0
  289. package/lib/format.ts +76 -0
  290. package/lib/git/index.ts +7 -0
  291. package/lib/git/read.ts +76 -0
  292. package/lib/git/runner.ts +80 -0
  293. package/lib/highlight.ts +1000 -0
  294. package/lib/interaction.ts +132 -0
  295. package/lib/list-cursor.ts +222 -0
  296. package/lib/path.ts +49 -0
  297. package/lib/pi-invocation.ts +71 -0
  298. package/lib/policy.ts +67 -0
  299. package/lib/rails.ts +91 -0
  300. package/lib/requirements.ts +431 -0
  301. package/lib/shell.ts +33 -0
  302. package/lib/tool-names.ts +32 -0
  303. package/lib/tui.ts +184 -0
  304. package/lib/ui.ts +105 -0
  305. package/lib/web/base.ts +18 -0
  306. package/lib/web/components.ts +122 -0
  307. package/lib/web/index.ts +12 -0
  308. package/lib/web/layout.ts +30 -0
  309. package/lib/web/markup.ts +99 -0
  310. package/lib/web/runtime.ts +68 -0
  311. package/lib/web/tokens.ts +128 -0
  312. package/package.json +134 -4
  313. package/themes/bytefly-dark.json +91 -0
  314. package/themes/bytefly-light.json +91 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Gavin Hu
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,161 @@
1
- # Temporary Holding Version
1
+ # my-pi-agent
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ [![CI](https://github.com/gavin-hu/my-pi-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/gavin-hu/my-pi-agent/actions/workflows/ci.yml)
4
+ [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
5
+ [![built for Pi](https://img.shields.io/badge/built%20for-Pi-5A4FCF)](https://pi.dev)
6
+
7
+ Plan before you act, delegate the work, keep the main checkout clean, and carry
8
+ context across sessions. `my-pi-agent` is a single [Pi](https://pi.dev) package
9
+ that adds sixteen extensions and two themes — install the pack, turn off what
10
+ you do not want, and keep using Pi unchanged.
11
+
12
+ ![A terminal window running the Pi TUI with the bytefly header, hint row, context and loaded extensions, a turn separator, and the status bar](./assets/bytefly-chrome.png)
13
+
14
+ ## Contents
15
+
16
+ - [Why this pack](#why-this-pack)
17
+ - [Quick start](#quick-start)
18
+ - [What you get](#what-you-get)
19
+ - [Configuration](#configuration)
20
+ - [Documentation](#documentation)
21
+ - [Requirements](#requirements)
22
+ - [Contributing](#contributing)
23
+ - [License](#license)
24
+
25
+ ## Why this pack
26
+
27
+ Pi ships a small, sharp core. This package is the layer on top for people who
28
+ want the agent to *think first and work safely*:
29
+
30
+ - **Plan, then execute.** A read-only planning mode turns a task into a reviewed
31
+ plan file that the agent then follows step by step.
32
+ - **Delegate and parallelize.** Run specialist subagents in their own Pi
33
+ processes to explore, review, test, or implement while you keep the thread.
34
+ - **Never wreck the checkout.** Work happens in an isolated `git worktree`, and
35
+ every prompt is snapshotted so a bad turn is one `/rewind` away.
36
+ - **Remember across sessions.** Durable notes live in plain markdown that you
37
+ can read, edit, and version.
38
+ - **Reach the web and your files.** Search, fetch, browse, open, and read
39
+ documents — all from inside the session.
40
+
41
+ Everything is optional and independently toggleable. Nothing is patched or
42
+ forked: Pi discovers the resources through the `pi` manifest in
43
+ [`package.json`](./package.json), so the package upgrades with Pi like any
44
+ other.
45
+
46
+ ## Quick start
47
+
48
+ Requires a working [Pi](https://pi.dev) installation.
49
+
50
+ ```bash
51
+ pi install npm:@gavin-hu/my-pi-agent # install from npm
52
+ pi install git:github.com/gavin-hu/my-pi-agent # install from git
53
+ pi install git:github.com/gavin-hu/my-pi-agent@v0.7.0 # pin a release
54
+ pi install ./ -l # project-local (.pi/settings.json)
55
+ pi -e . # try it for one run
56
+ ```
57
+
58
+ Then, from inside Pi:
59
+
60
+ - `/extensions` lists every loaded extension and enables or disables one.
61
+ - `/doctor` checks that each enabled extension has what it needs at runtime.
62
+ - `/settings` → **Theme** selects a theme.
63
+ - `/plan <task>` starts a task in read-only planning mode.
64
+
65
+ ## What you get
66
+
67
+ Sixteen extensions and two themes, grouped by what you are trying to do. Each
68
+ extension's own `README.md` has the full tool and command surface.
69
+
70
+ ### Plan and delegate
71
+
72
+ | Extension | Tools and commands | What it does |
73
+ |---|---|---|
74
+ | [`plan`](./extensions/plan/) | `enter_plan_mode`, `write_plan`, `exit_plan_mode`, `set_plan_step`, `/plan`, `--plan` | Read-only planning: the model investigates, saves a plan under `.pi/plans`, and you approve it before anything is written. Review in the TUI, or open it in a browser to leave inline comments. |
75
+ | [`subagent`](./extensions/subagent/) | `subagent` | Delegate a task to a specialist agent (`explorer`, `planner`, `reviewer`, `worker`, `researcher`, `tester`, `debugger`, `documenter`) in its own Pi process — single, parallel, or chained. |
76
+ | [`todo`](./extensions/todo/) | `todo`, `/todos` | A persistent task list (`pending` / `in_progress` / `completed`) with a one-line widget. |
77
+ | [`goal`](./extensions/goal/) | `goal`, `/goal` | A persistent session objective, kept in a widget and restated before each turn. |
78
+ | [`question`](./extensions/question/) | `ask_user_question` | Ask you one or more structured questions (labelled options plus free-form "Other") and wait. |
79
+ | [`job`](./extensions/job/) | `job`, `/jobs` | Run long-lived shell commands in the background; inspect logs, wait, or kill them. |
80
+ | [`watch`](./extensions/watch/) | `watch`, `/watch` | Tail a file or command output, match lines against patterns, and alert you or hand matching lines to the agent. |
81
+
82
+ ![The browser-based plan review, showing the plan's sections, a rendered code block, and an inline comment box](./assets/plan-review.png)
83
+
84
+ ### Keep your work safe
85
+
86
+ | Extension | Tools and commands | What it does |
87
+ |---|---|---|
88
+ | [`worktree`](./extensions/worktree/) | `enter_worktree`, `exit_worktree`, `prune_worktrees`, `list_worktrees`, `/worktree*`, `--worktree` | Work inside an isolated `git worktree` on its own branch; the built-in read/write/edit/bash tools follow, and cleanup refuses to throw work away. |
89
+ | [`rewind`](./extensions/rewind/) | `/rewind`, `↺ N` status chip | Snapshot the repo on every prompt under `refs/pi/rewind` and restore code, conversation, or both. |
90
+ | [`memory`](./extensions/memory/) | `memory`, `/memory` | Durable cross-session notes as human-editable markdown, injected into each run and managed through the `/memory` picker. |
91
+
92
+ ### Reach the world
93
+
94
+ | Extension | Tools and commands | What it does |
95
+ |---|---|---|
96
+ | [`web-access`](./extensions/web-access/) | `web_search`, `web_fetch` | Search the web (keyless DuckDuckGo by default, optional SearXNG or Brave) and fetch a page as readable text, with paging, `find`, per-hop SSRF checks, and optional PDF support. |
97
+ | [`file-browse`](./extensions/file-browse/) | `/browse` | Start a loopback, read-only file browser rooted at the working directory, with Markdown preview and a fuzzy quick-open palette. |
98
+ | [`document`](./extensions/document/) | `read_doc` | Extract text from a local PDF, DOCX, DOC, ODT, RTF, or XLSX in process, paged. |
99
+ | [`file-open`](./extensions/file-open/) | `/open`, `open_path` | Open or reveal a file or directory in the OS-native application. |
100
+ | [`wechat`](./extensions/wechat/) | `/wechat`, `send_wechat` | Bridge a WeChat chat to the live session over the Weixin iLink bot API; inbound text, images, and files become turns. |
101
+
102
+ ![The loopback file browser, showing the path filter, the file tree, and a rendered Markdown preview](./assets/file-browse.png)
103
+
104
+ ### Chrome and upkeep
105
+
106
+ | Extension | Tools and commands | What it does |
107
+ |---|---|---|
108
+ | [`bytefly`](./extensions/bytefly/) | `/bytefly`, `/extensions`, `/doctor`, `run_doctor` | A themed header and width-adaptive footer, a rule between completed turns, the `/extensions` picker, `/doctor` diagnostics, and an opt-in `notify` capability that raises OS notifications when a run or a background job finishes or the agent asks for input. DeepSeek is priced out of the box, and `bytefly.json` is the shared config document every extension reads. |
109
+ | [`bytefly-dark`](./themes/bytefly-dark.json) / [`bytefly-light`](./themes/bytefly-light.json) | `/settings` → **Theme** | A GitHub-inspired dark palette and its light companion, with optional automatic light/dark switching. |
110
+
111
+ ## Configuration
112
+
113
+ Most extensions need no configuration. Every setting lives in one shared
114
+ document, `bytefly.json`, read from `<agent-dir>/bytefly.json` and merged with
115
+ `<cwd>/.pi/bytefly.json` (project wins), under a top-level section named for the
116
+ extension. Each extension's `README.md` lists its keys,
117
+ [`docs/configuration.md`](./docs/configuration.md) indexes them, and
118
+ [`assets/bytefly.schema.json`](./assets/bytefly.schema.json) validates the file.
119
+
120
+ Every extension is on by default. To load the pack without some of them, set
121
+ `PI_DISABLED_EXTENSIONS` to a comma- or whitespace-separated list of extension
122
+ names (the directory names under [`extensions/`](./extensions/)):
123
+
124
+ ```bash
125
+ PI_DISABLED_EXTENSIONS=todo,job pi -e .
126
+ ```
127
+
128
+ Names are compared case-insensitively and unknown names are ignored. This only
129
+ stops the factories from registering; to drop the whole package, use Pi's
130
+ `--no-extensions` or remove the package from your settings.
131
+
132
+ ## Documentation
133
+
134
+ | Guide | What it covers |
135
+ |---|---|
136
+ | [Getting started](./docs/getting-started.md) | Requirements, install options, verifying the load, themes. |
137
+ | [Extensions](./docs/extensions.md) | The full catalog of every extension and theme. |
138
+ | [Configuration](./docs/configuration.md) | Config-file resolution, the per-extension index, environment variables. |
139
+ | [Architecture](./docs/architecture.md) | How the package, its extensions, and `lib/` fit together. |
140
+ | [Development](./docs/development.md) | Local setup, checks, tests, cross-platform notes, and the release process. |
141
+ | [Security](./docs/security.md) | Trust boundaries for the loopback and remote surfaces. |
142
+
143
+ ## Requirements
144
+
145
+ - **Pi** — a working installation; `my-pi-agent` is a package, not a fork.
146
+ - **OS** — Windows, macOS, and Linux; the full check suite runs on all three in
147
+ CI.
148
+ - **git** on `PATH` for the `worktree` and `rewind` extensions; everything else
149
+ degrades or disables cleanly, and `/doctor` tells you what is missing.
150
+ - Optional runtime pieces (for example a browser for HTML exports) are reported
151
+ per extension by `/doctor`.
152
+
153
+ ## Contributing
154
+
155
+ Contributions are welcome. Start with [`CONTRIBUTING.md`](./CONTRIBUTING.md) for
156
+ the setup, the worktree branch flow, and the checks a change must pass. AI
157
+ coding agents should read [`AGENTS.md`](./AGENTS.md).
158
+
159
+ ## License
160
+
161
+ MIT
Binary file