@vitos-pizza/vitos-pizza 0.1.0 → 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.
Files changed (259) hide show
  1. package/AGENTS.md +158 -158
  2. package/CHANGELOG.md +42 -24
  3. package/LICENSE +21 -21
  4. package/README.md +237 -234
  5. package/assets/logo.svg +28 -28
  6. package/node_modules/@vitos-pizza/agent-mode/extensions/index.ts +138 -117
  7. package/node_modules/@vitos-pizza/agent-mode/package.json +3 -3
  8. package/node_modules/@vitos-pizza/agent-mode/src/apply-mode.ts +60 -60
  9. package/node_modules/@vitos-pizza/agent-mode/src/mode-events.ts +102 -102
  10. package/node_modules/@vitos-pizza/agent-mode/src/modes.ts +43 -43
  11. package/node_modules/@vitos-pizza/agent-mode/src/plan-instructions.ts +85 -44
  12. package/node_modules/@vitos-pizza/agent-mode/tests/apply-mode.test.ts +36 -36
  13. package/node_modules/@vitos-pizza/agent-mode/tests/mode-events.test.ts +22 -22
  14. package/node_modules/@vitos-pizza/agent-mode/tests/modes.test.ts +38 -38
  15. package/node_modules/@vitos-pizza/agent-mode/tests/plan-instructions.test.ts +68 -45
  16. package/node_modules/@vitos-pizza/agent-mode/tsconfig.json +13 -13
  17. package/node_modules/@vitos-pizza/agent-mode/vitest.config.ts +8 -8
  18. package/node_modules/@vitos-pizza/keybindings/extensions/index.ts +104 -104
  19. package/node_modules/@vitos-pizza/keybindings/package.json +1 -1
  20. package/node_modules/@vitos-pizza/keybindings/presets/shortcuts.json +3 -3
  21. package/node_modules/@vitos-pizza/keybindings/src/bind.ts +57 -57
  22. package/node_modules/@vitos-pizza/keybindings/src/config.ts +84 -84
  23. package/node_modules/@vitos-pizza/keybindings/src/registry.ts +43 -43
  24. package/node_modules/@vitos-pizza/keybindings/src/types.ts +54 -54
  25. package/node_modules/@vitos-pizza/keybindings/tests/config.test.ts +83 -83
  26. package/node_modules/@vitos-pizza/keybindings/tests/registry.test.ts +142 -142
  27. package/node_modules/@vitos-pizza/keybindings/tsconfig.json +13 -13
  28. package/node_modules/@vitos-pizza/keybindings/vitest.config.ts +8 -8
  29. package/node_modules/@vitos-pizza/permission-system/extensions/index.ts +162 -162
  30. package/node_modules/@vitos-pizza/permission-system/package.json +2 -2
  31. package/node_modules/@vitos-pizza/permission-system/src/bash/matcher.ts +54 -51
  32. package/node_modules/@vitos-pizza/permission-system/src/bash/parser.ts +40 -40
  33. package/node_modules/@vitos-pizza/permission-system/src/config-paths.ts +23 -23
  34. package/node_modules/@vitos-pizza/permission-system/src/detect-preset-mode.ts +61 -61
  35. package/node_modules/@vitos-pizza/permission-system/src/expand-home.ts +12 -12
  36. package/node_modules/@vitos-pizza/permission-system/src/forwarding/forwarder.ts +224 -224
  37. package/node_modules/@vitos-pizza/permission-system/src/forwarding/subagent-registry.ts +61 -61
  38. package/node_modules/@vitos-pizza/permission-system/src/gates/path-utils.ts +66 -66
  39. package/node_modules/@vitos-pizza/permission-system/src/gates/pipeline.ts +151 -155
  40. package/node_modules/@vitos-pizza/permission-system/src/handlers/before-agent-start.ts +86 -65
  41. package/node_modules/@vitos-pizza/permission-system/src/handlers/skill-input.ts +1 -1
  42. package/node_modules/@vitos-pizza/permission-system/src/handlers/tool-call-gate.ts +204 -199
  43. package/node_modules/@vitos-pizza/permission-system/src/mode-api.ts +44 -44
  44. package/node_modules/@vitos-pizza/permission-system/src/permission-evaluator.ts +233 -216
  45. package/node_modules/@vitos-pizza/permission-system/src/permission-session.ts +62 -62
  46. package/node_modules/@vitos-pizza/permission-system/src/policy-loader.ts +211 -211
  47. package/node_modules/@vitos-pizza/permission-system/src/sanitizers/skill-prompt.ts +99 -99
  48. package/node_modules/@vitos-pizza/permission-system/src/sanitizers/system-prompt.ts +221 -221
  49. package/node_modules/@vitos-pizza/permission-system/src/service.ts +66 -66
  50. package/node_modules/@vitos-pizza/permission-system/src/session-approvals.ts +4 -1
  51. package/node_modules/@vitos-pizza/permission-system/src/types.ts +80 -80
  52. package/node_modules/@vitos-pizza/permission-system/src/ui/approval-summary.ts +43 -43
  53. package/node_modules/@vitos-pizza/permission-system/src/ui/config-modal.ts +36 -36
  54. package/node_modules/@vitos-pizza/permission-system/src/ui/permission-dialog.ts +52 -52
  55. package/node_modules/@vitos-pizza/permission-system/src/wildcard-matcher.ts +81 -81
  56. package/node_modules/@vitos-pizza/permission-system/src/yaml-frontmatter.ts +84 -84
  57. package/node_modules/@vitos-pizza/permission-system/src/yolo/runtime-api.ts +49 -49
  58. package/node_modules/@vitos-pizza/permission-system/tests/bash-parser.test.ts +32 -32
  59. package/node_modules/@vitos-pizza/permission-system/tests/before-agent-start.test.ts +61 -0
  60. package/node_modules/@vitos-pizza/permission-system/tests/detect-preset-mode.test.ts +68 -68
  61. package/node_modules/@vitos-pizza/permission-system/tests/forwarder.test.ts +55 -55
  62. package/node_modules/@vitos-pizza/permission-system/tests/gates.test.ts +170 -61
  63. package/node_modules/@vitos-pizza/permission-system/tests/path-utils.test.ts +68 -68
  64. package/node_modules/@vitos-pizza/permission-system/tests/permission-evaluator.test.ts +82 -55
  65. package/node_modules/@vitos-pizza/permission-system/tests/policy-loader.test.ts +25 -25
  66. package/node_modules/@vitos-pizza/permission-system/tests/system-prompt-sanitizer.test.ts +22 -22
  67. package/node_modules/@vitos-pizza/permission-system/tests/wildcard-matcher.test.ts +27 -27
  68. package/node_modules/@vitos-pizza/permission-system/tsconfig.json +13 -13
  69. package/node_modules/@vitos-pizza/permission-system/vitest.config.ts +8 -8
  70. package/node_modules/@vitos-pizza/question/package.json +1 -1
  71. package/node_modules/@vitos-pizza/question/src/question-ui.ts +5 -1
  72. package/node_modules/@vitos-pizza/question/src/register-tool.ts +1 -4
  73. package/node_modules/@vitos-pizza/question/tests/question-ui-width-cache.test.ts +45 -0
  74. package/node_modules/@vitos-pizza/question/tests/register-tool-render.test.ts +48 -45
  75. package/node_modules/@vitos-pizza/session-title/extensions/index.ts +137 -137
  76. package/node_modules/@vitos-pizza/session-title/package.json +3 -3
  77. package/node_modules/@vitos-pizza/session-title/src/build-title-prompt.ts +16 -16
  78. package/node_modules/@vitos-pizza/session-title/src/extract-title-context.ts +55 -55
  79. package/node_modules/@vitos-pizza/session-title/src/fast-rules.ts +48 -48
  80. package/node_modules/@vitos-pizza/session-title/src/load-settings.ts +70 -70
  81. package/node_modules/@vitos-pizza/session-title/src/normalize-title.ts +20 -20
  82. package/node_modules/@vitos-pizza/session-title/src/parse-title-response.ts +6 -6
  83. package/node_modules/@vitos-pizza/session-title/src/resolve-title-model.ts +33 -33
  84. package/node_modules/@vitos-pizza/session-title/src/schedule-title-job.ts +53 -53
  85. package/node_modules/@vitos-pizza/session-title/src/should-schedule.ts +30 -30
  86. package/node_modules/@vitos-pizza/session-title/src/title-agent.ts +60 -60
  87. package/node_modules/@vitos-pizza/session-title/src/truncate-input.ts +10 -10
  88. package/node_modules/@vitos-pizza/session-title/src/types.ts +29 -29
  89. package/node_modules/@vitos-pizza/session-title/tests/build-title-prompt.test.ts +34 -34
  90. package/node_modules/@vitos-pizza/session-title/tests/extension.test.ts +198 -198
  91. package/node_modules/@vitos-pizza/session-title/tests/extract-title-context.test.ts +48 -48
  92. package/node_modules/@vitos-pizza/session-title/tests/fast-rules.test.ts +43 -43
  93. package/node_modules/@vitos-pizza/session-title/tests/parse-title-response.test.ts +34 -34
  94. package/node_modules/@vitos-pizza/session-title/tests/should-schedule.test.ts +30 -30
  95. package/node_modules/@vitos-pizza/session-title/tests/title-agent.test.ts +154 -154
  96. package/node_modules/@vitos-pizza/session-title/tests/truncate-input.test.ts +15 -15
  97. package/node_modules/@vitos-pizza/session-title/tsconfig.json +13 -13
  98. package/node_modules/@vitos-pizza/session-title/vitest.config.ts +8 -8
  99. package/node_modules/@vitos-pizza/subagents/agents/planner.md +46 -43
  100. package/node_modules/@vitos-pizza/subagents/agents/scout.md +40 -40
  101. package/node_modules/@vitos-pizza/subagents/agents/title.md +13 -13
  102. package/node_modules/@vitos-pizza/subagents/agents/worker.md +36 -36
  103. package/node_modules/@vitos-pizza/subagents/extensions/index.ts +164 -164
  104. package/node_modules/@vitos-pizza/subagents/package.json +1 -1
  105. package/node_modules/@vitos-pizza/subagents/skills/subagents/SKILL.md +86 -80
  106. package/node_modules/@vitos-pizza/subagents/src/agents.ts +166 -166
  107. package/node_modules/@vitos-pizza/subagents/src/async/job-tracker.ts +71 -71
  108. package/node_modules/@vitos-pizza/subagents/src/async/spawn-async.ts +220 -220
  109. package/node_modules/@vitos-pizza/subagents/src/async/storage.ts +57 -57
  110. package/node_modules/@vitos-pizza/subagents/src/env.ts +4 -4
  111. package/node_modules/@vitos-pizza/subagents/src/execute-subagent.ts +285 -285
  112. package/node_modules/@vitos-pizza/subagents/src/progress.ts +187 -187
  113. package/node_modules/@vitos-pizza/subagents/src/render-animation.ts +40 -40
  114. package/node_modules/@vitos-pizza/subagents/src/render.ts +428 -428
  115. package/node_modules/@vitos-pizza/subagents/src/rpc/channels.ts +21 -21
  116. package/node_modules/@vitos-pizza/subagents/src/rpc/client.ts +144 -144
  117. package/node_modules/@vitos-pizza/subagents/src/rpc/server.ts +11 -11
  118. package/node_modules/@vitos-pizza/subagents/src/run-agent.ts +313 -313
  119. package/node_modules/@vitos-pizza/subagents/src/runtime.ts +102 -102
  120. package/node_modules/@vitos-pizza/subagents/src/schema.ts +62 -62
  121. package/node_modules/@vitos-pizza/subagents/src/spawn.ts +104 -104
  122. package/node_modules/@vitos-pizza/subagents/src/types.ts +92 -92
  123. package/node_modules/@vitos-pizza/subagents/src/utils.ts +100 -100
  124. package/node_modules/@vitos-pizza/subagents/src/wait.ts +159 -159
  125. package/node_modules/@vitos-pizza/subagents/tests/agents.test.ts +19 -19
  126. package/node_modules/@vitos-pizza/subagents/tests/execute-subagent.test.ts +96 -96
  127. package/node_modules/@vitos-pizza/subagents/tests/extension.test.ts +42 -42
  128. package/node_modules/@vitos-pizza/subagents/tests/progress.test.ts +206 -206
  129. package/node_modules/@vitos-pizza/subagents/tests/rpc.test.ts +74 -74
  130. package/node_modules/@vitos-pizza/subagents/tsconfig.json +13 -13
  131. package/node_modules/@vitos-pizza/subagents/vitest.config.ts +8 -8
  132. package/node_modules/@vitos-pizza/ui-enhancements/package.json +1 -1
  133. package/node_modules/@vitos-pizza/ui-enhancements/src/chrome/agent-mode-badge.ts +60 -60
  134. package/node_modules/@vitos-pizza/ui-enhancements/src/chrome/border-status.ts +14 -1
  135. package/node_modules/@vitos-pizza/ui-enhancements/src/chrome/resize-recovery.ts +63 -0
  136. package/node_modules/@vitos-pizza/ui-enhancements/tests/agent-mode-badge.test.ts +35 -35
  137. package/node_modules/@vitos-pizza/ui-enhancements/tests/resize-recovery.test.ts +135 -0
  138. package/node_modules/@vitos-pizza/websearch/package.json +1 -1
  139. package/node_modules/node-addon-api/tools/conversion.js +0 -0
  140. package/node_modules/node-gyp-build/bin.js +0 -0
  141. package/node_modules/node-gyp-build/build-test.js +0 -0
  142. package/node_modules/node-gyp-build/optional.js +0 -0
  143. package/package.json +11 -9
  144. package/packages/agent-mode/extensions/index.ts +138 -117
  145. package/packages/agent-mode/package.json +3 -3
  146. package/packages/agent-mode/src/apply-mode.ts +60 -60
  147. package/packages/agent-mode/src/mode-events.ts +102 -102
  148. package/packages/agent-mode/src/modes.ts +43 -43
  149. package/packages/agent-mode/src/plan-instructions.ts +85 -44
  150. package/packages/agent-mode/tsconfig.json +13 -13
  151. package/packages/agent-mode/vitest.config.ts +8 -8
  152. package/packages/keybindings/extensions/index.ts +104 -104
  153. package/packages/keybindings/package.json +1 -1
  154. package/packages/keybindings/presets/shortcuts.json +3 -3
  155. package/packages/keybindings/src/bind.ts +57 -57
  156. package/packages/keybindings/src/config.ts +84 -84
  157. package/packages/keybindings/src/registry.ts +43 -43
  158. package/packages/keybindings/src/types.ts +54 -54
  159. package/packages/keybindings/tsconfig.json +13 -13
  160. package/packages/keybindings/vitest.config.ts +8 -8
  161. package/packages/permission-system/extensions/index.ts +162 -162
  162. package/packages/permission-system/node_modules/web-tree-sitter/debug/tree-sitter.wasm +0 -0
  163. package/packages/permission-system/node_modules/web-tree-sitter/tree-sitter.wasm +0 -0
  164. package/packages/permission-system/package.json +2 -2
  165. package/packages/permission-system/src/bash/matcher.ts +54 -51
  166. package/packages/permission-system/src/bash/parser.ts +40 -40
  167. package/packages/permission-system/src/config-paths.ts +23 -23
  168. package/packages/permission-system/src/detect-preset-mode.ts +61 -61
  169. package/packages/permission-system/src/expand-home.ts +12 -12
  170. package/packages/permission-system/src/forwarding/forwarder.ts +224 -224
  171. package/packages/permission-system/src/forwarding/subagent-registry.ts +61 -61
  172. package/packages/permission-system/src/gates/path-utils.ts +66 -66
  173. package/packages/permission-system/src/gates/pipeline.ts +151 -155
  174. package/packages/permission-system/src/handlers/before-agent-start.ts +86 -65
  175. package/packages/permission-system/src/handlers/skill-input.ts +1 -1
  176. package/packages/permission-system/src/handlers/tool-call-gate.ts +204 -199
  177. package/packages/permission-system/src/mode-api.ts +44 -44
  178. package/packages/permission-system/src/permission-evaluator.ts +233 -216
  179. package/packages/permission-system/src/permission-session.ts +62 -62
  180. package/packages/permission-system/src/policy-loader.ts +211 -211
  181. package/packages/permission-system/src/sanitizers/skill-prompt.ts +99 -99
  182. package/packages/permission-system/src/sanitizers/system-prompt.ts +221 -221
  183. package/packages/permission-system/src/service.ts +66 -66
  184. package/packages/permission-system/src/session-approvals.ts +4 -1
  185. package/packages/permission-system/src/types.ts +80 -80
  186. package/packages/permission-system/src/ui/approval-summary.ts +43 -43
  187. package/packages/permission-system/src/ui/config-modal.ts +36 -36
  188. package/packages/permission-system/src/ui/permission-dialog.ts +52 -52
  189. package/packages/permission-system/src/wildcard-matcher.ts +81 -81
  190. package/packages/permission-system/src/yaml-frontmatter.ts +84 -84
  191. package/packages/permission-system/src/yolo/runtime-api.ts +49 -49
  192. package/packages/permission-system/tsconfig.json +13 -13
  193. package/packages/permission-system/vitest.config.ts +8 -8
  194. package/packages/question/package.json +1 -1
  195. package/packages/question/src/question-ui.ts +5 -1
  196. package/packages/question/src/register-tool.ts +1 -4
  197. package/packages/session-title/extensions/index.ts +137 -137
  198. package/packages/session-title/package.json +3 -3
  199. package/packages/session-title/src/build-title-prompt.ts +16 -16
  200. package/packages/session-title/src/extract-title-context.ts +55 -55
  201. package/packages/session-title/src/fast-rules.ts +48 -48
  202. package/packages/session-title/src/load-settings.ts +70 -70
  203. package/packages/session-title/src/normalize-title.ts +20 -20
  204. package/packages/session-title/src/parse-title-response.ts +6 -6
  205. package/packages/session-title/src/resolve-title-model.ts +33 -33
  206. package/packages/session-title/src/schedule-title-job.ts +53 -53
  207. package/packages/session-title/src/should-schedule.ts +30 -30
  208. package/packages/session-title/src/title-agent.ts +60 -60
  209. package/packages/session-title/src/truncate-input.ts +10 -10
  210. package/packages/session-title/src/types.ts +29 -29
  211. package/packages/session-title/tsconfig.json +13 -13
  212. package/packages/session-title/vitest.config.ts +8 -8
  213. package/packages/subagents/agents/planner.md +46 -43
  214. package/packages/subagents/agents/scout.md +40 -40
  215. package/packages/subagents/agents/title.md +13 -13
  216. package/packages/subagents/agents/worker.md +36 -36
  217. package/packages/subagents/extensions/index.ts +164 -164
  218. package/packages/subagents/package.json +1 -1
  219. package/packages/subagents/skills/subagents/SKILL.md +86 -80
  220. package/packages/subagents/src/agents.ts +166 -166
  221. package/packages/subagents/src/async/job-tracker.ts +71 -71
  222. package/packages/subagents/src/async/spawn-async.ts +220 -220
  223. package/packages/subagents/src/async/storage.ts +57 -57
  224. package/packages/subagents/src/env.ts +4 -4
  225. package/packages/subagents/src/execute-subagent.ts +285 -285
  226. package/packages/subagents/src/progress.ts +187 -187
  227. package/packages/subagents/src/render-animation.ts +40 -40
  228. package/packages/subagents/src/render.ts +428 -428
  229. package/packages/subagents/src/rpc/channels.ts +21 -21
  230. package/packages/subagents/src/rpc/client.ts +144 -144
  231. package/packages/subagents/src/rpc/server.ts +11 -11
  232. package/packages/subagents/src/run-agent.ts +313 -313
  233. package/packages/subagents/src/runtime.ts +102 -102
  234. package/packages/subagents/src/schema.ts +62 -62
  235. package/packages/subagents/src/spawn.ts +104 -104
  236. package/packages/subagents/src/types.ts +92 -92
  237. package/packages/subagents/src/utils.ts +100 -100
  238. package/packages/subagents/src/wait.ts +159 -159
  239. package/packages/subagents/tsconfig.json +13 -13
  240. package/packages/subagents/vitest.config.ts +8 -8
  241. package/packages/todoist/extensions/index.ts +163 -0
  242. package/packages/todoist/package.json +34 -0
  243. package/packages/todoist/src/events.ts +7 -0
  244. package/packages/todoist/src/silent-render.ts +8 -0
  245. package/packages/todoist/src/state.ts +147 -0
  246. package/packages/todoist/src/tools.ts +175 -0
  247. package/packages/todoist/src/types.ts +34 -0
  248. package/packages/todoist/src/widget.ts +109 -0
  249. package/packages/todoist/tsconfig.json +13 -0
  250. package/packages/todoist/vitest.config.ts +8 -0
  251. package/packages/ui-enhancements/package.json +1 -1
  252. package/packages/ui-enhancements/src/chrome/agent-mode-badge.ts +60 -60
  253. package/packages/ui-enhancements/src/chrome/border-status.ts +14 -1
  254. package/packages/ui-enhancements/src/chrome/resize-recovery.ts +63 -0
  255. package/packages/websearch/package.json +1 -1
  256. package/scripts/sync-pi-manifest.mjs +1 -1
  257. package/packages/permission-system/node_modules/web-tree-sitter/lib/tree-sitter.cjs +0 -2988
  258. package/packages/permission-system/node_modules/web-tree-sitter/lib/tree-sitter.wasm +0 -0
  259. package/packages/permission-system/node_modules/web-tree-sitter/lib/tree-sitter.wasm.map +0 -1
package/README.md CHANGED
@@ -1,234 +1,237 @@
1
- <p align="center">
2
- <img src="./assets/logo.svg" alt="Vito's Pizzeria — Pi distribution" width="160" />
3
- <br />
4
- <strong>维多披萨 · Vito's Pizzeria</strong>
5
- <br />
6
- <em>加菲猫同款 Pi 发行版 — 一次安装,开箱即用</em>
7
- </p>
8
-
9
- # vitos-pizza
10
-
11
- **Vito's Pizzeria** is a personal [Pi](https://pi.dev/) distribution — like LazyVim for Neovim. One install gives you a curated set of extensions and workflows. Built on upstream Pi, not a fork.
12
-
13
- Inspired by [Vito's Pizzeria](https://garfield.fandom.com/wiki/Vito_Cappelletti) from Garfield — Garfield's favorite pizza place.
14
-
15
- ## Prerequisites
16
-
17
- - Node.js >= 22.19.0
18
- - [Pi](https://pi.dev/) installed globally:
19
-
20
- ```bash
21
- npm install -g --ignore-scripts @earendil-works/pi-coding-agent
22
- ```
23
-
24
- ## Install
25
-
26
- ```bash
27
- # npm (recommended)
28
- pi install npm:@vitos-pizza/vitos-pizza@0.1.0
29
-
30
- # git (pinned tag)
31
- pi install git:github.com/xin2017338/vitos-pizza@v0.1.0
32
- ```
33
-
34
- From source:
35
-
36
- ```bash
37
- git clone https://github.com/xin2017338/vitos-pizza.git vitos-pizza
38
- cd vitos-pizza
39
- npm install
40
-
41
- # Global Pi settings (~/.pi/agent/settings.json)
42
- npm run install:pi
43
- # or: pi install .
44
-
45
- # Project-local settings (.pi/settings.json)
46
- npm run install:pi:local
47
- # or: pi install -l .
48
-
49
- # Try without installing
50
- npm run try:pi
51
- # or: pi -e .
52
- ```
53
-
54
- After install, start `pi`. Sessions are auto-titled from the first meaningful user message (see **Session auto-title** below). Delegate work with **subagents** (see below). When you change extension code, use `/reload`.
55
-
56
- ## Structure
57
-
58
- ```
59
- vitos-pizza/ # Pi distribution (install this)
60
- ├── assets/logo.svg
61
- ├── package.json # distro manifest + pi-package entry
62
- ├── AGENTS.md
63
- └── packages/ # built-in modules (not installed separately)
64
- ├── ui-enhancements/ # @vitos-pizza/ui-enhancements — TUI display optimizations
65
- ├── agent-mode/ # @vitos-pizza/agent-mode — agent / plan / execute mode switching
66
- ├── permission-system/ # @vitos-pizza/permission-system — allow/ask/deny gates
67
- ├── question/ # @vitos-pizza/question — structured ask-user question tool
68
- ├── session-title/ # @vitos-pizza/session-title — auto session naming
69
- ├── subagents/ # @vitos-pizza/subagents — scout/planner/worker delegation
70
- ├── websearch/ # @vitos-pizza/websearch — web_search / web_read tools
71
- └── keybindings/ # @vitos-pizza/keybindingscentralized shortcut bindings
72
- ```
73
-
74
- Built-in modules are wired via `scripts/sync-pi-manifest.mjs` (supports `pi.requires` load order).
75
-
76
- | Path | Role |
77
- |------|------|
78
- | Repo root | **The distribution** — `pi install .` |
79
- | `packages/<module>/` | Built-in capability modules |
80
- | `scripts/sync-pi-manifest.mjs` | Wires modules into the root pi manifest |
81
-
82
- ## Session auto-title
83
-
84
- Built-in module `@vitos-pizza/session-title` names sessions asynchronously after the **first agent reply**:
85
-
86
- - Waits for the first turn to finish, then summarizes user intent + assistant reply via the **subagents `title` agent** (RPC, not a direct LLM call)
87
- - Title is ≤20 characters; trivial greetings are skipped via fast rules
88
- - Runs in the background does not block the main agent
89
- - Optional dedicated model via `.pi/settings.json`; defaults to the current session model
90
-
91
- Example settings (also in [`.pi/settings.example.json`](.pi/settings.example.json)):
92
-
93
- ```json
94
- {
95
- "session": {
96
- "autoTitle": {
97
- "enabled": true,
98
- "model": "google/gemini-2.5-flash",
99
- "minCharsForLlm": 4,
100
- "fastRules": true
101
- }
102
- }
103
- }
104
- ```
105
-
106
- Use `/name` to override manually. See auto titles in `/resume`.
107
-
108
- ## Subagents & permissions
109
-
110
- Built-in **@vitos-pizza/subagents** lets the main agent delegate via the `subagent` and `wait` tools:
111
-
112
- ```text
113
- subagent({ agent: "scout", task: "map the auth module" })
114
- subagent({ chain: [{ agent: "scout", task: "..." }, { agent: "planner", task: "plan from {previous}" }] })
115
- subagent({ tasks: [{ agent: "scout", task: "scan src" }, { agent: "scout", task: "scan tests" }] })
116
- subagent({ agent: "worker", task: "...", async: true }) → wait({ id: "<runId>" })
117
- ```
118
-
119
- Built-in agents: **scout**, **planner**, **worker**, **title** (session auto-naming). Other modules request runs over `pi.events` RPC — import `requestSubagentRun` from `@vitos-pizza/subagents/rpc/client`.
120
-
121
- ## Web search
122
-
123
- Built-in **@vitos-pizza/websearch** adds `web_search` and `web_read` tools. Works out of the box via Exa MCP and keyless Firecrawl — no API keys required for basic use.
124
-
125
- ```text
126
- web_search({ query: "TypeScript 5.8 release notes" })
127
- web_read({ url: "https://docs.example.com/guide" })
128
- /search-status
129
- ```
130
-
131
- Default backends: **Exa MCP** → **Firecrawl** → optional keyed providers. Configure globally at `~/.pi/agent/extensions/search.json` or per-project at `.pi/search.json` (see [`.pi/search.example.json`](.pi/search.example.json)).
132
-
133
- Permissions: `web_search` and `web_read` are **ask** in `agent` and `plan` modes (subagent `ask` prompts forward to the parent session); **allow** in `execute` mode.
134
-
135
- Do not install community search extensions (e.g. `pi-web-access`, `pi-search-hub`) alongside vitos-pizza — tool names would collide.
136
-
137
- Built-in **@vitos-pizza/ui-enhancements** improves TUI readability: built-in tools use smart compact rendering (read-only `bash`/`grep`/`read` collapsed by default; `write`/`edit`/dangerous commands always show full output). Toggle expansion with `Ctrl+O`. Welcome header and border status bar are on by default (no settings required). Use `/vitos-ui` for status; `/builtin-header` restores Pi's built-in header.
138
-
139
- Built-in **@vitos-pizza/permission-system** enforces allow / ask / deny on tools, bash, and paths. Child subagent `ask` prompts forward to the parent session UI automatically.
140
-
141
- ### Agent modes
142
-
143
- `@vitos-pizza/agent-mode` provides three project-level modes. Switch with:
144
-
145
- ```text
146
- /mode # interactive picker
147
- /mode plan # or agent | execute
148
- ```
149
-
150
- Or press **`F6`** to cycle agent → plan → execute. Use `/vitos-shortcuts` to view bindings.
151
-
152
- | Mode | Permissions | Behavior |
153
- |------|-------------|----------|
154
- | `agent` | `default` | Balanced — read/grep/find/ls allowed in the git repo; bash `ask` for other commands |
155
- | `plan` | `plan` | Read-onlyexplore without edits or shell; `subagent` / `question` for scout/planner |
156
- | `execute` | `yolo` | Minimal gates only blocks `.env`, `~/.ssh`, `rm -rf` |
157
-
158
- Current mode is shown in the border status bar (`· plan` / `· execute`). On first session in a project, `agent` + `default` preset is written to `.pi/extensions/pi-permission-system/config.json` if missing. Use `/permission-system` for debug/YOLO runtime toggles. See [config.example.json](.pi/extensions/pi-permission-system/config.example.json).
159
-
160
- Optional subagents settings in [`.pi/settings.example.json`](.pi/settings.example.json) (`subagents.disableThinking`, model overrides, etc.).
161
-
162
- ## Adding a module
163
-
164
- 1. Have AI (or you) create `packages/<name>/` with `package.json`, `extensions/`, etc.
165
- 2. Set `"name": "@vitos-pizza/<name>"` in the module's `package.json`.
166
- 3. Run:
167
-
168
- ```bash
169
- npm run sync
170
- npm install
171
- pi install . # or /reload in Pi
172
- ```
173
-
174
- ## Development
175
-
176
- ```bash
177
- npm run sync # Regenerate root pi manifest from packages/*
178
- npm run typecheck
179
- npm run lint
180
- npm run lint:fix
181
- ```
182
-
183
- Pi loads TypeScript extensions directly — no build step.
184
-
185
- ## Acknowledgments
186
-
187
- vitos-pizza builds on the Pi ecosystem and several open-source projects. We are grateful to their authors and contributors.
188
-
189
- **Convention:** any new feature, module, or dependency that references external open source must add a row here (see [AGENTS.md](AGENTS.md) → Open-source acknowledgments).
190
-
191
- ### Platform & distribution model
192
-
193
- | Project | Role | Link |
194
- |---------|------|------|
195
- | **Pi** (`@earendil-works/pi-coding-agent`) | Agent runtime, extension API, and TUI — the foundation this distribution installs on top of | [pi.dev](https://pi.dev/) · [GitHub](https://github.com/earendil-works/pi) |
196
- | **LazyVim** | Inspiration for the “one install, curated defaults” distribution model (Pi distribution LazyVim for Neovim) | [GitHub](https://github.com/LazyVim/LazyVim) |
197
-
198
- ### Features referenced or adapted
199
-
200
- | Project | Used in | Notes |
201
- |---------|---------|-------|
202
- | [Pi official subagent example](https://github.com/earendil-works/pi/tree/main/packages/coding-agent/examples/extensions/subagent) | `@vitos-pizza/subagents` | Subprocess spawn, chain/parallel delegation, agent markdown discovery |
203
- | [Pi official `question` example](https://github.com/earendil-works/pi/tree/main/packages/coding-agent/examples/extensions/question.ts) | `@vitos-pizza/question` | Structured ask-user UI (`ctx.ui.custom`); adapted with subagent parent-session forwarding |
204
- | [@gotgenes/pi-permission-system](https://www.npmjs.com/package/@gotgenes/pi-permission-system) | `@vitos-pizza/permission-system` | Flat permission config format, preset modes, subagent prompt forwarding — reimplemented in-tree |
205
- | [@ryan_nookpi/pi-extension-auto-name](https://www.npmjs.com/package/@ryan_nookpi/pi-extension-auto-name) | `@vitos-pizza/session-title` | Fire-and-forget async title via `completeSimple` |
206
- | [djdembeck/pi-session-title](https://github.com/djdembeck/pi-session-title) | `@vitos-pizza/session-title` | Early community session naming patterns |
207
- | [pi-subagents](https://pi.dev/packages/pi-subagents) (nicobailon) | Subagent design | Community reference when shaping chain/parallel UX |
208
- | [pi-search-hub](https://github.com/ronnieops/pi-search-hub) | `@vitos-pizza/websearch` | Backend registry, config merge, auto-fallback dispatch, `/search-status` |
209
- | [pi-web-access](https://github.com/nicobailon/pi-web-access) | `@vitos-pizza/websearch` | Zero-config Exa MCP default chain and tool prompt guidelines |
210
- | [pi-web-search](https://github.com/ttttmr/pi-web-search) | `@vitos-pizza/websearch` | `session_start` config refresh lifecycle pattern |
211
- | [Pi `minimal-mode` / `built-in-tool-renderer` examples](https://github.com/earendil-works/pi/tree/main/packages/coding-agent/examples/extensions) | `@vitos-pizza/ui-enhancements` | Compact built-in tool rendering and smart bash collapse |
212
- | [Virgil-Bulens minimal-mode gist](https://gist.github.com/Virgil-Bulens/4d9d747ef85709b0850fc5aa01a6a4ef) | `@vitos-pizza/ui-enhancements` | Read-only bash whitelist and session collapsed-by-default UX |
213
- | [pi-statusbar](https://github.com/BumpyClock/pi-statusbar) | `@vitos-pizza/ui-enhancements` | Welcome header layout and loaded-counts information architecture |
214
- | [pi-powerline-footer](https://github.com/nicobailon/pi-powerline-footer) | `@vitos-pizza/ui-enhancements` | Welcome panel design and recent-sessions discovery |
215
- | [Pi `border-status-editor` example](https://github.com/earendil-works/pi/tree/main/packages/coding-agent/examples/extensions/border-status-editor.ts) | `@vitos-pizza/ui-enhancements` | Editor-border status bar (model, thinking, context, cwd, git) |
216
- | [sf-welcome](https://github.com/salesforce/sf-pi/blob/main/extensions/sf-welcome/index.ts) | `@vitos-pizza/ui-enhancements` | Welcome header session lifecycle and tips layout |
217
- | **Claude Code** permission UX | Agent modes (`agent` / `plan` / `execute`) | Preset naming and mode-switching inspiration (not a code dependency) |
218
- | [pi-package-template](https://github.com/S1M0N38/pi-package-template) | Repo layout | Pi package monorepo conventions |
219
-
220
- ### Runtime & tooling libraries
221
-
222
- | Library | Used in | Link |
223
- |---------|---------|------|
224
- | [tree-sitter-bash](https://github.com/tree-sitter/tree-sitter-bash) + [web-tree-sitter](https://github.com/tree-sitter/tree-sitter) | `@vitos-pizza/permission-system` | Bash command parsing for permission gates |
225
- | [Zod](https://github.com/colinhacks/zod) | `@vitos-pizza/permission-system` | Config validation |
226
- | [Biome](https://biomejs.dev/) | Dev tooling | Lint and format |
227
- | [Vitest](https://vitest.dev/) | Tests | Unit and integration tests |
228
- | [TypeScript](https://www.typescriptlang.org/) | All packages | Type checking |
229
-
230
- If we missed a project you rely on, please open an issue or PR — we want to credit every upstream contribution properly.
231
-
232
- ## License
233
-
234
- MIT
1
+ <p align="center">
2
+ <img src="./assets/logo.svg" alt="Vito's Pizzeria — Pi distribution" width="160" />
3
+ <br />
4
+ <strong>维多披萨 · Vito's Pizzeria</strong>
5
+ <br />
6
+ <em>加菲猫同款 Pi 发行版 — 一次安装,开箱即用</em>
7
+ </p>
8
+
9
+ # vitos-pizza
10
+
11
+ **Vito's Pizzeria** is a personal [Pi](https://pi.dev/) distribution — like LazyVim for Neovim. One install gives you a curated set of extensions and workflows. Built on upstream Pi, not a fork.
12
+
13
+ Inspired by [Vito's Pizzeria](https://garfield.fandom.com/wiki/Vito_Cappelletti) from Garfield — Garfield's favorite pizza place.
14
+
15
+ ## Prerequisites
16
+
17
+ - Node.js >= 22.19.0
18
+ - [Pi](https://pi.dev/) installed globally:
19
+
20
+ ```bash
21
+ npm install -g --ignore-scripts @earendil-works/pi-coding-agent
22
+ ```
23
+
24
+ ## Install
25
+
26
+ ```bash
27
+ # npm (recommended)
28
+ pi install npm:@vitos-pizza/vitos-pizza@0.2.0
29
+
30
+ # git (pinned tag)
31
+ pi install git:github.com/xin2017338/vitos-pizza@v0.2.0
32
+ ```
33
+
34
+ From source:
35
+
36
+ ```bash
37
+ git clone https://github.com/xin2017338/vitos-pizza.git vitos-pizza
38
+ cd vitos-pizza
39
+ npm install
40
+
41
+ # Global Pi settings (~/.pi/agent/settings.json)
42
+ npm run install:pi
43
+ # or: pi install .
44
+
45
+ # Project-local settings (.pi/settings.json)
46
+ npm run install:pi:local
47
+ # or: pi install -l .
48
+
49
+ # Try without installing
50
+ npm run try:pi
51
+ # or: pi -e .
52
+ ```
53
+
54
+ After install, start `pi`. Sessions are auto-titled from the first meaningful user message (see **Session auto-title** below). Delegate work with **subagents** (see below). When you change extension code, use `/reload`.
55
+
56
+ ## Structure
57
+
58
+ ```
59
+ vitos-pizza/ # Pi distribution (install this)
60
+ ├── assets/logo.svg
61
+ ├── package.json # distro manifest + pi-package entry
62
+ ├── AGENTS.md
63
+ └── packages/ # built-in modules (not installed separately)
64
+ ├── ui-enhancements/ # @vitos-pizza/ui-enhancements — TUI display optimizations
65
+ ├── agent-mode/ # @vitos-pizza/agent-mode — agent / plan / execute mode switching
66
+ ├── permission-system/ # @vitos-pizza/permission-system — allow/ask/deny gates
67
+ ├── question/ # @vitos-pizza/question — structured ask-user question tool
68
+ ├── session-title/ # @vitos-pizza/session-title — auto session naming
69
+ ├── subagents/ # @vitos-pizza/subagents — scout/planner/worker delegation
70
+ ├── websearch/ # @vitos-pizza/websearch — web_search / web_read tools
71
+ ├── todoist/ # @vitos-pizza/todoistin-memory task list + TUI widget
72
+ └── keybindings/ # @vitos-pizza/keybindings — centralized shortcut bindings
73
+ ```
74
+
75
+ Built-in modules are wired via `scripts/sync-pi-manifest.mjs` (supports `pi.requires` load order).
76
+
77
+ | Path | Role |
78
+ |------|------|
79
+ | Repo root | **The distribution** `pi install .` |
80
+ | `packages/<module>/` | Built-in capability modules |
81
+ | `scripts/sync-pi-manifest.mjs` | Wires modules into the root pi manifest |
82
+
83
+ ## Session auto-title
84
+
85
+ Built-in module `@vitos-pizza/session-title` names sessions asynchronously after the **first agent reply**:
86
+
87
+ - Waits for the first turn to finish, then summarizes user intent + assistant reply via the **subagents `title` agent** (RPC, not a direct LLM call)
88
+ - Title is ≤20 characters; trivial greetings are skipped via fast rules
89
+ - Runs in the background does not block the main agent
90
+ - Optional dedicated model via `.pi/settings.json`; defaults to the current session model
91
+
92
+ Example settings (also in [`.pi/settings.example.json`](.pi/settings.example.json)):
93
+
94
+ ```json
95
+ {
96
+ "session": {
97
+ "autoTitle": {
98
+ "enabled": true,
99
+ "model": "google/gemini-2.5-flash",
100
+ "minCharsForLlm": 4,
101
+ "fastRules": true
102
+ }
103
+ }
104
+ }
105
+ ```
106
+
107
+ Use `/name` to override manually. See auto titles in `/resume`.
108
+
109
+ ## Subagents & permissions
110
+
111
+ Built-in **@vitos-pizza/subagents** lets the main agent delegate via the `subagent` and `wait` tools:
112
+
113
+ ```text
114
+ subagent({ agent: "scout", task: "map the auth module" })
115
+ subagent({ chain: [{ agent: "scout", task: "..." }, { agent: "planner", task: "plan from {previous}" }] })
116
+ subagent({ tasks: [{ agent: "scout", task: "scan src" }, { agent: "scout", task: "scan tests" }] })
117
+ subagent({ agent: "worker", task: "...", async: true }) → wait({ id: "<runId>" })
118
+ ```
119
+
120
+ Built-in agents: **scout**, **planner**, **worker**, **title** (session auto-naming). Other modules request runs over `pi.events` RPC — import `requestSubagentRun` from `@vitos-pizza/subagents/rpc/client`.
121
+
122
+ ## Web search
123
+
124
+ Built-in **@vitos-pizza/websearch** adds `web_search` and `web_read` tools. Works out of the box via Exa MCP and keyless Firecrawl — no API keys required for basic use.
125
+
126
+ ```text
127
+ web_search({ query: "TypeScript 5.8 release notes" })
128
+ web_read({ url: "https://docs.example.com/guide" })
129
+ /search-status
130
+ ```
131
+
132
+ Default backends: **Exa MCP** → **Firecrawl** → optional keyed providers. Configure globally at `~/.pi/agent/extensions/search.json` or per-project at `.pi/search.json` (see [`.pi/search.example.json`](.pi/search.example.json)).
133
+
134
+ Permissions: `web_search` and `web_read` are **ask** in `agent` and `plan` modes (subagent `ask` prompts forward to the parent session); **allow** in `execute` mode.
135
+
136
+ Do not install community search extensions (e.g. `pi-web-access`, `pi-search-hub`) alongside vitos-pizza — tool names would collide.
137
+
138
+ Built-in **@vitos-pizza/ui-enhancements** improves TUI readability: built-in tools use smart compact rendering (read-only `bash`/`grep`/`read` collapsed by default; `write`/`edit`/dangerous commands always show full output). Toggle expansion with `Ctrl+O`. Welcome header and border status bar are on by default (no settings required). Use `/vitos-ui` for status; `/builtin-header` restores Pi's built-in header.
139
+
140
+ Built-in **@vitos-pizza/permission-system** enforces allow / ask / deny on tools, bash, and paths. Child subagent `ask` prompts forward to the parent session UI automatically.
141
+
142
+ ### Agent modes
143
+
144
+ `@vitos-pizza/agent-mode` provides three project-level modes. Switch with:
145
+
146
+ ```text
147
+ /mode # interactive picker
148
+ /mode plan # or agent | execute
149
+ ```
150
+
151
+ Or press **`F6`** to cycle agent → plan → execute. Use `/vitos-shortcuts` to view bindings.
152
+
153
+ | Mode | Permissions | Behavior |
154
+ |------|-------------|----------|
155
+ | `agent` | `default` | Balancedread/grep/find/ls allowed in the git repo; bash `ask` for other commands |
156
+ | `plan` | `plan` | Read-onlyexplore without edits or shell; `subagent` / `question` for scout/planner |
157
+ | `execute` | `yolo` | Minimal gates — only blocks `.env`, `~/.ssh`, `rm -rf` |
158
+
159
+ Current mode is shown in the border status bar (`· plan` / `· execute`). On first session in a project, `agent` + `default` preset is written to `.pi/extensions/pi-permission-system/config.json` if missing. Use `/permission-system` for debug/YOLO runtime toggles. See [config.example.json](.pi/extensions/pi-permission-system/config.example.json).
160
+
161
+ Optional subagents settings in [`.pi/settings.example.json`](.pi/settings.example.json) (`subagents.disableThinking`, model overrides, etc.).
162
+
163
+ ## Adding a module
164
+
165
+ 1. Have AI (or you) create `packages/<name>/` with `package.json`, `extensions/`, etc.
166
+ 2. Set `"name": "@vitos-pizza/<name>"` in the module's `package.json`.
167
+ 3. Run:
168
+
169
+ ```bash
170
+ npm run sync
171
+ npm install
172
+ pi install . # or /reload in Pi
173
+ ```
174
+
175
+ ## Development
176
+
177
+ ```bash
178
+ npm run sync # Regenerate root pi manifest from packages/*
179
+ npm run typecheck
180
+ npm run lint
181
+ npm run lint:fix
182
+ ```
183
+
184
+ Pi loads TypeScript extensions directly — no build step.
185
+
186
+ ## Acknowledgments
187
+
188
+ vitos-pizza builds on the Pi ecosystem and several open-source projects. We are grateful to their authors and contributors.
189
+
190
+ **Convention:** any new feature, module, or dependency that references external open source must add a row here (see [AGENTS.md](AGENTS.md) → Open-source acknowledgments).
191
+
192
+ ### Platform & distribution model
193
+
194
+ | Project | Role | Link |
195
+ |---------|------|------|
196
+ | **Pi** (`@earendil-works/pi-coding-agent`) | Agent runtime, extension API, and TUI the foundation this distribution installs on top of | [pi.dev](https://pi.dev/) · [GitHub](https://github.com/earendil-works/pi) |
197
+ | **LazyVim** | Inspiration for the “one install, curated defaults” distribution model (Pi distribution ≈ LazyVim for Neovim) | [GitHub](https://github.com/LazyVim/LazyVim) |
198
+
199
+ ### Features referenced or adapted
200
+
201
+ | Project | Used in | Notes |
202
+ |---------|---------|-------|
203
+ | [Pi official subagent example](https://github.com/earendil-works/pi/tree/main/packages/coding-agent/examples/extensions/subagent) | `@vitos-pizza/subagents` | Subprocess spawn, chain/parallel delegation, agent markdown discovery |
204
+ | [Pi official `question` example](https://github.com/earendil-works/pi/tree/main/packages/coding-agent/examples/extensions/question.ts) | `@vitos-pizza/question` | Structured ask-user UI (`ctx.ui.custom`); adapted with subagent parent-session forwarding |
205
+ | [@gotgenes/pi-permission-system](https://www.npmjs.com/package/@gotgenes/pi-permission-system) | `@vitos-pizza/permission-system` | Flat permission config format, preset modes, subagent prompt forwarding — reimplemented in-tree |
206
+ | [@ryan_nookpi/pi-extension-auto-name](https://www.npmjs.com/package/@ryan_nookpi/pi-extension-auto-name) | `@vitos-pizza/session-title` | Fire-and-forget async title via `completeSimple` |
207
+ | [djdembeck/pi-session-title](https://github.com/djdembeck/pi-session-title) | `@vitos-pizza/session-title` | Early community session naming patterns |
208
+ | [pi-subagents](https://pi.dev/packages/pi-subagents) (nicobailon) | Subagent design | Community reference when shaping chain/parallel UX |
209
+ | [pi-search-hub](https://github.com/ronnieops/pi-search-hub) | `@vitos-pizza/websearch` | Backend registry, config merge, auto-fallback dispatch, `/search-status` |
210
+ | [pi-web-access](https://github.com/nicobailon/pi-web-access) | `@vitos-pizza/websearch` | Zero-config Exa MCP default chain and tool prompt guidelines |
211
+ | [pi-web-search](https://github.com/ttttmr/pi-web-search) | `@vitos-pizza/websearch` | `session_start` config refresh lifecycle pattern |
212
+ | [Pi `minimal-mode` / `built-in-tool-renderer` examples](https://github.com/earendil-works/pi/tree/main/packages/coding-agent/examples/extensions) | `@vitos-pizza/ui-enhancements` | Compact built-in tool rendering and smart bash collapse |
213
+ | [Virgil-Bulens minimal-mode gist](https://gist.github.com/Virgil-Bulens/4d9d747ef85709b0850fc5aa01a6a4ef) | `@vitos-pizza/ui-enhancements` | Read-only bash whitelist and session collapsed-by-default UX |
214
+ | [pi-statusbar](https://github.com/BumpyClock/pi-statusbar) | `@vitos-pizza/ui-enhancements` | Welcome header layout and loaded-counts information architecture |
215
+ | [pi-powerline-footer](https://github.com/nicobailon/pi-powerline-footer) | `@vitos-pizza/ui-enhancements` | Welcome panel design and recent-sessions discovery |
216
+ | [Pi `border-status-editor` example](https://github.com/earendil-works/pi/tree/main/packages/coding-agent/examples/extensions/border-status-editor.ts) | `@vitos-pizza/ui-enhancements` | Editor-border status bar (model, thinking, context, cwd, git) |
217
+ | [sf-welcome](https://github.com/salesforce/sf-pi/blob/main/extensions/sf-welcome/index.ts) | `@vitos-pizza/ui-enhancements` | Welcome header session lifecycle and tips layout |
218
+ | **Claude Code** permission UX | Agent modes (`agent` / `plan` / `execute`) | Preset naming and mode-switching inspiration (not a code dependency) |
219
+ | [Claude Code TodoWrite / Task tools](https://code.claude.com/docs/en/agent-sdk/todo-tracking.md) | `@vitos-pizza/todoist` | Complete = status done; delete only when no longer relevant (cancelled / mistaken) |
220
+ | [@capyup/pi-basic-tools todo](https://www.npmjs.com/package/@capyup/pi-basic-tools) | `@vitos-pizza/todoist` | completed vs deleted prompt boundary for task-list tools |
221
+ | [pi-package-template](https://github.com/S1M0N38/pi-package-template) | Repo layout | Pi package monorepo conventions |
222
+
223
+ ### Runtime & tooling libraries
224
+
225
+ | Library | Used in | Link |
226
+ |---------|---------|------|
227
+ | [tree-sitter-bash](https://github.com/tree-sitter/tree-sitter-bash) + [web-tree-sitter](https://github.com/tree-sitter/tree-sitter) | `@vitos-pizza/permission-system` | Bash command parsing for permission gates |
228
+ | [Zod](https://github.com/colinhacks/zod) | `@vitos-pizza/permission-system` | Config validation |
229
+ | [Biome](https://biomejs.dev/) | Dev tooling | Lint and format |
230
+ | [Vitest](https://vitest.dev/) | Tests | Unit and integration tests |
231
+ | [TypeScript](https://www.typescriptlang.org/) | All packages | Type checking |
232
+
233
+ If we missed a project you rely on, please open an issue or PR — we want to credit every upstream contribution properly.
234
+
235
+ ## License
236
+
237
+ MIT
package/assets/logo.svg CHANGED
@@ -1,28 +1,28 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img" aria-label="Vito's Pizzeria">
2
- <defs>
3
- <linearGradient id="crust" x1="0%" y1="0%" x2="100%" y2="100%">
4
- <stop offset="0%" stop-color="#f4a442"/>
5
- <stop offset="100%" stop-color="#d97706"/>
6
- </linearGradient>
7
- <linearGradient id="neon" x1="0%" y1="0%" x2="0%" y2="100%">
8
- <stop offset="0%" stop-color="#ff6b6b"/>
9
- <stop offset="50%" stop-color="#ff4757"/>
10
- <stop offset="100%" stop-color="#c0392b"/>
11
- </linearGradient>
12
- <filter id="glow" x="-20%" y="-20%" width="140%" height="140%">
13
- <feGaussianBlur stdDeviation="2.5" result="blur"/>
14
- <feMerge>
15
- <feMergeNode in="blur"/>
16
- <feMergeNode in="SourceGraphic"/>
17
- </feMerge>
18
- </filter>
19
- </defs>
20
- <path d="M100 24 L168 156 Q100 176 32 156 Z" fill="url(#crust)" stroke="#b45309" stroke-width="3"/>
21
- <path d="M100 24 L100 156" stroke="#b45309" stroke-width="2" opacity="0.5"/>
22
- <circle cx="118" cy="98" r="9" fill="#dc2626"/>
23
- <circle cx="88" cy="118" r="8" fill="#dc2626"/>
24
- <circle cx="108" cy="132" r="7" fill="#dc2626"/>
25
- <circle cx="72" cy="108" r="6" fill="#dc2626"/>
26
- <rect x="18" y="162" width="164" height="28" rx="6" fill="#1a1a2e" stroke="#334155" stroke-width="2"/>
27
- <text x="100" y="182" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif" font-size="18" font-weight="bold" fill="url(#neon)" filter="url(#glow)">VITO</text>
28
- </svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img" aria-label="Vito's Pizzeria">
2
+ <defs>
3
+ <linearGradient id="crust" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" stop-color="#f4a442"/>
5
+ <stop offset="100%" stop-color="#d97706"/>
6
+ </linearGradient>
7
+ <linearGradient id="neon" x1="0%" y1="0%" x2="0%" y2="100%">
8
+ <stop offset="0%" stop-color="#ff6b6b"/>
9
+ <stop offset="50%" stop-color="#ff4757"/>
10
+ <stop offset="100%" stop-color="#c0392b"/>
11
+ </linearGradient>
12
+ <filter id="glow" x="-20%" y="-20%" width="140%" height="140%">
13
+ <feGaussianBlur stdDeviation="2.5" result="blur"/>
14
+ <feMerge>
15
+ <feMergeNode in="blur"/>
16
+ <feMergeNode in="SourceGraphic"/>
17
+ </feMerge>
18
+ </filter>
19
+ </defs>
20
+ <path d="M100 24 L168 156 Q100 176 32 156 Z" fill="url(#crust)" stroke="#b45309" stroke-width="3"/>
21
+ <path d="M100 24 L100 156" stroke="#b45309" stroke-width="2" opacity="0.5"/>
22
+ <circle cx="118" cy="98" r="9" fill="#dc2626"/>
23
+ <circle cx="88" cy="118" r="8" fill="#dc2626"/>
24
+ <circle cx="108" cy="132" r="7" fill="#dc2626"/>
25
+ <circle cx="72" cy="108" r="6" fill="#dc2626"/>
26
+ <rect x="18" y="162" width="164" height="28" rx="6" fill="#1a1a2e" stroke="#334155" stroke-width="2"/>
27
+ <text x="100" y="182" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif" font-size="18" font-weight="bold" fill="url(#neon)" filter="url(#glow)">VITO</text>
28
+ </svg>