@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/AGENTS.md CHANGED
@@ -1,158 +1,158 @@
1
- # Vito's Pizzeria — Agent Instructions
2
-
3
- This repository is **vitos-pizza**, a [Pi](https://pi.dev/) **distribution** (like LazyVim for Neovim). Users install the repo root once via `pi install .` and get the full curated experience.
4
-
5
- Inspired by Vito's Pizzeria from Garfield — one brand, one install.
6
-
7
- ## Structure
8
-
9
- - **Repo root** — The distribution. `package.json` is the pi-package manifest.
10
- - **`packages/<module>/`** — Built-in modules (e.g. `@vitos-pizza/agent-mode`, `@vitos-pizza/question`, `@vitos-pizza/session-title`, `@vitos-pizza/permission-system`, `@vitos-pizza/subagents`, `@vitos-pizza/keybindings`). Not installed separately by users.
11
- - **`scripts/sync-pi-manifest.mjs`** — Scans `packages/*`, merges `piBundled` npm packages, and updates root `dependencies` + `pi` manifest. Honors `pi.requires` for extension load order.
12
-
13
- ## Bundled third-party Pi packages
14
-
15
- Declare npm pi packages in root `package.json`:
16
-
17
- - `dependencies` — version range
18
- - `bundledDependencies` — include in the distribution tarball
19
- - `piBundled` — list read by `sync-pi-manifest.mjs` to merge `node_modules/<pkg>/` paths into the root `pi` manifest
20
-
21
- Extension load order: topological sort of `pi.requires`, with `LOCAL_ORDER` tie-break. Default: `permission-system` → `question` → `ui-enhancements` → `agent-mode` → `subagents` → `session-title` → `keybindings`.
22
-
23
- ## Agent mode
24
-
25
- Vito's Pizzeria uses three centralized modes via **`@vitos-pizza/agent-mode`**:
26
-
27
- | Mode | Permissions | Behavior |
28
- |------|-------------|----------|
29
- | `agent` | `default` preset | Balanced daily work |
30
- | `plan` | `plan` preset | Read-only; scout → planner via subagents + `question` |
31
- | `execute` | `yolo` preset | Minimal gates; full implementation |
32
-
33
- Switch with `/mode [agent|plan|execute]` or **`F6`** (`agent-mode.cycle`). Current mode appears in the ui-enhancements border bar (`· plan` / `· execute`).
34
-
35
- ## Keyboard shortcuts
36
-
37
- Pi already provides built-in keybindings (`~/.pi/agent/keybindings.json`, namespaced `app.*` / `tui.*`) and extension shortcuts via `pi.registerShortcut()`.
38
-
39
- **vitos-pizza convention:** only `@vitos-pizza/keybindings` may call `pi.registerShortcut`. Other modules register **actions** (not keys) during `session_start`:
40
-
41
- ```typescript
42
- import { emitShortcutAction } from "@vitos-pizza/keybindings/types";
43
-
44
- // session_start — register handler only; keys come from vitos-shortcuts.json
45
- emitShortcutAction(pi.events, {
46
- id: "agent-mode.cycle",
47
- description: "Cycle agent mode (agent → plan → execute)",
48
- handler: async (ctx) => { /* ... */ },
49
- });
50
- ```
51
-
52
- Key config (project overrides global overrides preset defaults):
53
-
54
- - `packages/keybindings/presets/shortcuts.json` — distribution defaults
55
- - `~/.pi/agent/vitos-shortcuts.json` — user global overrides
56
- - `<cwd>/.pi/vitos-shortcuts.json` — project overrides
57
-
58
- Use `/vitos-shortcuts` to list registered actions and current bindings. Pi built-in shortcuts remain in `/hotkeys` and `keybindings.json`.
59
-
60
- Each module follows Pi conventions:
61
-
62
- ```
63
- packages/<module>/
64
- ├── extensions/ # TypeScript (*.ts)
65
- ├── skills/ # */SKILL.md (optional)
66
- ├── prompts/ # *.md slash templates (optional)
67
- └── themes/ # *.json (optional)
68
- ```
69
-
70
- ## Adding a module
71
-
72
- 1. Create `packages/<name>/` with `package.json` (`"name": "@vitos-pizza/<name>"`).
73
- 2. Optional: declare `"pi": { "requires": ["@vitos-pizza/other-module"] }` so sync orders extensions correctly.
74
- 3. Add extensions, skills, prompts, or themes as needed.
75
- 4. If you referenced external open source, add an **Acknowledgments** row in [README.md](README.md) (see **Open-source acknowledgments** below).
76
- 5. Run `npm run sync && npm install` at repo root.
77
- 6. Reload Pi with `/reload` or `pi install .`.
78
-
79
- ## Dependency rules
80
-
81
- - **Pi core packages** (`@earendil-works/pi-coding-agent`, `@earendil-works/pi-agent-core`, `@earendil-works/pi-ai`, `@earendil-works/pi-tui`, `typebox`) → `peerDependencies: "*"` only.
82
- - **Third-party runtime deps** → `dependencies` in the module that uses them.
83
-
84
- ## Subagent delegation
85
-
86
- All child-agent work in vitos-pizza modules must go through **`@vitos-pizza/subagents`** — use `requestSubagentRun` / `requestSubagentWait` from `@vitos-pizza/subagents/rpc/client` on `pi.events`. Do not call `completeSimple` or spawn `pi` directly for delegated agent runs.
87
-
88
- Declare `"pi": { "requires": ["@vitos-pizza/subagents"] }` in the consuming module's `package.json` so extension load order is correct.
89
-
90
- ## Ask-user questions
91
-
92
- Structured clarification (multiple-choice UI) uses **`@vitos-pizza/question`** — the `question` tool. Main sessions show the TUI directly; subagent children forward prompts to the parent session (events RPC + file fallback). Planner and scout agents include `question` in their `tools:` list.
93
-
94
- ## Open-source acknowledgments
95
-
96
- Whenever work **references, adapts, or depends on** external open source, add or update an entry in [README.md](README.md) → **Acknowledgments**. Do this in the **same PR** as the feature or dependency change — not as a follow-up.
97
-
98
- **Must acknowledge:**
99
-
100
- - Pi extensions / npm packages you read, port patterns from, or bundle (`piBundled`, `dependencies`)
101
- - GitHub repos or docs used as implementation reference (even if reimplemented in-tree)
102
- - New runtime `dependencies` in any `packages/*/package.json`
103
- - UX or architecture inspiration with a named upstream (e.g. Claude Code–style presets)
104
-
105
- **Do not** list every transitive npm package — only direct references and meaningful upstreams.
106
-
107
- **Where to put each entry** (keep existing subsection structure):
108
-
109
- | Kind | README subsection |
110
- |------|-------------------|
111
- | Platform / distribution model | `### Platform & distribution model` |
112
- | Feature reference, port, or bundled Pi package | `### Features referenced or adapted` |
113
- | Direct runtime or dev tooling dependency | `### Runtime & tooling libraries` |
114
-
115
- **Row format** (match existing tables):
116
-
117
- ```markdown
118
- | [Project name](https://…/) | `@vitos-pizza/<module>` or area | One line: what we took or how we use it |
119
- ```
120
-
121
- For libraries, the Link column can hold the homepage; for features, link the repo, npm page, or Pi package catalog URL.
122
-
123
- **Adding a module checklist** — in addition to sync/install, if the module references upstream work, extend README Acknowledgments before merging.
124
-
125
- ## Development
126
-
127
- - No build step — Pi loads TypeScript via jiti.
128
- - After editing extensions: `/reload`.
129
- - Type-check: `npm run typecheck`
130
- - Test: `npm run test`
131
- - Lint: `npm run lint`
132
-
133
- ## Plan documents
134
-
135
- Feature plans should include a short **`## 功能验收`** section (3–6 checkboxes) between the implementation approach and risks/constraints. Each item states an observable outcome, e.g. `xxx 功能已实现:<what the user can verify>`. Implementation is not done until every item can be answered yes/no.
136
-
137
- If the plan references external open source, include a checkbox: `README Acknowledgments 已更新(如有上游参考)`.
138
-
139
- ## Install
140
-
141
- ```bash
142
- pi install . # global settings
143
- pi install -l . # project .pi/settings.json
144
- pi -e . # try without installing
145
- ```
146
-
147
- ## Extension API
148
-
149
- ```typescript
150
- import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
151
-
152
- export default function (pi: ExtensionAPI) {
153
- pi.registerCommand("hello", { /* ... */ });
154
- pi.on("session_start", async (_event, ctx) => { /* ... */ });
155
- }
156
- ```
157
-
158
- See [Pi Extensions docs](https://pi.dev/docs/latest/extensions).
1
+ # Vito's Pizzeria — Agent Instructions
2
+
3
+ This repository is **vitos-pizza**, a [Pi](https://pi.dev/) **distribution** (like LazyVim for Neovim). Users install the repo root once via `pi install .` and get the full curated experience.
4
+
5
+ Inspired by Vito's Pizzeria from Garfield — one brand, one install.
6
+
7
+ ## Structure
8
+
9
+ - **Repo root** — The distribution. `package.json` is the pi-package manifest.
10
+ - **`packages/<module>/`** — Built-in modules (e.g. `@vitos-pizza/agent-mode`, `@vitos-pizza/question`, `@vitos-pizza/session-title`, `@vitos-pizza/permission-system`, `@vitos-pizza/subagents`, `@vitos-pizza/keybindings`). Not installed separately by users.
11
+ - **`scripts/sync-pi-manifest.mjs`** — Scans `packages/*`, merges `piBundled` npm packages, and updates root `dependencies` + `pi` manifest. Honors `pi.requires` for extension load order.
12
+
13
+ ## Bundled third-party Pi packages
14
+
15
+ Declare npm pi packages in root `package.json`:
16
+
17
+ - `dependencies` — version range
18
+ - `bundledDependencies` — include in the distribution tarball
19
+ - `piBundled` — list read by `sync-pi-manifest.mjs` to merge `node_modules/<pkg>/` paths into the root `pi` manifest
20
+
21
+ Extension load order: topological sort of `pi.requires`, with `LOCAL_ORDER` tie-break. Default: `permission-system` → `question` → `ui-enhancements` → `agent-mode` → `subagents` → `session-title` → `keybindings`.
22
+
23
+ ## Agent mode
24
+
25
+ Vito's Pizzeria uses three centralized modes via **`@vitos-pizza/agent-mode`**:
26
+
27
+ | Mode | Permissions | Behavior |
28
+ |------|-------------|----------|
29
+ | `agent` | `default` preset | Balanced daily work |
30
+ | `plan` | `plan` preset | Read-only; scout → planner via subagents + `question` |
31
+ | `execute` | `yolo` preset | Minimal gates; full implementation |
32
+
33
+ Switch with `/mode [agent|plan|execute]` or **`F6`** (`agent-mode.cycle`). Current mode appears in the ui-enhancements border bar (`· plan` / `· execute`).
34
+
35
+ ## Keyboard shortcuts
36
+
37
+ Pi already provides built-in keybindings (`~/.pi/agent/keybindings.json`, namespaced `app.*` / `tui.*`) and extension shortcuts via `pi.registerShortcut()`.
38
+
39
+ **vitos-pizza convention:** only `@vitos-pizza/keybindings` may call `pi.registerShortcut`. Other modules register **actions** (not keys) during `session_start`:
40
+
41
+ ```typescript
42
+ import { emitShortcutAction } from "@vitos-pizza/keybindings/types";
43
+
44
+ // session_start — register handler only; keys come from vitos-shortcuts.json
45
+ emitShortcutAction(pi.events, {
46
+ id: "agent-mode.cycle",
47
+ description: "Cycle agent mode (agent → plan → execute)",
48
+ handler: async (ctx) => { /* ... */ },
49
+ });
50
+ ```
51
+
52
+ Key config (project overrides global overrides preset defaults):
53
+
54
+ - `packages/keybindings/presets/shortcuts.json` — distribution defaults
55
+ - `~/.pi/agent/vitos-shortcuts.json` — user global overrides
56
+ - `<cwd>/.pi/vitos-shortcuts.json` — project overrides
57
+
58
+ Use `/vitos-shortcuts` to list registered actions and current bindings. Pi built-in shortcuts remain in `/hotkeys` and `keybindings.json`.
59
+
60
+ Each module follows Pi conventions:
61
+
62
+ ```
63
+ packages/<module>/
64
+ ├── extensions/ # TypeScript (*.ts)
65
+ ├── skills/ # */SKILL.md (optional)
66
+ ├── prompts/ # *.md slash templates (optional)
67
+ └── themes/ # *.json (optional)
68
+ ```
69
+
70
+ ## Adding a module
71
+
72
+ 1. Create `packages/<name>/` with `package.json` (`"name": "@vitos-pizza/<name>"`).
73
+ 2. Optional: declare `"pi": { "requires": ["@vitos-pizza/other-module"] }` so sync orders extensions correctly.
74
+ 3. Add extensions, skills, prompts, or themes as needed.
75
+ 4. If you referenced external open source, add an **Acknowledgments** row in [README.md](README.md) (see **Open-source acknowledgments** below).
76
+ 5. Run `npm run sync && npm install` at repo root.
77
+ 6. Reload Pi with `/reload` or `pi install .`.
78
+
79
+ ## Dependency rules
80
+
81
+ - **Pi core packages** (`@earendil-works/pi-coding-agent`, `@earendil-works/pi-agent-core`, `@earendil-works/pi-ai`, `@earendil-works/pi-tui`, `typebox`) → `peerDependencies: "*"` only.
82
+ - **Third-party runtime deps** → `dependencies` in the module that uses them.
83
+
84
+ ## Subagent delegation
85
+
86
+ All child-agent work in vitos-pizza modules must go through **`@vitos-pizza/subagents`** — use `requestSubagentRun` / `requestSubagentWait` from `@vitos-pizza/subagents/rpc/client` on `pi.events`. Do not call `completeSimple` or spawn `pi` directly for delegated agent runs.
87
+
88
+ Declare `"pi": { "requires": ["@vitos-pizza/subagents"] }` in the consuming module's `package.json` so extension load order is correct.
89
+
90
+ ## Ask-user questions
91
+
92
+ Structured clarification (multiple-choice UI) uses **`@vitos-pizza/question`** — the `question` tool. Main sessions show the TUI directly; subagent children forward prompts to the parent session (events RPC + file fallback). Planner and scout agents include `question` in their `tools:` list.
93
+
94
+ ## Open-source acknowledgments
95
+
96
+ Whenever work **references, adapts, or depends on** external open source, add or update an entry in [README.md](README.md) → **Acknowledgments**. Do this in the **same PR** as the feature or dependency change — not as a follow-up.
97
+
98
+ **Must acknowledge:**
99
+
100
+ - Pi extensions / npm packages you read, port patterns from, or bundle (`piBundled`, `dependencies`)
101
+ - GitHub repos or docs used as implementation reference (even if reimplemented in-tree)
102
+ - New runtime `dependencies` in any `packages/*/package.json`
103
+ - UX or architecture inspiration with a named upstream (e.g. Claude Code–style presets)
104
+
105
+ **Do not** list every transitive npm package — only direct references and meaningful upstreams.
106
+
107
+ **Where to put each entry** (keep existing subsection structure):
108
+
109
+ | Kind | README subsection |
110
+ |------|-------------------|
111
+ | Platform / distribution model | `### Platform & distribution model` |
112
+ | Feature reference, port, or bundled Pi package | `### Features referenced or adapted` |
113
+ | Direct runtime or dev tooling dependency | `### Runtime & tooling libraries` |
114
+
115
+ **Row format** (match existing tables):
116
+
117
+ ```markdown
118
+ | [Project name](https://…/) | `@vitos-pizza/<module>` or area | One line: what we took or how we use it |
119
+ ```
120
+
121
+ For libraries, the Link column can hold the homepage; for features, link the repo, npm page, or Pi package catalog URL.
122
+
123
+ **Adding a module checklist** — in addition to sync/install, if the module references upstream work, extend README Acknowledgments before merging.
124
+
125
+ ## Development
126
+
127
+ - No build step — Pi loads TypeScript via jiti.
128
+ - After editing extensions: `/reload`.
129
+ - Type-check: `npm run typecheck`
130
+ - Test: `npm run test`
131
+ - Lint: `npm run lint`
132
+
133
+ ## Plan documents
134
+
135
+ Feature plans should include a short **`## 功能验收`** section (3–6 checkboxes) between the implementation approach and risks/constraints. Each item states an observable outcome, e.g. `xxx 功能已实现:<what the user can verify>`. Implementation is not done until every item can be answered yes/no.
136
+
137
+ If the plan references external open source, include a checkbox: `README Acknowledgments 已更新(如有上游参考)`.
138
+
139
+ ## Install
140
+
141
+ ```bash
142
+ pi install . # global settings
143
+ pi install -l . # project .pi/settings.json
144
+ pi -e . # try without installing
145
+ ```
146
+
147
+ ## Extension API
148
+
149
+ ```typescript
150
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
151
+
152
+ export default function (pi: ExtensionAPI) {
153
+ pi.registerCommand("hello", { /* ... */ });
154
+ pi.on("session_start", async (_event, ctx) => { /* ... */ });
155
+ }
156
+ ```
157
+
158
+ See [Pi Extensions docs](https://pi.dev/docs/latest/extensions).
package/CHANGELOG.md CHANGED
@@ -1,24 +1,42 @@
1
- # Changelog
2
-
3
- All notable changes to vitos-pizza are documented here.
4
-
5
- ## [0.1.0] - 2026-07-10
6
-
7
- ### Added
8
-
9
- - Rebrand from xin-pi to **vitos-pizza** (维多披萨 / Vito's Pizzeria)
10
- - Pi distribution layout: repo root as single install entry
11
- - `scripts/sync-pi-manifest.mjs` module assembler
12
- - Original logo at `assets/logo.svg`
13
-
14
- ### Removed
15
-
16
- - Nested `packages/xin-pi` aggregator
17
- - `@xin-pi/core`, template scaffold, postinstall symlink hack
18
-
19
- ### Publishing
20
-
21
- - GitHub Actions publishes `@vitos-pizza/vitos-pizza` via **npm Trusted Publishing (OIDC)** no long-lived `NPM_TOKEN`
22
- - Workflow: `.github/workflows/publish.yml` (triggers on `v*` tags / `workflow_dispatch`)
23
- - `scripts/prepare-publish.mjs` rewrites `file:` workspace deps for the npm tarball
24
- - First package version must be published once manually (or as a stub) before Trusted Publisher can be configured on npmjs.com
1
+ # Changelog
2
+
3
+ All notable changes to vitos-pizza are documented here.
4
+
5
+ ## [0.2.0] - 2026-07-11
6
+
7
+ ### Added
8
+
9
+ - **`@vitos-pizza/todoist`** in-memory task list with TUI widget, `/todo` command, and LLM tools (`todo_add` / `todo_update` / `todo_complete` / `todo_delete`)
10
+ - Terminal **resize recovery** in ui-enhancements debounce + full redraw after resize (fixes blank/corrupt TUI on Windows)
11
+ - Plan-mode **Next** footer guidance and optional scout (skip recon when context is enough; parallel scouts for independent areas)
12
+
13
+ ### Changed
14
+
15
+ - Permission system: tool activation starts from **all registered tools** (`getAllTools`) so leaving plan mode restores write/edit/bash
16
+ - Plan instructions: require `question` for mutually exclusive choices; clarify scout → planner delegation paths
17
+ - Question UI: width cache / render fixes for more stable TUI layout
18
+
19
+ ### Fixed
20
+
21
+ - Permission gate / evaluator edge cases covered by new tests (`before-agent-start`, gates, evaluator)
22
+
23
+ ## [0.1.0] - 2026-07-10
24
+
25
+ ### Added
26
+
27
+ - Rebrand from xin-pi to **vitos-pizza** (维多披萨 / Vito's Pizzeria)
28
+ - Pi distribution layout: repo root as single install entry
29
+ - `scripts/sync-pi-manifest.mjs` module assembler
30
+ - Original logo at `assets/logo.svg`
31
+
32
+ ### Removed
33
+
34
+ - Nested `packages/xin-pi` aggregator
35
+ - `@xin-pi/core`, template scaffold, postinstall symlink hack
36
+
37
+ ### Publishing
38
+
39
+ - GitHub Actions publishes `@vitos-pizza/vitos-pizza` via **npm Trusted Publishing (OIDC)** — no long-lived `NPM_TOKEN`
40
+ - Workflow: `.github/workflows/publish.yml` (triggers on `v*` tags / `workflow_dispatch`)
41
+ - `scripts/prepare-publish.mjs` rewrites `file:` workspace deps for the npm tarball
42
+ - First package version must be published once manually (or as a stub) before Trusted Publisher can be configured on npmjs.com
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 vitos-pizza contributors
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 vitos-pizza contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.