@rainmanhhh/pi-web 0.15.24 → 0.15.26

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 (97) hide show
  1. package/README.md +8 -17
  2. package/README.zh-CN.md +8 -17
  3. package/dist/server.mjs +130 -130
  4. package/dist/static/assets/CodeMirrorEditor-DIiHnHN2.js +39 -0
  5. package/dist/static/assets/{abnfDiagram-VCTEODGH-UwdvHVXf.js → abnfDiagram-VCTEODGH-DLG-FvFC.js} +1 -1
  6. package/dist/static/assets/architecture-7GRP2DOG-V-hLMD7V.js +1 -0
  7. package/dist/static/assets/{architectureDiagram-5GKGNRK7-CX6L-ldY.js → architectureDiagram-5GKGNRK7-BHXs2K7Q.js} +1 -1
  8. package/dist/static/assets/{blockDiagram-I7D4REHJ-Ch3JYe8H.js → blockDiagram-I7D4REHJ-DG50vMTb.js} +1 -1
  9. package/dist/static/assets/{c4Diagram-7LVT6UL2-DYB17uzZ.js → c4Diagram-7LVT6UL2-CpYmjg4f.js} +1 -1
  10. package/dist/static/assets/channel-BGfmKd3N.js +1 -0
  11. package/dist/static/assets/{chunk-4HAMMTFA-DNEWn6n4.js → chunk-4HAMMTFA-CxuZzCf5.js} +1 -1
  12. package/dist/static/assets/{chunk-75Z2AOVW-Hnetna_D.js → chunk-75Z2AOVW-BHdGga9h.js} +1 -1
  13. package/dist/static/assets/{chunk-DU6HZSFF-DOWQ-_3y.js → chunk-DU6HZSFF-C9NyR4eD.js} +3 -3
  14. package/dist/static/assets/{chunk-F27PBJKO-CqVBJ9H2.js → chunk-F27PBJKO-DpyXeodJ.js} +1 -1
  15. package/dist/static/assets/{chunk-GMAD6QVW-Ixn9yech.js → chunk-GMAD6QVW-78XWZVBD.js} +1 -1
  16. package/dist/static/assets/{chunk-GVQU2GXP-Yl40EqQl.js → chunk-GVQU2GXP-BS_zah4P.js} +1 -1
  17. package/dist/static/assets/{chunk-IMKFNOWR-BaItQwNa.js → chunk-IMKFNOWR-DZmAlHvE.js} +1 -1
  18. package/dist/static/assets/{chunk-L3NEJ4N5-Dywr0Cdu.js → chunk-L3NEJ4N5-9M0F_QJ3.js} +1 -1
  19. package/dist/static/assets/{chunk-OSK3NFVY-CCJYET20.js → chunk-OSK3NFVY-DEKeRwkT.js} +1 -1
  20. package/dist/static/assets/{chunk-P2QGCYS3-C32Ly-X6.js → chunk-P2QGCYS3-DVCHs6L2.js} +1 -1
  21. package/dist/static/assets/{chunk-POPQ4Y6H-Dqy60leL.js → chunk-POPQ4Y6H-Br1gO1bK.js} +1 -1
  22. package/dist/static/assets/{chunk-PWAF6VOD-BJSwn3ig.js → chunk-PWAF6VOD-s9nE5cJ5.js} +1 -1
  23. package/dist/static/assets/{chunk-SHT3W25Y-BtUDInpv.js → chunk-SHT3W25Y-vN-1POTV.js} +1 -1
  24. package/dist/static/assets/{chunk-SVP7TREG-B78oLN_Q.js → chunk-SVP7TREG-C5iCGGrR.js} +1 -1
  25. package/dist/static/assets/{chunk-TICWLB2K-DHN8xs74.js → chunk-TICWLB2K-iKss14Kx.js} +1 -1
  26. package/dist/static/assets/classDiagram-ZZMXUADV-B-Q38QiL.js +1 -0
  27. package/dist/static/assets/classDiagram-v2-VYDZK3BY-B-Q38QiL.js +1 -0
  28. package/dist/static/assets/{cynefin-OW5HDTMX-CkI7CnlQ.js → cynefin-OW5HDTMX-wUBY8mye.js} +1 -1
  29. package/dist/static/assets/{cynefinDiagram-5FMLGOSQ-CW0k4UqV.js → cynefinDiagram-5FMLGOSQ-BBfqNYxW.js} +1 -1
  30. package/dist/static/assets/{dagre-GXQ25YYZ-wxBOguO_.js → dagre-GXQ25YYZ-u2Fx5giL.js} +1 -1
  31. package/dist/static/assets/{diagram-S7CK7UJ4-DGObBccp.js → diagram-S7CK7UJ4-ewrQdUCW.js} +1 -1
  32. package/dist/static/assets/{diagram-UQ7AKVKN-tbKb--1k.js → diagram-UQ7AKVKN-BRyo1B2Q.js} +1 -1
  33. package/dist/static/assets/{diagram-VSXAHHWV-XhAHjaT2.js → diagram-VSXAHHWV-Dz7e2BMM.js} +1 -1
  34. package/dist/static/assets/{diagram-VX7I27RA-D4TgpaZ9.js → diagram-VX7I27RA-BXlAuUBB.js} +1 -1
  35. package/dist/static/assets/{diagram-Z3DM3KII-mVAOnzUS.js → diagram-Z3DM3KII-K5C_v28j.js} +1 -1
  36. package/dist/static/assets/{ebnfDiagram-PWID7BFC-DjunDWW1.js → ebnfDiagram-PWID7BFC-ClXS6KpV.js} +1 -1
  37. package/dist/static/assets/{erDiagram-RLTQ6QDP-D99C8ZW3.js → erDiagram-RLTQ6QDP-C0ClhOqP.js} +1 -1
  38. package/dist/static/assets/eventmodeling-NTZA5JFV-Y_lBwv0_.js +1 -0
  39. package/dist/static/assets/flowDiagram-HODETNUW-B8dGoyK0.js +1 -0
  40. package/dist/static/assets/{ganttDiagram-EL5Y4UJY-CKAQpH9x.js → ganttDiagram-EL5Y4UJY-BdDphtij.js} +1 -1
  41. package/dist/static/assets/{gitGraph-4MIJSDKK-Cu9TC3Iu.js → gitGraph-4MIJSDKK-Br2lT4sS.js} +1 -1
  42. package/dist/static/assets/{gitGraphDiagram-WWUBYQGX-CqfHIbFa.js → gitGraphDiagram-WWUBYQGX-D1yoSahN.js} +1 -1
  43. package/dist/static/assets/{highlighted-body-KPVGNVTW-Fja8F_Os.js → highlighted-body-KPVGNVTW-McvGMRtr.js} +1 -1
  44. package/dist/static/assets/index-BbcgQFTP.js +509 -0
  45. package/dist/static/assets/{info-A6RAGUB7-COzlP4yP.js → info-A6RAGUB7-Dw-ff4ue.js} +1 -1
  46. package/dist/static/assets/{infoDiagram-27XIBGKW-33yIRJWR.js → infoDiagram-27XIBGKW-BjW3vxPT.js} +1 -1
  47. package/dist/static/assets/{ishikawaDiagram-5VMMS53U-DR6BkjxP.js → ishikawaDiagram-5VMMS53U-F6-IKFvV.js} +1 -1
  48. package/dist/static/assets/{journeyDiagram-3NMN7TZE-BmXH9Pn5.js → journeyDiagram-3NMN7TZE-9AAgKEGW.js} +1 -1
  49. package/dist/static/assets/{kanban-definition-UXKFOSKX-AiPpHBBF.js → kanban-definition-UXKFOSKX-DcYAikOJ.js} +1 -1
  50. package/dist/static/assets/{line-DFmi1thr.js → line-DAWpylln.js} +1 -1
  51. package/dist/static/assets/mermaid-HWGCJPDP-BXpzT6aa.js +1 -0
  52. package/dist/static/assets/{mermaid-parser.core-DSKhpDc8.js → mermaid-parser.core-Cr8Iaj6Q.js} +3 -3
  53. package/dist/static/assets/{mermaid.core-Bqi0eIx-.js → mermaid.core-DADvtc6n.js} +4 -4
  54. package/dist/static/assets/{mindmap-definition-YA3MSWOX-BvI_gBJZ.js → mindmap-definition-YA3MSWOX-DUAml3Om.js} +1 -1
  55. package/dist/static/assets/{packet-AYTQ26CC-DWTTQZ0Y.js → packet-AYTQ26CC-BIVAICp6.js} +1 -1
  56. package/dist/static/assets/{pegDiagram-XKGWAZYB-CDeyaW60.js → pegDiagram-XKGWAZYB-ChBMBDW1.js} +1 -1
  57. package/dist/static/assets/{pie-WAS4IAKB-BmMq_rXY.js → pie-WAS4IAKB-CGXvuPuR.js} +1 -1
  58. package/dist/static/assets/{pieDiagram-E7YTZNPT-Cxjc8odb.js → pieDiagram-E7YTZNPT-BJJF9uQl.js} +1 -1
  59. package/dist/static/assets/{quadrantDiagram-AXDQQJYC-CGLh3Zx7.js → quadrantDiagram-AXDQQJYC-Cu8bhfPR.js} +1 -1
  60. package/dist/static/assets/{radar-RG4KPBEZ-D2UBqT07.js → radar-RG4KPBEZ-DWPq4hx7.js} +1 -1
  61. package/dist/static/assets/{railroad-74A4TZTK-Dvutk0qU.js → railroad-74A4TZTK-BVEvewKD.js} +1 -1
  62. package/dist/static/assets/railroad-abnf-HS5TGJTU-Dbg1QZp2.js +1 -0
  63. package/dist/static/assets/railroad-ebnf-LZEXJU2U-AHWHMsNp.js +1 -0
  64. package/dist/static/assets/railroad-peg-WCYAUIDC-D-ymX7et.js +1 -0
  65. package/dist/static/assets/{railroadDiagram-O6MQD6OU-8ARj9u4y.js → railroadDiagram-O6MQD6OU-B07t3cRv.js} +1 -1
  66. package/dist/static/assets/{requirementDiagram-BXWQKSXE-D1Hurj_t.js → requirementDiagram-BXWQKSXE-BaODdgPK.js} +1 -1
  67. package/dist/static/assets/{sankeyDiagram-P5KCCOFB-CohpFThf.js → sankeyDiagram-P5KCCOFB-DH8OuyTA.js} +1 -1
  68. package/dist/static/assets/{sequenceDiagram-WJ2MYXX4-BW1kmrfN.js → sequenceDiagram-WJ2MYXX4-7p-N2D3K.js} +1 -1
  69. package/dist/static/assets/{stateDiagram-D77RDMKH-CzH3BX9p.js → stateDiagram-D77RDMKH-BKd2u1p9.js} +1 -1
  70. package/dist/static/assets/stateDiagram-v2-MP3YSRHH-Cpa6Xfgi.js +1 -0
  71. package/dist/static/assets/{swimlanes-42K2YHIH-xuA8d44M.js → swimlanes-42K2YHIH-CBSChLpa.js} +1 -1
  72. package/dist/static/assets/swimlanesDiagram-VR7AAH4N-CZUKsELT.js +8 -0
  73. package/dist/static/assets/{timeline-definition-24CTP7MA-dXiHnZv0.js → timeline-definition-24CTP7MA-BCtBUg1c.js} +1 -1
  74. package/dist/static/assets/{treeView-Q6P3EWNA-B42vrHJz.js → treeView-Q6P3EWNA-ug13Qt_I.js} +1 -1
  75. package/dist/static/assets/{treemap-WGGIJYW6-C46-ebg2.js → treemap-WGGIJYW6-JqS-DR-B.js} +1 -1
  76. package/dist/static/assets/{vennDiagram-4TSXK5OY-BeF9n8on.js → vennDiagram-4TSXK5OY-EiEPohHX.js} +1 -1
  77. package/dist/static/assets/{wardley-WFR3VGLG-uDdA_PxQ.js → wardley-WFR3VGLG-BBmilDRw.js} +1 -1
  78. package/dist/static/assets/{wardleyDiagram-VM6X3IG4-WyQNY9gl.js → wardleyDiagram-VM6X3IG4-CQk7nQMV.js} +1 -1
  79. package/dist/static/assets/{xychartDiagram-S5SC5T6Z-DWWdkumu.js → xychartDiagram-S5SC5T6Z-UzNgGjo0.js} +1 -1
  80. package/dist/static/index.html +7 -7
  81. package/dist/static/recommended-plugins.json +40 -8
  82. package/package.json +5 -5
  83. package/public/recommended-plugins.json +40 -8
  84. package/dist/static/assets/CodeMirrorEditor-CTDVDayM.js +0 -39
  85. package/dist/static/assets/architecture-7GRP2DOG-Bq5hsoWf.js +0 -1
  86. package/dist/static/assets/channel-C2C-dG17.js +0 -1
  87. package/dist/static/assets/classDiagram-ZZMXUADV-ZU1HrE1k.js +0 -1
  88. package/dist/static/assets/classDiagram-v2-VYDZK3BY-ZU1HrE1k.js +0 -1
  89. package/dist/static/assets/eventmodeling-NTZA5JFV-4GaXk7nv.js +0 -1
  90. package/dist/static/assets/flowDiagram-HODETNUW-DVbJXemA.js +0 -1
  91. package/dist/static/assets/index-BVtzcVfG.js +0 -508
  92. package/dist/static/assets/mermaid-HWGCJPDP-Cq1zCBTs.js +0 -1
  93. package/dist/static/assets/railroad-abnf-HS5TGJTU-DoRoWoaF.js +0 -1
  94. package/dist/static/assets/railroad-ebnf-LZEXJU2U-BkrdA5Ys.js +0 -1
  95. package/dist/static/assets/railroad-peg-WCYAUIDC-CMCIfMt8.js +0 -1
  96. package/dist/static/assets/stateDiagram-v2-MP3YSRHH-DibSFBCa.js +0 -1
  97. package/dist/static/assets/swimlanesDiagram-VR7AAH4N-B3pmfIz0.js +0 -8
package/README.md CHANGED
@@ -48,28 +48,18 @@ Set `PI_WEB_PASSWORD` to protect the web interface and every API endpoint with H
48
48
  Pi Web can invoke a high-privilege agent. Basic Auth does not encrypt the password in transit, so do not expose plain HTTP to the internet. Use HTTPS through a trusted reverse proxy or a trusted VPN for remote access.
49
49
  API requests accept loopback names, IP literals, and exact comma-separated names in `PI_WEB_ALLOWED_HOSTS`. Configure that variable when a trusted reverse proxy uses a different external hostname. `PI_WEB_HOSTNAME` is a legacy alias for the same allow-list — it does **not** control the bind address (use `HOST` for that).
50
50
 
51
- ## HTTP Proxy
51
+ ## Runtime: Node.js or Bun
52
52
 
53
- Pi Web reads the standard `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` environment variables for server-side model and API requests.
53
+ The published bundle declares `#!/usr/bin/env node`, and every launcher honours that shebang the Windows npm shim calls Node, and Bun spawns a Node process too. So **Node is the default runtime everywhere**.
54
54
 
55
- On macOS or Linux:
55
+ Bun is supported as well and starts faster (its file I/O helps most with projects that have many session files). Bun respects shebangs, so using it is explicit — `--bun` goes **before** the package name:
56
56
 
57
57
  ```bash
58
- HTTP_PROXY=http://127.0.0.1:7890 \
59
- HTTPS_PROXY=http://127.0.0.1:7890 \
60
- NO_PROXY=localhost,127.0.0.1 \
61
- npx @rainmanhhh/pi-web@latest
62
- ```
63
-
64
- On Windows PowerShell:
65
-
66
- ```powershell
67
- $env:HTTP_PROXY = "http://127.0.0.1:7890"
68
- $env:HTTPS_PROXY = "http://127.0.0.1:7890"
69
- $env:NO_PROXY = "localhost,127.0.0.1"
70
- npx @rainmanhhh/pi-web@latest
58
+ bunx --bun @rainmanhhh/pi-web@latest # run without installing
59
+ bunx --bun pi-web # when installed globally
71
60
  ```
72
61
 
62
+ Plain `bunx pi-web` still runs on Node. Node remains the tested configuration; if something misbehaves under Bun, retry on Node first to tell runtime differences apart from real bugs.
73
63
  ## Features
74
64
 
75
65
  - **Pick work back up**: browse previous pi conversations by project without digging through terminal history or session paths.
@@ -92,6 +82,7 @@ npx @rainmanhhh/pi-web@latest
92
82
  - **Git worktrees**: see [Worktrees in Pi Web](./docs/worktrees.md) for when the switcher appears, how new worktrees are created, and what removal does.
93
83
  - **Forks vs in-session branches**: Fork creates a new `.jsonl` file. "Edit from here" creates another branch inside the same session file.
94
84
  - **Internationalization**: see [Internationalization](./docs/i18n.md) for using translations and adding languages or UI text.
85
+ - **Proxy support**: Pi Web does **not** read `HTTP_PROXY`, `HTTPS_PROXY`, or `NO_PROXY`. To reach upstream model APIs through a proxy, use a system-level tool (TUN / transparent proxy) instead — it needs no application support and covers every request.
95
86
 
96
87
  ## Development
97
88
 
@@ -144,7 +135,7 @@ server/
144
135
  routes/ # API handlers: agent, auth, cwd, files, git, models,
145
136
  # sessions, skills, worktrees, preferences, project-trust, …
146
137
  static.ts # serves dist/static in production (single-process mode)
147
- mount.ts # Next-style route-module adapter for Hono
138
+ mount.ts # route-module adapter for Hono (one route.ts per path)
148
139
  scripts/ # e2e-stop, cdp-capture helpers
149
140
  tests/e2e/ # Playwright specs and fixtures
150
141
  vite.config.ts # dev server (:30001), /api proxy → :30002, build outDir
package/README.zh-CN.md CHANGED
@@ -46,28 +46,18 @@ PI_WEB_PASSWORD='足够长的随机密码' pi-web # 启用 Basic Auth(用户
46
46
  Pi Web 可以调用高权限智能体。Basic Auth 不会加密传输中的密码,因此不要把明文 HTTP 暴露到互联网。远程访问时应使用可信反向代理提供 HTTPS,或通过可信 VPN 访问。
47
47
  API 请求仅接受 loopback 名称、IP 字面量,以及 `PI_WEB_ALLOWED_HOSTS` 中以逗号分隔的精确主机名。可信反向代理使用不同的外部主机名时,请配置该变量。`PI_WEB_HOSTNAME` 是该白名单的旧别名,**不**控制监听地址(绑定地址请用 `HOST`)。
48
48
 
49
- ## HTTP 代理
49
+ ## 运行时:Node.js 还是 Bun
50
50
 
51
- Pi Web 的服务端模型请求和 API 请求会读取标准的 `HTTP_PROXY`、`HTTPS_PROXY` `NO_PROXY` 环境变量。
51
+ 发布产物里声明的是 `#!/usr/bin/env node`,各启动器都会遵循这个 shebang —— Windows npm shim 调用 Node,Bun 也会启动 Node 进程来执行。因此**默认运行时始终是 Node**。
52
52
 
53
- macOS Linux:
53
+ Pi Web 同样支持 Bun,且启动更快(会话文件很多的项目收益最明显)。Bun 默认尊重 shebang,所以要显式指定,`--bun` 必须写在包名**之前**:
54
54
 
55
55
  ```bash
56
- HTTP_PROXY=http://127.0.0.1:7890 \
57
- HTTPS_PROXY=http://127.0.0.1:7890 \
58
- NO_PROXY=localhost,127.0.0.1 \
59
- npx @rainmanhhh/pi-web@latest
60
- ```
61
-
62
- Windows PowerShell:
63
-
64
- ```powershell
65
- $env:HTTP_PROXY = "http://127.0.0.1:7890"
66
- $env:HTTPS_PROXY = "http://127.0.0.1:7890"
67
- $env:NO_PROXY = "localhost,127.0.0.1"
68
- npx @rainmanhhh/pi-web@latest
56
+ bunx --bun @rainmanhhh/pi-web@latest # 无需安装,直接运行
57
+ bunx --bun pi-web # 已全局安装时
69
58
  ```
70
59
 
60
+ 直接 `bunx pi-web` 仍然跑在 Node 上。Node 是经过充分测试的配置;如果在 Bun 下出现异常,请先换回 Node 复现,以区分运行时差异与程序缺陷。
71
61
  ## 功能介绍
72
62
 
73
63
  - **把历史工作接回来**:打开网页就能按项目找到以前的 pi 对话,不必在终端里翻文件或记住会话路径。
@@ -90,6 +80,7 @@ npx @rainmanhhh/pi-web@latest
90
80
  - **Git worktree**:什么时候显示切换器、新建目录在哪里、删除会影响什么,见 [Pi Web 里的 Worktree](./docs/worktrees.zh-CN.md)。
91
81
  - **Fork 与会话内分支不同**:Fork 会创建新的 `.jsonl` 文件;“Edit from here” 是同一会话文件里的分支。
92
82
  - **国际化**:翻译使用与新增语言/UI 文案的方法见 [Internationalization](./docs/i18n.md)。
83
+ - **代理支持**:Pi Web **不会**读取 `HTTP_PROXY`、`HTTPS_PROXY` 和 `NO_PROXY`。需要让服务端请求走代理时,请改用系统层方案(TUN / 透明代理)——无需应用配合,且覆盖所有请求。
93
84
 
94
85
  ## 开发
95
86
 
@@ -142,7 +133,7 @@ server/
142
133
  routes/ # API 处理器:agent、auth、cwd、files、git、models、
143
134
  # sessions、skills、worktrees、preferences、project-trust 等
144
135
  static.ts # 生产环境提供 dist/static(单进程模式)
145
- mount.ts # Next 风格路由模块到 Hono 的适配
136
+ mount.ts # 路由模块(每个路径一个 route.ts)到 Hono 的适配
146
137
  scripts/ # e2e-stop、cdp-capture 辅助脚本
147
138
  tests/e2e/ # Playwright 测试与 fixtures
148
139
  vite.config.ts # dev server(:30001)、/api 代理 → :30002、build outDir