@gavin-hu/my-pi-agent 0.0.0-stage → 0.8.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 (316) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +160 -2
  3. package/README.zh-CN.md +153 -0
  4. package/assets/bytefly-chrome.png +0 -0
  5. package/assets/bytefly.schema.json +769 -0
  6. package/assets/file-browse.png +0 -0
  7. package/assets/plan-review.png +0 -0
  8. package/extensions/bytefly/README.md +827 -0
  9. package/extensions/bytefly/doctor/config.ts +47 -0
  10. package/extensions/bytefly/doctor/format.ts +169 -0
  11. package/extensions/bytefly/doctor/register.ts +56 -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/footer/collect/entries.ts +137 -0
  16. package/extensions/bytefly/footer/collect/snapshot.ts +64 -0
  17. package/extensions/bytefly/footer/config.ts +35 -0
  18. package/extensions/bytefly/footer/price/config.ts +152 -0
  19. package/extensions/bytefly/footer/price/price.ts +59 -0
  20. package/extensions/bytefly/footer/price/rates.ts +54 -0
  21. package/extensions/bytefly/footer/price/schedule.ts +112 -0
  22. package/extensions/bytefly/footer/price/types.ts +53 -0
  23. package/extensions/bytefly/footer/register.ts +42 -0
  24. package/extensions/bytefly/footer/render/footer.ts +51 -0
  25. package/extensions/bytefly/footer/render/format.ts +106 -0
  26. package/extensions/bytefly/footer/render/layout.ts +139 -0
  27. package/extensions/bytefly/footer/render/lines.ts +50 -0
  28. package/extensions/bytefly/footer/render/segments.ts +281 -0
  29. package/extensions/bytefly/footer/render/status.ts +42 -0
  30. package/extensions/bytefly/footer/types.ts +104 -0
  31. package/extensions/bytefly/header/component.ts +116 -0
  32. package/extensions/bytefly/header/config.ts +82 -0
  33. package/extensions/bytefly/header/register.ts +33 -0
  34. package/extensions/bytefly/index.ts +49 -0
  35. package/extensions/bytefly/notify/config.ts +60 -0
  36. package/extensions/bytefly/notify/dispatch.ts +138 -0
  37. package/extensions/bytefly/notify/format.ts +39 -0
  38. package/extensions/bytefly/notify/register.ts +85 -0
  39. package/extensions/bytefly/notify/types.ts +28 -0
  40. package/extensions/bytefly/panel/commands.ts +147 -0
  41. package/extensions/bytefly/panel/format.ts +135 -0
  42. package/extensions/bytefly/panel/join.ts +103 -0
  43. package/extensions/bytefly/panel/tui.ts +416 -0
  44. package/extensions/bytefly/panel/types.ts +44 -0
  45. package/extensions/bytefly/picker/discovery.ts +128 -0
  46. package/extensions/bytefly/picker/resources.ts +215 -0
  47. package/extensions/bytefly/picker/runtime.ts +108 -0
  48. package/extensions/bytefly/picker/toggle.ts +145 -0
  49. package/extensions/bytefly/picker/types.ts +55 -0
  50. package/extensions/bytefly/separator/component.ts +26 -0
  51. package/extensions/bytefly/separator/config.ts +24 -0
  52. package/extensions/bytefly/separator/format.ts +50 -0
  53. package/extensions/bytefly/separator/register.ts +42 -0
  54. package/extensions/bytefly/separator/types.ts +22 -0
  55. package/extensions/document/README.md +281 -0
  56. package/extensions/document/config.ts +58 -0
  57. package/extensions/document/extract/doc.ts +19 -0
  58. package/extensions/document/extract/docx.ts +18 -0
  59. package/extensions/document/extract/file.ts +45 -0
  60. package/extensions/document/extract/odt.ts +101 -0
  61. package/extensions/document/extract/pdf.ts +25 -0
  62. package/extensions/document/extract/rtf.ts +45 -0
  63. package/extensions/document/extract/vendor.d.ts +39 -0
  64. package/extensions/document/extract/xlsx.ts +88 -0
  65. package/extensions/document/formats.ts +59 -0
  66. package/extensions/document/index.ts +17 -0
  67. package/extensions/document/paging.ts +110 -0
  68. package/extensions/document/render.ts +105 -0
  69. package/extensions/document/schema.ts +50 -0
  70. package/extensions/document/tool.ts +152 -0
  71. package/extensions/file-browse/README.md +276 -0
  72. package/extensions/file-browse/client.ts +550 -0
  73. package/extensions/file-browse/config.ts +82 -0
  74. package/extensions/file-browse/files.ts +433 -0
  75. package/extensions/file-browse/fuzzy.ts +75 -0
  76. package/extensions/file-browse/git.ts +74 -0
  77. package/extensions/file-browse/html.ts +346 -0
  78. package/extensions/file-browse/icons.ts +119 -0
  79. package/extensions/file-browse/index.ts +149 -0
  80. package/extensions/file-browse/markdown.ts +774 -0
  81. package/extensions/file-browse/paths.ts +101 -0
  82. package/extensions/file-browse/router.ts +289 -0
  83. package/extensions/file-browse/server.ts +104 -0
  84. package/extensions/file-open/README.md +135 -0
  85. package/extensions/file-open/index.ts +93 -0
  86. package/extensions/file-open/open.ts +102 -0
  87. package/extensions/file-open/schema.ts +31 -0
  88. package/extensions/goal/README.md +241 -0
  89. package/extensions/goal/clarify-parse.ts +203 -0
  90. package/extensions/goal/clarify-prompt.ts +80 -0
  91. package/extensions/goal/clarify.ts +234 -0
  92. package/extensions/goal/commands.ts +220 -0
  93. package/extensions/goal/config.ts +35 -0
  94. package/extensions/goal/format.ts +111 -0
  95. package/extensions/goal/index.ts +77 -0
  96. package/extensions/goal/runtime.ts +90 -0
  97. package/extensions/goal/schema.ts +105 -0
  98. package/extensions/goal/state.ts +69 -0
  99. package/extensions/goal/tools.ts +136 -0
  100. package/extensions/goal/tui.ts +97 -0
  101. package/extensions/goal/types.ts +42 -0
  102. package/extensions/job/README.md +309 -0
  103. package/extensions/job/commands.ts +74 -0
  104. package/extensions/job/config.ts +68 -0
  105. package/extensions/job/format.ts +256 -0
  106. package/extensions/job/index.ts +140 -0
  107. package/extensions/job/logs.ts +56 -0
  108. package/extensions/job/paths.ts +31 -0
  109. package/extensions/job/process.ts +106 -0
  110. package/extensions/job/registry.ts +265 -0
  111. package/extensions/job/reservations.ts +82 -0
  112. package/extensions/job/runtime.ts +846 -0
  113. package/extensions/job/schema.ts +148 -0
  114. package/extensions/job/session.ts +116 -0
  115. package/extensions/job/status.ts +69 -0
  116. package/extensions/job/store.ts +103 -0
  117. package/extensions/job/tools.ts +295 -0
  118. package/extensions/job/tui.ts +486 -0
  119. package/extensions/job/types.ts +92 -0
  120. package/extensions/job/ui.ts +99 -0
  121. package/extensions/job/waiters.ts +46 -0
  122. package/extensions/memory/README.md +221 -0
  123. package/extensions/memory/commands.ts +190 -0
  124. package/extensions/memory/config.ts +35 -0
  125. package/extensions/memory/errors.ts +9 -0
  126. package/extensions/memory/format.ts +141 -0
  127. package/extensions/memory/index.ts +59 -0
  128. package/extensions/memory/runtime.ts +199 -0
  129. package/extensions/memory/schema.ts +86 -0
  130. package/extensions/memory/store.ts +231 -0
  131. package/extensions/memory/tools.ts +165 -0
  132. package/extensions/memory/tui.ts +430 -0
  133. package/extensions/memory/types.ts +38 -0
  134. package/extensions/plan/README.md +421 -0
  135. package/extensions/plan/blocks.ts +197 -0
  136. package/extensions/plan/commands.ts +134 -0
  137. package/extensions/plan/feedback.ts +157 -0
  138. package/extensions/plan/git-bash.ts +320 -0
  139. package/extensions/plan/index.ts +179 -0
  140. package/extensions/plan/path-guard.ts +101 -0
  141. package/extensions/plan/plans.ts +266 -0
  142. package/extensions/plan/policy.ts +73 -0
  143. package/extensions/plan/runtime.ts +195 -0
  144. package/extensions/plan/steps.ts +240 -0
  145. package/extensions/plan/tools.ts +635 -0
  146. package/extensions/plan/tui.ts +391 -0
  147. package/extensions/plan/types.ts +67 -0
  148. package/extensions/plan/web-client.ts +433 -0
  149. package/extensions/plan/web-page.ts +169 -0
  150. package/extensions/plan/web-router.ts +155 -0
  151. package/extensions/plan/web.ts +267 -0
  152. package/extensions/question/README.md +189 -0
  153. package/extensions/question/answers.ts +119 -0
  154. package/extensions/question/dialogs.ts +109 -0
  155. package/extensions/question/index.ts +28 -0
  156. package/extensions/question/schema.ts +119 -0
  157. package/extensions/question/tools.ts +122 -0
  158. package/extensions/question/tui-state.ts +240 -0
  159. package/extensions/question/tui.ts +324 -0
  160. package/extensions/question/types.ts +61 -0
  161. package/extensions/rewind/README.md +202 -0
  162. package/extensions/rewind/commands.ts +74 -0
  163. package/extensions/rewind/config.ts +71 -0
  164. package/extensions/rewind/format.ts +110 -0
  165. package/extensions/rewind/git.ts +177 -0
  166. package/extensions/rewind/index.ts +60 -0
  167. package/extensions/rewind/policy.ts +42 -0
  168. package/extensions/rewind/queue.ts +27 -0
  169. package/extensions/rewind/restore.ts +96 -0
  170. package/extensions/rewind/rewind-tui.ts +135 -0
  171. package/extensions/rewind/rewind.ts +146 -0
  172. package/extensions/rewind/runtime.ts +174 -0
  173. package/extensions/rewind/snapshot-run.ts +103 -0
  174. package/extensions/rewind/snapshot.ts +80 -0
  175. package/extensions/rewind/status.ts +67 -0
  176. package/extensions/rewind/store.ts +142 -0
  177. package/extensions/rewind/temp-index.ts +87 -0
  178. package/extensions/rewind/timeline.ts +119 -0
  179. package/extensions/rewind/types.ts +58 -0
  180. package/extensions/subagent/README.md +310 -0
  181. package/extensions/subagent/agents.ts +454 -0
  182. package/extensions/subagent/format.ts +126 -0
  183. package/extensions/subagent/index.ts +181 -0
  184. package/extensions/subagent/invocation.ts +57 -0
  185. package/extensions/subagent/orchestrate.ts +182 -0
  186. package/extensions/subagent/render.ts +491 -0
  187. package/extensions/subagent/run.ts +212 -0
  188. package/extensions/subagent/schema.ts +102 -0
  189. package/extensions/subagent/stream.ts +144 -0
  190. package/extensions/subagent/types.ts +79 -0
  191. package/extensions/todo/README.md +230 -0
  192. package/extensions/todo/commands.ts +41 -0
  193. package/extensions/todo/config.ts +29 -0
  194. package/extensions/todo/format.ts +142 -0
  195. package/extensions/todo/index.ts +100 -0
  196. package/extensions/todo/nudge.ts +64 -0
  197. package/extensions/todo/runtime.ts +149 -0
  198. package/extensions/todo/schema.ts +125 -0
  199. package/extensions/todo/state.ts +65 -0
  200. package/extensions/todo/tools.ts +136 -0
  201. package/extensions/todo/tui.ts +170 -0
  202. package/extensions/todo/types.ts +33 -0
  203. package/extensions/watch/README.md +214 -0
  204. package/extensions/watch/commands.ts +144 -0
  205. package/extensions/watch/config.ts +59 -0
  206. package/extensions/watch/format.ts +212 -0
  207. package/extensions/watch/index.ts +129 -0
  208. package/extensions/watch/process.ts +63 -0
  209. package/extensions/watch/runtime.ts +525 -0
  210. package/extensions/watch/schema.ts +177 -0
  211. package/extensions/watch/tools.ts +278 -0
  212. package/extensions/watch/tui.ts +427 -0
  213. package/extensions/watch/types.ts +83 -0
  214. package/extensions/watch/ui.ts +97 -0
  215. package/extensions/web-access/README.md +347 -0
  216. package/extensions/web-access/config.ts +36 -0
  217. package/extensions/web-access/fetch/cache.ts +78 -0
  218. package/extensions/web-access/fetch/config.ts +81 -0
  219. package/extensions/web-access/fetch/extract.ts +124 -0
  220. package/extensions/web-access/fetch/find.ts +158 -0
  221. package/extensions/web-access/fetch/format.ts +117 -0
  222. package/extensions/web-access/fetch/page.ts +169 -0
  223. package/extensions/web-access/fetch/pdf.ts +45 -0
  224. package/extensions/web-access/fetch/schema.ts +192 -0
  225. package/extensions/web-access/fetch/ssrf.ts +191 -0
  226. package/extensions/web-access/fetch/tool.ts +238 -0
  227. package/extensions/web-access/fetch/types.ts +26 -0
  228. package/extensions/web-access/html.ts +41 -0
  229. package/extensions/web-access/http.ts +133 -0
  230. package/extensions/web-access/index.ts +28 -0
  231. package/extensions/web-access/search/config.ts +115 -0
  232. package/extensions/web-access/search/format.ts +65 -0
  233. package/extensions/web-access/search/json.ts +75 -0
  234. package/extensions/web-access/search/provider.ts +38 -0
  235. package/extensions/web-access/search/providers/brave.ts +76 -0
  236. package/extensions/web-access/search/providers/duckduckgo.ts +109 -0
  237. package/extensions/web-access/search/providers/searxng.ts +98 -0
  238. package/extensions/web-access/search/registry.ts +49 -0
  239. package/extensions/web-access/search/schema.ts +65 -0
  240. package/extensions/web-access/search/search.ts +129 -0
  241. package/extensions/web-access/search/tool.ts +112 -0
  242. package/extensions/web-access/search/types.ts +32 -0
  243. package/extensions/web-access/text.ts +26 -0
  244. package/extensions/web-access/transcript.ts +20 -0
  245. package/extensions/wechat/README.md +273 -0
  246. package/extensions/wechat/bridge.ts +577 -0
  247. package/extensions/wechat/client.ts +411 -0
  248. package/extensions/wechat/commands.ts +220 -0
  249. package/extensions/wechat/config.ts +88 -0
  250. package/extensions/wechat/credentials.ts +89 -0
  251. package/extensions/wechat/format.ts +76 -0
  252. package/extensions/wechat/index.ts +175 -0
  253. package/extensions/wechat/interaction.ts +130 -0
  254. package/extensions/wechat/lock.ts +86 -0
  255. package/extensions/wechat/login-screen.ts +91 -0
  256. package/extensions/wechat/login.ts +130 -0
  257. package/extensions/wechat/media.ts +103 -0
  258. package/extensions/wechat/outbound.ts +102 -0
  259. package/extensions/wechat/prompt.ts +104 -0
  260. package/extensions/wechat/qrcode.ts +46 -0
  261. package/extensions/wechat/remote-ui.ts +97 -0
  262. package/extensions/wechat/slash.ts +114 -0
  263. package/extensions/wechat/state.ts +71 -0
  264. package/extensions/wechat/status-screen.ts +176 -0
  265. package/extensions/wechat/tools.ts +109 -0
  266. package/extensions/wechat/types.ts +170 -0
  267. package/extensions/worktree/README.md +278 -0
  268. package/extensions/worktree/commands.ts +110 -0
  269. package/extensions/worktree/config.ts +107 -0
  270. package/extensions/worktree/enter.ts +273 -0
  271. package/extensions/worktree/errors.ts +18 -0
  272. package/extensions/worktree/exit.ts +122 -0
  273. package/extensions/worktree/git.ts +429 -0
  274. package/extensions/worktree/guard.ts +566 -0
  275. package/extensions/worktree/include.ts +147 -0
  276. package/extensions/worktree/index.ts +221 -0
  277. package/extensions/worktree/lifecycle.ts +14 -0
  278. package/extensions/worktree/prune.ts +99 -0
  279. package/extensions/worktree/registry.ts +221 -0
  280. package/extensions/worktree/root-tools.ts +162 -0
  281. package/extensions/worktree/runtime.ts +135 -0
  282. package/extensions/worktree/state.ts +65 -0
  283. package/extensions/worktree/status.ts +115 -0
  284. package/extensions/worktree/tools.ts +147 -0
  285. package/lib/README.md +49 -0
  286. package/lib/browser.ts +40 -0
  287. package/lib/config.ts +186 -0
  288. package/lib/env.ts +41 -0
  289. package/lib/escape.ts +27 -0
  290. package/lib/events.ts +40 -0
  291. package/lib/format.ts +76 -0
  292. package/lib/git/index.ts +7 -0
  293. package/lib/git/read.ts +76 -0
  294. package/lib/git/runner.ts +80 -0
  295. package/lib/highlight.ts +1000 -0
  296. package/lib/interaction.ts +132 -0
  297. package/lib/list-cursor.ts +222 -0
  298. package/lib/path.ts +49 -0
  299. package/lib/pi-invocation.ts +71 -0
  300. package/lib/policy.ts +67 -0
  301. package/lib/rails.ts +91 -0
  302. package/lib/requirements.ts +431 -0
  303. package/lib/shell.ts +33 -0
  304. package/lib/tool-names.ts +32 -0
  305. package/lib/tui.ts +183 -0
  306. package/lib/ui.ts +105 -0
  307. package/lib/web/base.ts +18 -0
  308. package/lib/web/components.ts +133 -0
  309. package/lib/web/index.ts +12 -0
  310. package/lib/web/layout.ts +30 -0
  311. package/lib/web/markup.ts +99 -0
  312. package/lib/web/runtime.ts +68 -0
  313. package/lib/web/tokens.ts +128 -0
  314. package/package.json +134 -4
  315. package/themes/bytefly-dark.json +91 -0
  316. 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
+ **English** · [简体中文](./README.zh-CN.md)
4
+
5
+ [![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)
6
+ [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
7
+ [![built for Pi](https://img.shields.io/badge/built%20for-Pi-5A4FCF)](https://pi.dev)
8
+
9
+ Plan before you act, delegate the work, keep the main checkout clean, and carry
10
+ context across sessions. `my-pi-agent` is a single [Pi](https://pi.dev) package
11
+ that adds sixteen extensions and two themes — install the pack, turn off what
12
+ you do not want, and keep using Pi unchanged.
13
+
14
+ <img src="./assets/bytefly-chrome.png" alt="A terminal window running the Pi TUI with the bytefly header, hint row, context and loaded extensions, a turn separator, and the status bar" width="100%">
15
+
16
+ ## Contents
17
+
18
+ - [Why this pack](#why-this-pack)
19
+ - [Quick start](#quick-start)
20
+ - [What you get](#what-you-get)
21
+ - [Configuration](#configuration)
22
+ - [Documentation](#documentation)
23
+ - [Requirements](#requirements)
24
+ - [Contributing](#contributing)
25
+ - [License](#license)
26
+
27
+ ## Why this pack
28
+
29
+ Pi ships a small, sharp core. This package is the layer on top for people who
30
+ want the agent to *think first and work safely*:
31
+
32
+ - **Plan, then execute.** A read-only planning mode turns a task into a reviewed
33
+ plan file that the agent then follows step by step.
34
+ - **Delegate and parallelize.** Run specialist subagents in their own Pi
35
+ processes to explore, review, test, or implement while you keep the thread.
36
+ - **Never wreck the checkout.** Work happens in an isolated `git worktree`, and
37
+ every prompt is snapshotted so a bad turn is one `/rewind` away.
38
+ - **Remember across sessions.** Durable notes live in plain markdown that you
39
+ can read, edit, and version.
40
+ - **Reach the web and your files.** Search, fetch, browse, open, and read
41
+ documents — all from inside the session.
42
+
43
+ Everything is optional and independently toggleable. Nothing is patched or
44
+ forked: Pi discovers the resources through the `pi` manifest in
45
+ [`package.json`](./package.json), so the package upgrades with Pi like any
46
+ other.
47
+
48
+ ## Quick start
49
+
50
+ Requires a working [Pi](https://pi.dev) installation.
51
+
52
+ ```bash
53
+ pi install npm:@gavin-hu/my-pi-agent # install from npm
54
+ pi install git:github.com/gavin-hu/my-pi-agent # install from git
55
+ pi install git:github.com/gavin-hu/my-pi-agent@v0.8.0 # pin a release
56
+ pi install ./ -l # project-local (.pi/settings.json)
57
+ pi -e . # try it for one run
58
+ ```
59
+
60
+ Then, from inside Pi:
61
+
62
+ - `/extensions` (an alias of `/bytefly`) lists every loaded extension with its
63
+ runtime health and enables or disables one.
64
+ - `/doctor` opens the same screen, narrowed to one extension when named, and
65
+ checks that each enabled extension has what it needs at runtime.
66
+ - `/settings` → **Theme** selects a theme.
67
+ - `/plan <task>` starts a task in read-only planning mode.
68
+
69
+ ## What you get
70
+
71
+ Sixteen extensions and two themes, grouped by what you are trying to do. Each
72
+ extension's own `README.md` has the full tool and command surface.
73
+
74
+ ### Plan and delegate
75
+
76
+ | Extension | Tools and commands | What it does |
77
+ |---|---|---|
78
+ | [`plan`](./extensions/plan/) | `enter_plan_mode`, `write_plan`, `exit_plan_mode`, `set_plan_steps`, `/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. |
79
+ | [`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. |
80
+ | [`todo`](./extensions/todo/) | `todo`, `/todos` | A persistent task list (`pending` / `in_progress` / `completed`) with a one-line widget. |
81
+ | [`goal`](./extensions/goal/) | `goal`, `/goal` | A persistent session objective, kept in a widget and restated before each turn. |
82
+ | [`question`](./extensions/question/) | `ask_user_question` | Ask you one or more structured questions (labelled options plus free-form "Other") and wait. |
83
+ | [`job`](./extensions/job/) | `job`, `/jobs` | Run long-lived shell commands in the background; inspect logs, wait, or kill them. |
84
+ | [`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. |
85
+
86
+ ### Keep your work safe
87
+
88
+ | Extension | Tools and commands | What it does |
89
+ |---|---|---|
90
+ | [`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. |
91
+ | [`rewind`](./extensions/rewind/) | `/rewind`, `↺ N` status chip | Snapshot the repo on every prompt under `refs/pi/rewind` and restore code, conversation, or both. |
92
+ | [`memory`](./extensions/memory/) | `memory`, `/memory` | Durable cross-session notes as human-editable markdown, injected into each run and managed through the `/memory` picker. |
93
+
94
+ ### Reach the world
95
+
96
+ | Extension | Tools and commands | What it does |
97
+ |---|---|---|
98
+ | [`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. |
99
+ | [`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. |
100
+ | [`document`](./extensions/document/) | `read_doc` | Extract text from a local PDF, DOCX, DOC, ODT, RTF, or XLSX in process, paged. |
101
+ | [`file-open`](./extensions/file-open/) | `/open`, `open_path` | Open or reveal a file or directory in the OS-native application. |
102
+ | [`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. |
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 `/bytefly` extension screen (aliases `/extensions` and `/doctor`) that lists every extension with its health and enables or disables one, 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
@@ -0,0 +1,153 @@
1
+ # my-pi-agent
2
+
3
+ [English](./README.md) · **简体中文**
4
+
5
+ [![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)
6
+ [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
7
+ [![built for Pi](https://img.shields.io/badge/built%20for-Pi-5A4FCF)](https://pi.dev)
8
+
9
+ 先规划,再行动;委派工作,保持主检出区干净,并让上下文跨会话延续。
10
+ `my-pi-agent` 是一个 [Pi](https://pi.dev) 包,新增十六个扩展和两个主题 —— 安装
11
+ 整个包,关掉你不需要的部分,其余照常使用 Pi。
12
+
13
+ <img src="./assets/bytefly-chrome.png" alt="一个运行 Pi TUI 的终端窗口,包含 bytefly 头部、提示行、上下文与已加载扩展、回合分隔线以及状态栏" width="100%">
14
+
15
+ ## 目录
16
+
17
+ - [为什么选择这个包](#为什么选择这个包)
18
+ - [快速开始](#快速开始)
19
+ - [包含内容](#包含内容)
20
+ - [配置](#配置)
21
+ - [文档](#文档)
22
+ - [环境要求](#环境要求)
23
+ - [参与贡献](#参与贡献)
24
+ - [许可证](#许可证)
25
+
26
+ ## 为什么选择这个包
27
+
28
+ Pi 提供一个精简而锐利的内核。这个包是在其之上的一层,面向希望智能体*先思考、
29
+ 再安全行动*的人:
30
+
31
+ - **先规划,再执行。** 只读的规划模式把一次任务变成一份可审阅的计划文件,智能体
32
+ 随后按步骤执行。
33
+ - **委派与并行。** 在各自的 Pi 进程中运行专职子智能体来探索、审阅、测试或实现,
34
+ 你继续把握主线。
35
+ - **绝不搞乱检出区。** 工作发生在隔离的 `git worktree` 中,每次提示都会生成快照,
36
+ 因此一次糟糕的回合只需一个 `/rewind` 就能回退。
37
+ - **跨会话记忆。** 持久笔记以纯 Markdown 保存,可读、可改、可纳入版本控制。
38
+ - **连通网络与文件。** 搜索、抓取、浏览、打开和读取文档 —— 全部在会话内完成。
39
+
40
+ 一切都是可选的,且可独立开关。没有任何东西被补丁或分叉:Pi 通过
41
+ [`package.json`](./package.json) 里的 `pi` manifest 发现这些资源,因此该包能像
42
+ 其他包一样随 Pi 一起升级。
43
+
44
+ ## 快速开始
45
+
46
+ 需要一个可用的 [Pi](https://pi.dev) 安装。
47
+
48
+ ```bash
49
+ pi install npm:@gavin-hu/my-pi-agent # 从 npm 安装
50
+ pi install git:github.com/gavin-hu/my-pi-agent # 从 git 安装
51
+ pi install git:github.com/gavin-hu/my-pi-agent@v0.8.0 # 固定到某个版本
52
+ pi install ./ -l # 仅项目本地(.pi/settings.json)
53
+ pi -e . # 试运行一次
54
+ ```
55
+
56
+ 然后在 Pi 中:
57
+
58
+ - `/extensions`(`/bytefly` 的别名)列出每个已加载扩展及其运行时健康状况,并启用
59
+ 或禁用一个扩展。
60
+ - `/doctor` 打开同一屏幕,指定扩展名时只显示该扩展,并检查每个已启用扩展在运行时
61
+ 是否具备所需条件。
62
+ - `/settings` → **Theme** 选择主题。
63
+ - `/plan <任务>` 以只读规划模式开始一个任务。
64
+
65
+ ## 包含内容
66
+
67
+ 十六个扩展和两个主题,按你想达成的目标分组。每个扩展自己的 `README.md` 提供完整的
68
+ 工具与命令说明。
69
+
70
+ ### 规划与委派
71
+
72
+ | 扩展 | 工具与命令 | 说明 |
73
+ |---|---|---|
74
+ | [`plan`](./extensions/plan/) | `enter_plan_mode`, `write_plan`, `exit_plan_mode`, `set_plan_steps`, `/plan`, `--plan` | 只读规划:模型先调研,把计划保存到 `.pi/plans` 下,你在写入任何内容前先批准。可在 TUI 中审阅,或在浏览器中打开以留下行内评论。 |
75
+ | [`subagent`](./extensions/subagent/) | `subagent` | 把任务委派给专职智能体(`explorer`、`planner`、`reviewer`、`worker`、`researcher`、`tester`、`debugger`、`documenter`),运行在它自己的 Pi 进程中 —— 单个、并行或链式。 |
76
+ | [`todo`](./extensions/todo/) | `todo`, `/todos` | 持久任务列表(`pending` / `in_progress` / `completed`),配一行式 widget。 |
77
+ | [`goal`](./extensions/goal/) | `goal`, `/goal` | 持久会话目标,保存在 widget 中,并在每个回合前重述。 |
78
+ | [`question`](./extensions/question/) | `ask_user_question` | 向你提出一个或多个结构化问题(带标签的选项外加自由填写的“其他”)并等待回答。 |
79
+ | [`job`](./extensions/job/) | `job`, `/jobs` | 在后台运行长时 shell 命令;查看日志、等待或结束它们。 |
80
+ | [`watch`](./extensions/watch/) | `watch`, `/watch` | 跟踪文件或命令输出,按模式匹配行,并提醒你或把匹配的行交给智能体。 |
81
+
82
+ ### 保护你的工作
83
+
84
+ | 扩展 | 工具与命令 | 说明 |
85
+ |---|---|---|
86
+ | [`worktree`](./extensions/worktree/) | `enter_worktree`, `exit_worktree`, `prune_worktrees`, `list_worktrees`, `/worktree*`, `--worktree` | 在隔离的 `git worktree` 里、在独立分支上工作;内置的 read/write/edit/bash 工具会跟随,清理时也不会丢弃工作。 |
87
+ | [`rewind`](./extensions/rewind/) | `/rewind`, `↺ N` 状态标记 | 每次提示时在 `refs/pi/rewind` 下对仓库生成快照,可恢复代码、对话或两者。 |
88
+ | [`memory`](./extensions/memory/) | `memory`, `/memory` | 跨会话的持久笔记,以可人工编辑的 Markdown 保存,注入每次运行,并通过 `/memory` 选择器管理。 |
89
+
90
+ ### 连通外部世界
91
+
92
+ | 扩展 | 工具与命令 | 说明 |
93
+ |---|---|---|
94
+ | [`web-access`](./extensions/web-access/) | `web_search`, `web_fetch` | 搜索网络(默认无密钥的 DuckDuckGo,可选 SearXNG 或 Brave),并把页面抓取为可读文本,支持分页、`find`、逐跳 SSRF 检查以及可选的 PDF 支持。 |
95
+ | [`file-browse`](./extensions/file-browse/) | `/browse` | 启动一个以工作目录为根的本地回环、只读文件浏览器,带 Markdown 预览和模糊快速打开面板。 |
96
+ | [`document`](./extensions/document/) | `read_doc` | 在进程内从本地 PDF、DOCX、DOC、ODT、RTF 或 XLSX 提取文本,支持分页。 |
97
+ | [`file-open`](./extensions/file-open/) | `/open`, `open_path` | 用操作系统原生应用打开或定位文件/目录。 |
98
+ | [`wechat`](./extensions/wechat/) | `/wechat`, `send_wechat` | 通过微信 iLink 机器人 API 把微信聊天桥接到实时会话;入站文本、图片和文件会变成回合。 |
99
+
100
+ ### 界面与维护
101
+
102
+ | 扩展 | 工具与命令 | 说明 |
103
+ |---|---|---|
104
+ | [`bytefly`](./extensions/bytefly/) | `/bytefly`, `/extensions`, `/doctor`, `run_doctor` | 主题化头部与宽度自适应页脚、已完成回合之间的分隔线、`/bytefly` 扩展屏幕(别名 `/extensions` 和 `/doctor`)——列出每个扩展及其健康状况并启用或禁用一个扩展;以及可选的 `notify` 能力:当一次运行或后台任务结束、或智能体请求输入时发出系统通知。DeepSeek 开箱即定价,`bytefly.json` 是每个扩展都会读取的共享配置文档。 |
105
+ | [`bytefly-dark`](./themes/bytefly-dark.json) / [`bytefly-light`](./themes/bytefly-light.json) | `/settings` → **Theme** | GitHub 风格的深色调色板及其浅色搭档,并支持可选的自动浅色/深色切换。 |
106
+
107
+ ## 配置
108
+
109
+ 大多数扩展无需配置。所有设置都在一个共享文档 `bytefly.json` 中,从
110
+ `<agent-dir>/bytefly.json` 读取,并与 `<cwd>/.pi/bytefly.json` 合并(项目优先),
111
+ 位于一个以扩展名命名的顶层 section 下。每个扩展的 `README.md` 列出它的键,
112
+ [`docs/configuration.md`](./docs/configuration.md) 为其建立索引,
113
+ [`assets/bytefly.schema.json`](./assets/bytefly.schema.json) 校验该文件。
114
+
115
+ 每个扩展默认都开启。若要在加载整包时排除其中一些,把 `PI_DISABLED_EXTENSIONS`
116
+ 设为一个以逗号或空白分隔的扩展名列表(即 [`extensions/`](./extensions/) 下的目录
117
+ 名):
118
+
119
+ ```bash
120
+ PI_DISABLED_EXTENSIONS=todo,job pi -e .
121
+ ```
122
+
123
+ 名称比较不区分大小写,未知名称会被忽略。这只会阻止工厂注册;若要移除整包,请使用
124
+ Pi 的 `--no-extensions`,或从你的设置中删除该包。
125
+
126
+ ## 文档
127
+
128
+ | 指南 | 内容 |
129
+ |---|---|
130
+ | [快速开始](./docs/getting-started.md) | 环境要求、安装选项、验证加载、主题。 |
131
+ | [扩展](./docs/extensions.md) | 所有扩展与主题的完整目录。 |
132
+ | [配置](./docs/configuration.md) | 配置文件解析、按扩展索引、环境变量。 |
133
+ | [架构](./docs/architecture.md) | 包、各扩展与 `lib/` 如何协同。 |
134
+ | [开发](./docs/development.md) | 本地设置、检查、测试、跨平台注意事项与发布流程。 |
135
+ | [安全](./docs/security.md) | 回环与远程界面的信任边界。 |
136
+
137
+ ## 环境要求
138
+
139
+ - **Pi** —— 需要一个可用的安装;`my-pi-agent` 是一个包,不是分叉。
140
+ - **操作系统** —— Windows、macOS 和 Linux;完整检查套件在三者的 CI 上都会运行。
141
+ - **git** 需在 `PATH` 上,供 `worktree` 和 `rewind` 扩展使用;其余部分会优雅降级或
142
+ 禁用,`/doctor` 会告诉你缺什么。
143
+ - 可选的运行时组件(例如用于 HTML 导出的浏览器)由 `/doctor` 按扩展报告。
144
+
145
+ ## 参与贡献
146
+
147
+ 欢迎贡献。请先阅读 [`CONTRIBUTING.md`](./CONTRIBUTING.md),了解设置、worktree
148
+ 分支流程以及改动必须通过的检查。AI 编码智能体应阅读
149
+ [`AGENTS.md`](./AGENTS.md)。
150
+
151
+ ## 许可证
152
+
153
+ MIT
Binary file