@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/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.
|
|
29
|
-
|
|
30
|
-
# git (pinned tag)
|
|
31
|
-
pi install git:github.com/xin2017338/vitos-pizza@v0.
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
|
80
|
-
| `
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
subagent({
|
|
115
|
-
subagent({
|
|
116
|
-
subagent({ agent: "
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
/
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
/mode
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
| `
|
|
156
|
-
| `
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
npm
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
npm run
|
|
179
|
-
npm run
|
|
180
|
-
npm run lint
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
| **
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
| [Pi official
|
|
204
|
-
| [
|
|
205
|
-
| [@
|
|
206
|
-
| [
|
|
207
|
-
| [pi-
|
|
208
|
-
| [pi-
|
|
209
|
-
| [pi-
|
|
210
|
-
| [pi-web-
|
|
211
|
-
| [
|
|
212
|
-
| [
|
|
213
|
-
| [
|
|
214
|
-
| [pi-
|
|
215
|
-
| [
|
|
216
|
-
| [
|
|
217
|
-
|
|
|
218
|
-
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
|
226
|
-
|
|
227
|
-
| [
|
|
228
|
-
| [
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
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/todoist — in-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` | Balanced — read/grep/find/ls allowed in the git repo; bash `ask` for other commands |
|
|
156
|
+
| `plan` | `plan` | Read-only — explore 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>
|