@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.
- package/AGENTS.md +158 -158
- package/CHANGELOG.md +42 -24
- package/LICENSE +21 -21
- package/README.md +237 -234
- package/assets/logo.svg +28 -28
- package/node_modules/@vitos-pizza/agent-mode/extensions/index.ts +138 -117
- package/node_modules/@vitos-pizza/agent-mode/package.json +3 -3
- package/node_modules/@vitos-pizza/agent-mode/src/apply-mode.ts +60 -60
- package/node_modules/@vitos-pizza/agent-mode/src/mode-events.ts +102 -102
- package/node_modules/@vitos-pizza/agent-mode/src/modes.ts +43 -43
- package/node_modules/@vitos-pizza/agent-mode/src/plan-instructions.ts +85 -44
- package/node_modules/@vitos-pizza/agent-mode/tests/apply-mode.test.ts +36 -36
- package/node_modules/@vitos-pizza/agent-mode/tests/mode-events.test.ts +22 -22
- package/node_modules/@vitos-pizza/agent-mode/tests/modes.test.ts +38 -38
- package/node_modules/@vitos-pizza/agent-mode/tests/plan-instructions.test.ts +68 -45
- package/node_modules/@vitos-pizza/agent-mode/tsconfig.json +13 -13
- package/node_modules/@vitos-pizza/agent-mode/vitest.config.ts +8 -8
- package/node_modules/@vitos-pizza/keybindings/extensions/index.ts +104 -104
- package/node_modules/@vitos-pizza/keybindings/package.json +1 -1
- package/node_modules/@vitos-pizza/keybindings/presets/shortcuts.json +3 -3
- package/node_modules/@vitos-pizza/keybindings/src/bind.ts +57 -57
- package/node_modules/@vitos-pizza/keybindings/src/config.ts +84 -84
- package/node_modules/@vitos-pizza/keybindings/src/registry.ts +43 -43
- package/node_modules/@vitos-pizza/keybindings/src/types.ts +54 -54
- package/node_modules/@vitos-pizza/keybindings/tests/config.test.ts +83 -83
- package/node_modules/@vitos-pizza/keybindings/tests/registry.test.ts +142 -142
- package/node_modules/@vitos-pizza/keybindings/tsconfig.json +13 -13
- package/node_modules/@vitos-pizza/keybindings/vitest.config.ts +8 -8
- package/node_modules/@vitos-pizza/permission-system/extensions/index.ts +162 -162
- package/node_modules/@vitos-pizza/permission-system/package.json +2 -2
- package/node_modules/@vitos-pizza/permission-system/src/bash/matcher.ts +54 -51
- package/node_modules/@vitos-pizza/permission-system/src/bash/parser.ts +40 -40
- package/node_modules/@vitos-pizza/permission-system/src/config-paths.ts +23 -23
- package/node_modules/@vitos-pizza/permission-system/src/detect-preset-mode.ts +61 -61
- package/node_modules/@vitos-pizza/permission-system/src/expand-home.ts +12 -12
- package/node_modules/@vitos-pizza/permission-system/src/forwarding/forwarder.ts +224 -224
- package/node_modules/@vitos-pizza/permission-system/src/forwarding/subagent-registry.ts +61 -61
- package/node_modules/@vitos-pizza/permission-system/src/gates/path-utils.ts +66 -66
- package/node_modules/@vitos-pizza/permission-system/src/gates/pipeline.ts +151 -155
- package/node_modules/@vitos-pizza/permission-system/src/handlers/before-agent-start.ts +86 -65
- package/node_modules/@vitos-pizza/permission-system/src/handlers/skill-input.ts +1 -1
- package/node_modules/@vitos-pizza/permission-system/src/handlers/tool-call-gate.ts +204 -199
- package/node_modules/@vitos-pizza/permission-system/src/mode-api.ts +44 -44
- package/node_modules/@vitos-pizza/permission-system/src/permission-evaluator.ts +233 -216
- package/node_modules/@vitos-pizza/permission-system/src/permission-session.ts +62 -62
- package/node_modules/@vitos-pizza/permission-system/src/policy-loader.ts +211 -211
- package/node_modules/@vitos-pizza/permission-system/src/sanitizers/skill-prompt.ts +99 -99
- package/node_modules/@vitos-pizza/permission-system/src/sanitizers/system-prompt.ts +221 -221
- package/node_modules/@vitos-pizza/permission-system/src/service.ts +66 -66
- package/node_modules/@vitos-pizza/permission-system/src/session-approvals.ts +4 -1
- package/node_modules/@vitos-pizza/permission-system/src/types.ts +80 -80
- package/node_modules/@vitos-pizza/permission-system/src/ui/approval-summary.ts +43 -43
- package/node_modules/@vitos-pizza/permission-system/src/ui/config-modal.ts +36 -36
- package/node_modules/@vitos-pizza/permission-system/src/ui/permission-dialog.ts +52 -52
- package/node_modules/@vitos-pizza/permission-system/src/wildcard-matcher.ts +81 -81
- package/node_modules/@vitos-pizza/permission-system/src/yaml-frontmatter.ts +84 -84
- package/node_modules/@vitos-pizza/permission-system/src/yolo/runtime-api.ts +49 -49
- package/node_modules/@vitos-pizza/permission-system/tests/bash-parser.test.ts +32 -32
- package/node_modules/@vitos-pizza/permission-system/tests/before-agent-start.test.ts +61 -0
- package/node_modules/@vitos-pizza/permission-system/tests/detect-preset-mode.test.ts +68 -68
- package/node_modules/@vitos-pizza/permission-system/tests/forwarder.test.ts +55 -55
- package/node_modules/@vitos-pizza/permission-system/tests/gates.test.ts +170 -61
- package/node_modules/@vitos-pizza/permission-system/tests/path-utils.test.ts +68 -68
- package/node_modules/@vitos-pizza/permission-system/tests/permission-evaluator.test.ts +82 -55
- package/node_modules/@vitos-pizza/permission-system/tests/policy-loader.test.ts +25 -25
- package/node_modules/@vitos-pizza/permission-system/tests/system-prompt-sanitizer.test.ts +22 -22
- package/node_modules/@vitos-pizza/permission-system/tests/wildcard-matcher.test.ts +27 -27
- package/node_modules/@vitos-pizza/permission-system/tsconfig.json +13 -13
- package/node_modules/@vitos-pizza/permission-system/vitest.config.ts +8 -8
- package/node_modules/@vitos-pizza/question/package.json +1 -1
- package/node_modules/@vitos-pizza/question/src/question-ui.ts +5 -1
- package/node_modules/@vitos-pizza/question/src/register-tool.ts +1 -4
- package/node_modules/@vitos-pizza/question/tests/question-ui-width-cache.test.ts +45 -0
- package/node_modules/@vitos-pizza/question/tests/register-tool-render.test.ts +48 -45
- package/node_modules/@vitos-pizza/session-title/extensions/index.ts +137 -137
- package/node_modules/@vitos-pizza/session-title/package.json +3 -3
- package/node_modules/@vitos-pizza/session-title/src/build-title-prompt.ts +16 -16
- package/node_modules/@vitos-pizza/session-title/src/extract-title-context.ts +55 -55
- package/node_modules/@vitos-pizza/session-title/src/fast-rules.ts +48 -48
- package/node_modules/@vitos-pizza/session-title/src/load-settings.ts +70 -70
- package/node_modules/@vitos-pizza/session-title/src/normalize-title.ts +20 -20
- package/node_modules/@vitos-pizza/session-title/src/parse-title-response.ts +6 -6
- package/node_modules/@vitos-pizza/session-title/src/resolve-title-model.ts +33 -33
- package/node_modules/@vitos-pizza/session-title/src/schedule-title-job.ts +53 -53
- package/node_modules/@vitos-pizza/session-title/src/should-schedule.ts +30 -30
- package/node_modules/@vitos-pizza/session-title/src/title-agent.ts +60 -60
- package/node_modules/@vitos-pizza/session-title/src/truncate-input.ts +10 -10
- package/node_modules/@vitos-pizza/session-title/src/types.ts +29 -29
- package/node_modules/@vitos-pizza/session-title/tests/build-title-prompt.test.ts +34 -34
- package/node_modules/@vitos-pizza/session-title/tests/extension.test.ts +198 -198
- package/node_modules/@vitos-pizza/session-title/tests/extract-title-context.test.ts +48 -48
- package/node_modules/@vitos-pizza/session-title/tests/fast-rules.test.ts +43 -43
- package/node_modules/@vitos-pizza/session-title/tests/parse-title-response.test.ts +34 -34
- package/node_modules/@vitos-pizza/session-title/tests/should-schedule.test.ts +30 -30
- package/node_modules/@vitos-pizza/session-title/tests/title-agent.test.ts +154 -154
- package/node_modules/@vitos-pizza/session-title/tests/truncate-input.test.ts +15 -15
- package/node_modules/@vitos-pizza/session-title/tsconfig.json +13 -13
- package/node_modules/@vitos-pizza/session-title/vitest.config.ts +8 -8
- package/node_modules/@vitos-pizza/subagents/agents/planner.md +46 -43
- package/node_modules/@vitos-pizza/subagents/agents/scout.md +40 -40
- package/node_modules/@vitos-pizza/subagents/agents/title.md +13 -13
- package/node_modules/@vitos-pizza/subagents/agents/worker.md +36 -36
- package/node_modules/@vitos-pizza/subagents/extensions/index.ts +164 -164
- package/node_modules/@vitos-pizza/subagents/package.json +1 -1
- package/node_modules/@vitos-pizza/subagents/skills/subagents/SKILL.md +86 -80
- package/node_modules/@vitos-pizza/subagents/src/agents.ts +166 -166
- package/node_modules/@vitos-pizza/subagents/src/async/job-tracker.ts +71 -71
- package/node_modules/@vitos-pizza/subagents/src/async/spawn-async.ts +220 -220
- package/node_modules/@vitos-pizza/subagents/src/async/storage.ts +57 -57
- package/node_modules/@vitos-pizza/subagents/src/env.ts +4 -4
- package/node_modules/@vitos-pizza/subagents/src/execute-subagent.ts +285 -285
- package/node_modules/@vitos-pizza/subagents/src/progress.ts +187 -187
- package/node_modules/@vitos-pizza/subagents/src/render-animation.ts +40 -40
- package/node_modules/@vitos-pizza/subagents/src/render.ts +428 -428
- package/node_modules/@vitos-pizza/subagents/src/rpc/channels.ts +21 -21
- package/node_modules/@vitos-pizza/subagents/src/rpc/client.ts +144 -144
- package/node_modules/@vitos-pizza/subagents/src/rpc/server.ts +11 -11
- package/node_modules/@vitos-pizza/subagents/src/run-agent.ts +313 -313
- package/node_modules/@vitos-pizza/subagents/src/runtime.ts +102 -102
- package/node_modules/@vitos-pizza/subagents/src/schema.ts +62 -62
- package/node_modules/@vitos-pizza/subagents/src/spawn.ts +104 -104
- package/node_modules/@vitos-pizza/subagents/src/types.ts +92 -92
- package/node_modules/@vitos-pizza/subagents/src/utils.ts +100 -100
- package/node_modules/@vitos-pizza/subagents/src/wait.ts +159 -159
- package/node_modules/@vitos-pizza/subagents/tests/agents.test.ts +19 -19
- package/node_modules/@vitos-pizza/subagents/tests/execute-subagent.test.ts +96 -96
- package/node_modules/@vitos-pizza/subagents/tests/extension.test.ts +42 -42
- package/node_modules/@vitos-pizza/subagents/tests/progress.test.ts +206 -206
- package/node_modules/@vitos-pizza/subagents/tests/rpc.test.ts +74 -74
- package/node_modules/@vitos-pizza/subagents/tsconfig.json +13 -13
- package/node_modules/@vitos-pizza/subagents/vitest.config.ts +8 -8
- package/node_modules/@vitos-pizza/ui-enhancements/package.json +1 -1
- package/node_modules/@vitos-pizza/ui-enhancements/src/chrome/agent-mode-badge.ts +60 -60
- package/node_modules/@vitos-pizza/ui-enhancements/src/chrome/border-status.ts +14 -1
- package/node_modules/@vitos-pizza/ui-enhancements/src/chrome/resize-recovery.ts +63 -0
- package/node_modules/@vitos-pizza/ui-enhancements/tests/agent-mode-badge.test.ts +35 -35
- package/node_modules/@vitos-pizza/ui-enhancements/tests/resize-recovery.test.ts +135 -0
- package/node_modules/@vitos-pizza/websearch/package.json +1 -1
- package/node_modules/node-addon-api/tools/conversion.js +0 -0
- package/node_modules/node-gyp-build/bin.js +0 -0
- package/node_modules/node-gyp-build/build-test.js +0 -0
- package/node_modules/node-gyp-build/optional.js +0 -0
- package/package.json +11 -9
- package/packages/agent-mode/extensions/index.ts +138 -117
- package/packages/agent-mode/package.json +3 -3
- package/packages/agent-mode/src/apply-mode.ts +60 -60
- package/packages/agent-mode/src/mode-events.ts +102 -102
- package/packages/agent-mode/src/modes.ts +43 -43
- package/packages/agent-mode/src/plan-instructions.ts +85 -44
- package/packages/agent-mode/tsconfig.json +13 -13
- package/packages/agent-mode/vitest.config.ts +8 -8
- package/packages/keybindings/extensions/index.ts +104 -104
- package/packages/keybindings/package.json +1 -1
- package/packages/keybindings/presets/shortcuts.json +3 -3
- package/packages/keybindings/src/bind.ts +57 -57
- package/packages/keybindings/src/config.ts +84 -84
- package/packages/keybindings/src/registry.ts +43 -43
- package/packages/keybindings/src/types.ts +54 -54
- package/packages/keybindings/tsconfig.json +13 -13
- package/packages/keybindings/vitest.config.ts +8 -8
- package/packages/permission-system/extensions/index.ts +162 -162
- package/packages/permission-system/node_modules/web-tree-sitter/debug/tree-sitter.wasm +0 -0
- package/packages/permission-system/node_modules/web-tree-sitter/tree-sitter.wasm +0 -0
- package/packages/permission-system/package.json +2 -2
- package/packages/permission-system/src/bash/matcher.ts +54 -51
- package/packages/permission-system/src/bash/parser.ts +40 -40
- package/packages/permission-system/src/config-paths.ts +23 -23
- package/packages/permission-system/src/detect-preset-mode.ts +61 -61
- package/packages/permission-system/src/expand-home.ts +12 -12
- package/packages/permission-system/src/forwarding/forwarder.ts +224 -224
- package/packages/permission-system/src/forwarding/subagent-registry.ts +61 -61
- package/packages/permission-system/src/gates/path-utils.ts +66 -66
- package/packages/permission-system/src/gates/pipeline.ts +151 -155
- package/packages/permission-system/src/handlers/before-agent-start.ts +86 -65
- package/packages/permission-system/src/handlers/skill-input.ts +1 -1
- package/packages/permission-system/src/handlers/tool-call-gate.ts +204 -199
- package/packages/permission-system/src/mode-api.ts +44 -44
- package/packages/permission-system/src/permission-evaluator.ts +233 -216
- package/packages/permission-system/src/permission-session.ts +62 -62
- package/packages/permission-system/src/policy-loader.ts +211 -211
- package/packages/permission-system/src/sanitizers/skill-prompt.ts +99 -99
- package/packages/permission-system/src/sanitizers/system-prompt.ts +221 -221
- package/packages/permission-system/src/service.ts +66 -66
- package/packages/permission-system/src/session-approvals.ts +4 -1
- package/packages/permission-system/src/types.ts +80 -80
- package/packages/permission-system/src/ui/approval-summary.ts +43 -43
- package/packages/permission-system/src/ui/config-modal.ts +36 -36
- package/packages/permission-system/src/ui/permission-dialog.ts +52 -52
- package/packages/permission-system/src/wildcard-matcher.ts +81 -81
- package/packages/permission-system/src/yaml-frontmatter.ts +84 -84
- package/packages/permission-system/src/yolo/runtime-api.ts +49 -49
- package/packages/permission-system/tsconfig.json +13 -13
- package/packages/permission-system/vitest.config.ts +8 -8
- package/packages/question/package.json +1 -1
- package/packages/question/src/question-ui.ts +5 -1
- package/packages/question/src/register-tool.ts +1 -4
- package/packages/session-title/extensions/index.ts +137 -137
- package/packages/session-title/package.json +3 -3
- package/packages/session-title/src/build-title-prompt.ts +16 -16
- package/packages/session-title/src/extract-title-context.ts +55 -55
- package/packages/session-title/src/fast-rules.ts +48 -48
- package/packages/session-title/src/load-settings.ts +70 -70
- package/packages/session-title/src/normalize-title.ts +20 -20
- package/packages/session-title/src/parse-title-response.ts +6 -6
- package/packages/session-title/src/resolve-title-model.ts +33 -33
- package/packages/session-title/src/schedule-title-job.ts +53 -53
- package/packages/session-title/src/should-schedule.ts +30 -30
- package/packages/session-title/src/title-agent.ts +60 -60
- package/packages/session-title/src/truncate-input.ts +10 -10
- package/packages/session-title/src/types.ts +29 -29
- package/packages/session-title/tsconfig.json +13 -13
- package/packages/session-title/vitest.config.ts +8 -8
- package/packages/subagents/agents/planner.md +46 -43
- package/packages/subagents/agents/scout.md +40 -40
- package/packages/subagents/agents/title.md +13 -13
- package/packages/subagents/agents/worker.md +36 -36
- package/packages/subagents/extensions/index.ts +164 -164
- package/packages/subagents/package.json +1 -1
- package/packages/subagents/skills/subagents/SKILL.md +86 -80
- package/packages/subagents/src/agents.ts +166 -166
- package/packages/subagents/src/async/job-tracker.ts +71 -71
- package/packages/subagents/src/async/spawn-async.ts +220 -220
- package/packages/subagents/src/async/storage.ts +57 -57
- package/packages/subagents/src/env.ts +4 -4
- package/packages/subagents/src/execute-subagent.ts +285 -285
- package/packages/subagents/src/progress.ts +187 -187
- package/packages/subagents/src/render-animation.ts +40 -40
- package/packages/subagents/src/render.ts +428 -428
- package/packages/subagents/src/rpc/channels.ts +21 -21
- package/packages/subagents/src/rpc/client.ts +144 -144
- package/packages/subagents/src/rpc/server.ts +11 -11
- package/packages/subagents/src/run-agent.ts +313 -313
- package/packages/subagents/src/runtime.ts +102 -102
- package/packages/subagents/src/schema.ts +62 -62
- package/packages/subagents/src/spawn.ts +104 -104
- package/packages/subagents/src/types.ts +92 -92
- package/packages/subagents/src/utils.ts +100 -100
- package/packages/subagents/src/wait.ts +159 -159
- package/packages/subagents/tsconfig.json +13 -13
- package/packages/subagents/vitest.config.ts +8 -8
- package/packages/todoist/extensions/index.ts +163 -0
- package/packages/todoist/package.json +34 -0
- package/packages/todoist/src/events.ts +7 -0
- package/packages/todoist/src/silent-render.ts +8 -0
- package/packages/todoist/src/state.ts +147 -0
- package/packages/todoist/src/tools.ts +175 -0
- package/packages/todoist/src/types.ts +34 -0
- package/packages/todoist/src/widget.ts +109 -0
- package/packages/todoist/tsconfig.json +13 -0
- package/packages/todoist/vitest.config.ts +8 -0
- package/packages/ui-enhancements/package.json +1 -1
- package/packages/ui-enhancements/src/chrome/agent-mode-badge.ts +60 -60
- package/packages/ui-enhancements/src/chrome/border-status.ts +14 -1
- package/packages/ui-enhancements/src/chrome/resize-recovery.ts +63 -0
- package/packages/websearch/package.json +1 -1
- package/scripts/sync-pi-manifest.mjs +1 -1
- package/packages/permission-system/node_modules/web-tree-sitter/lib/tree-sitter.cjs +0 -2988
- package/packages/permission-system/node_modules/web-tree-sitter/lib/tree-sitter.wasm +0 -0
- 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.
|
|
6
|
-
|
|
7
|
-
### Added
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
###
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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.
|