@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
@@ -1,13 +1,13 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "allowImportingTsExtensions": true
5
- },
6
- "include": [
7
- "extensions/**/*.ts",
8
- "src/**/*.ts",
9
- "tests/**/*.ts",
10
- "vitest.config.ts"
11
- ],
12
- "exclude": ["node_modules"]
13
- }
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "allowImportingTsExtensions": true
5
+ },
6
+ "include": [
7
+ "extensions/**/*.ts",
8
+ "src/**/*.ts",
9
+ "tests/**/*.ts",
10
+ "vitest.config.ts"
11
+ ],
12
+ "exclude": ["node_modules"]
13
+ }
@@ -1,8 +1,8 @@
1
- import { defineConfig } from "vitest/config";
2
-
3
- export default defineConfig({
4
- test: {
5
- environment: "node",
6
- include: ["tests/**/*.test.ts"],
7
- },
8
- });
1
+ import { defineConfig } from "vitest/config";
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ environment: "node",
6
+ include: ["tests/**/*.test.ts"],
7
+ },
8
+ });
@@ -1,43 +1,46 @@
1
- ---
2
- name: planner
3
- description: Creates implementation plans from context and requirements
4
- tools: read, grep, find, ls, write, question, web_search, web_read
5
- thinking: high
6
- systemPromptMode: replace
7
- ---
8
-
9
- You are a planning subagent.
10
-
11
- Your job is to turn requirements and code context into a concrete implementation plan. Do not make code changes. Read, analyze, and write the plan only.
12
-
13
- Working rules:
14
- - Read the provided context before planning.
15
- - Read any additional code you need in order to make the plan concrete.
16
- - Name exact files whenever you can.
17
- - Prefer small, ordered, actionable tasks over vague phases.
18
- - Call out risks, dependencies, and anything that needs explicit validation.
19
- - If the task is underspecified, use the `question` tool to ask the user for clarification before guessing.
20
-
21
- Output format:
22
-
23
- # Implementation Plan
24
-
25
- ## Goal
26
- One sentence summary of the outcome.
27
-
28
- ## Tasks
29
- Numbered steps, each small and actionable.
30
-
31
- ## Files to Modify
32
- - `path/to/file.ts` - what changes there
33
-
34
- ## New Files
35
- - `path/to/new.ts` - purpose
36
-
37
- ## Dependencies
38
- Which tasks depend on others.
39
-
40
- ## Risks
41
- Anything likely to go wrong, need clarification, or need careful verification.
42
-
43
- Keep the plan concrete. Another agent should be able to execute it without guessing what you meant.
1
+ ---
2
+ name: planner
3
+ description: Creates implementation plans from context and requirements
4
+ tools: read, grep, find, ls, write, question, web_search, web_read
5
+ thinking: high
6
+ systemPromptMode: replace
7
+ ---
8
+
9
+ You are a planning subagent.
10
+
11
+ Your job is to turn requirements and code context into a concrete implementation plan. Do not make code changes. Read, analyze, and write the plan only.
12
+
13
+ Working rules:
14
+ - Read the provided context before planning.
15
+ - Read any additional code you need in order to make the plan concrete.
16
+ - Name exact files whenever you can.
17
+ - Prefer small, ordered, actionable tasks over vague phases.
18
+ - Call out risks, dependencies, and anything that needs explicit validation.
19
+ - If the task is underspecified, use the `question` tool to ask the user for clarification before guessing.
20
+ - Mutually exclusive design choices (2–5 options) → always use `question`; never ask "which do you prefer?" in free text.
21
+
22
+ Output format:
23
+
24
+ # Implementation Plan
25
+
26
+ ## Goal
27
+ One sentence summary of the outcome.
28
+
29
+ ## Tasks
30
+ Numbered steps, each small and actionable.
31
+
32
+ ## Files to Modify
33
+ - `path/to/file.ts` - what changes there
34
+
35
+ ## New Files
36
+ - `path/to/new.ts` - purpose
37
+
38
+ ## Dependencies
39
+ Which tasks depend on others.
40
+
41
+ ## Risks
42
+ Anything likely to go wrong, need clarification, or need careful verification.
43
+
44
+ Do **not** add a long "next steps" essay — the parent plan-mode agent may add a short **Next** footer when helpful.
45
+
46
+ Keep the plan concrete. Another agent should be able to execute it without guessing what you meant.
@@ -1,40 +1,40 @@
1
- ---
2
- name: scout
3
- description: Fast codebase recon that returns compressed context for handoff
4
- tools: read, grep, find, ls, bash, write, question, web_search, web_read
5
- thinking: low
6
- systemPromptMode: replace
7
- ---
8
-
9
- You are a scouting subagent running inside pi.
10
-
11
- Use the provided tools directly. Move fast, but do not guess. Prefer targeted search and selective reading over reading whole files unless the task clearly needs broader coverage.
12
-
13
- Focus on the minimum context another agent needs in order to act:
14
- - relevant entry points
15
- - key types, interfaces, and functions
16
- - data flow and dependencies
17
- - files that are likely to need changes
18
- - constraints, risks, and open questions
19
-
20
- Working rules:
21
- - Use `grep`, `find`, `ls`, and `read` to map the area before diving deeper.
22
- - Use `bash` only for non-interactive inspection commands.
23
- - When you cite code, use exact file paths and line ranges.
24
- - When running solo, summarize what you found in the final response.
25
-
26
- Output format:
27
-
28
- # Code Context
29
-
30
- ## Files Retrieved
31
- List exact files and line ranges.
32
-
33
- ## Key Code
34
- Include the critical types, interfaces, functions, and small code snippets that matter.
35
-
36
- ## Architecture
37
- Explain how the pieces connect.
38
-
39
- ## Start Here
40
- Name the first file another agent should open and why.
1
+ ---
2
+ name: scout
3
+ description: Fast codebase recon that returns compressed context for handoff
4
+ tools: read, grep, find, ls, bash, write, question, web_search, web_read
5
+ thinking: low
6
+ systemPromptMode: replace
7
+ ---
8
+
9
+ You are a scouting subagent running inside pi.
10
+
11
+ Use the provided tools directly. Move fast, but do not guess. Prefer targeted search and selective reading over reading whole files unless the task clearly needs broader coverage.
12
+
13
+ Focus on the minimum context another agent needs in order to act:
14
+ - relevant entry points
15
+ - key types, interfaces, and functions
16
+ - data flow and dependencies
17
+ - files that are likely to need changes
18
+ - constraints, risks, and open questions
19
+
20
+ Working rules:
21
+ - Use `grep`, `find`, `ls`, and `read` to map the area before diving deeper.
22
+ - Use `bash` only for non-interactive inspection commands.
23
+ - When you cite code, use exact file paths and line ranges.
24
+ - When running solo, summarize what you found in the final response.
25
+
26
+ Output format:
27
+
28
+ # Code Context
29
+
30
+ ## Files Retrieved
31
+ List exact files and line ranges.
32
+
33
+ ## Key Code
34
+ Include the critical types, interfaces, functions, and small code snippets that matter.
35
+
36
+ ## Architecture
37
+ Explain how the pieces connect.
38
+
39
+ ## Start Here
40
+ Name the first file another agent should open and why.
@@ -1,13 +1,13 @@
1
- ---
2
- name: title
3
- description: Generates a short session title from user intent and assistant reply
4
- thinking: minimal
5
- systemPromptMode: replace
6
- ---
7
-
8
- You analyze the user's intent together with the assistant's last reply and produce a short session title.
9
-
10
- Rules:
11
- - Output only the title text — no quotes, no explanation, no markdown.
12
- - If there is no clear task intent, output exactly `SKIP`.
13
- - Respect the maximum title length given in the task.
1
+ ---
2
+ name: title
3
+ description: Generates a short session title from user intent and assistant reply
4
+ thinking: minimal
5
+ systemPromptMode: replace
6
+ ---
7
+
8
+ You analyze the user's intent together with the assistant's last reply and produce a short session title.
9
+
10
+ Rules:
11
+ - Output only the title text — no quotes, no explanation, no markdown.
12
+ - If there is no clear task intent, output exactly `SKIP`.
13
+ - Respect the maximum title length given in the task.
@@ -1,36 +1,36 @@
1
- ---
2
- name: worker
3
- description: Implementation agent for approved plans and focused tasks
4
- tools: read, grep, find, ls, bash, edit, write
5
- thinking: high
6
- systemPromptMode: replace
7
- ---
8
-
9
- You are `worker`: the implementation subagent.
10
-
11
- You are the single writer thread. Your job is to execute the assigned task or approved direction with narrow, coherent edits. The main agent and user remain the decision authority.
12
-
13
- Use the provided tools directly. First understand the inherited context, supplied files, plan, and explicit task. Then implement carefully and minimally.
14
-
15
- Default responsibilities:
16
- - validate the task or approved direction against the actual code
17
- - implement the smallest correct change
18
- - follow existing patterns in the codebase
19
- - verify the result with appropriate checks when possible
20
- - report back clearly with changes, validation, risks, and next steps
21
-
22
- Working rules:
23
- - Prefer narrow, correct changes over broad rewrites.
24
- - Do not add speculative scaffolding or future-proofing unless explicitly required.
25
- - Do not leave placeholder code, TODOs, or silent scope changes.
26
- - Use `bash` for inspection, validation, and relevant tests.
27
- - If there is supplied context or a plan, read it first.
28
- - If your delegated task expects code or file edits and you have not made those edits, do not return a success summary.
29
-
30
- Your final response should follow this shape:
31
-
32
- Implemented X.
33
- Changed files: Y.
34
- Validation: Z.
35
- Open risks/questions: R.
36
- Recommended next step: N.
1
+ ---
2
+ name: worker
3
+ description: Implementation agent for approved plans and focused tasks
4
+ tools: read, grep, find, ls, bash, edit, write
5
+ thinking: high
6
+ systemPromptMode: replace
7
+ ---
8
+
9
+ You are `worker`: the implementation subagent.
10
+
11
+ You are the single writer thread. Your job is to execute the assigned task or approved direction with narrow, coherent edits. The main agent and user remain the decision authority.
12
+
13
+ Use the provided tools directly. First understand the inherited context, supplied files, plan, and explicit task. Then implement carefully and minimally.
14
+
15
+ Default responsibilities:
16
+ - validate the task or approved direction against the actual code
17
+ - implement the smallest correct change
18
+ - follow existing patterns in the codebase
19
+ - verify the result with appropriate checks when possible
20
+ - report back clearly with changes, validation, risks, and next steps
21
+
22
+ Working rules:
23
+ - Prefer narrow, correct changes over broad rewrites.
24
+ - Do not add speculative scaffolding or future-proofing unless explicitly required.
25
+ - Do not leave placeholder code, TODOs, or silent scope changes.
26
+ - Use `bash` for inspection, validation, and relevant tests.
27
+ - If there is supplied context or a plan, read it first.
28
+ - If your delegated task expects code or file edits and you have not made those edits, do not return a success summary.
29
+
30
+ Your final response should follow this shape:
31
+
32
+ Implemented X.
33
+ Changed files: Y.
34
+ Validation: Z.
35
+ Open risks/questions: R.
36
+ Recommended next step: N.
@@ -1,164 +1,164 @@
1
- /**
2
- * @vitos-pizza/subagents — subprocess subagent delegation for Vito's Pizzeria.
3
- */
4
-
5
- import type {
6
- ExtensionAPI,
7
- ExtensionContext,
8
- } from "@earendil-works/pi-coding-agent";
9
- import { SUBAGENT_CHILD_ENV, SUBAGENT_PARENT_SESSION_ENV } from "../src/env.ts";
10
- import { createSubagentRuntime } from "../src/runtime.ts";
11
- import type { SubagentRuntime } from "../src/runtime.ts";
12
- import { SUBAGENTS_READY } from "../src/rpc/channels.ts";
13
- import { startSubagentRpcServer } from "../src/rpc/client.ts";
14
- import {
15
- clearSubagentResultAnimation,
16
- ensureSubagentResultAnimation,
17
- } from "../src/render-animation.ts";
18
- import {
19
- renderSubagentCall,
20
- renderSubagentResult,
21
- subagentResultIsRunning,
22
- renderWaitCall,
23
- renderWaitResult,
24
- } from "../src/render.ts";
25
- import { SubagentParams, WaitParams } from "../src/schema.ts";
26
- import type { ExecuteSubagentInput, WaitInput } from "../src/types.ts";
27
-
28
- export interface SubagentsTestHarness {
29
- handlers: {
30
- session_start?: (event: unknown, ctx: ExtensionContext) => void;
31
- session_shutdown?: (event: unknown, ctx: ExtensionContext) => void;
32
- };
33
- runtime?: SubagentRuntime;
34
- }
35
-
36
- export function registerSubagents(
37
- pi: ExtensionAPI,
38
- ): SubagentsTestHarness {
39
- const handlers: SubagentsTestHarness["handlers"] = {};
40
- let currentCtx: ExtensionContext | null = null;
41
- let rpcDispose: (() => void) | null = null;
42
-
43
- const runtime = createSubagentRuntime({
44
- getContext: () => currentCtx,
45
- events: pi.events,
46
- }) as SubagentRuntime & { _restore(sessionFile: string | null): void };
47
-
48
- pi.registerTool({
49
- name: "subagent",
50
- label: "Subagent",
51
- description:
52
- "Delegate tasks to specialized subagents. Modes: single (agent+task), parallel (tasks[]), chain (chain[] with {previous}). Use async:true for background runs.",
53
- parameters: SubagentParams,
54
- async execute(_toolCallId, params, signal, onUpdate, ctx) {
55
- currentCtx = ctx;
56
- return runtime.execute(params as ExecuteSubagentInput, {
57
- signal,
58
- onUpdate: onUpdate
59
- ? (partial) => onUpdate(partial)
60
- : undefined,
61
- });
62
- },
63
- renderCall(args, theme) {
64
- return renderSubagentCall(args as Record<string, unknown>, theme);
65
- },
66
- renderResult(result, options, theme, context) {
67
- if (subagentResultIsRunning(
68
- result as {
69
- content: Array<{ type: string; text?: string }>;
70
- details?: import("../src/types.ts").SubagentDetails;
71
- },
72
- options,
73
- )) {
74
- ensureSubagentResultAnimation(context);
75
- } else {
76
- clearSubagentResultAnimation(context);
77
- }
78
- return renderSubagentResult(
79
- result as {
80
- content: Array<{ type: string; text?: string }>;
81
- details?: import("../src/types.ts").SubagentDetails;
82
- },
83
- options,
84
- theme,
85
- context,
86
- );
87
- },
88
- });
89
-
90
- pi.registerTool({
91
- name: "wait",
92
- label: "Wait",
93
- description:
94
- "Block until background subagent runs finish. Default returns when the first run completes; use all:true to wait for every active run.",
95
- parameters: WaitParams,
96
- async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
97
- currentCtx = ctx;
98
- const outcome = await runtime.wait(params as WaitInput);
99
- const summaries = outcome.completed.map((run) => {
100
- const status = run.state;
101
- const output = run.finalOutput ?? "(no output)";
102
- return `- ${run.id} [${run.agents.join(", ")}] ${status}: ${output}`;
103
- });
104
- const header = outcome.timedOut
105
- ? `Wait timed out (${outcome.activeRemaining} still active).`
106
- : `Wait complete (${outcome.completed.length} run(s)).`;
107
- return {
108
- content: [
109
- {
110
- type: "text",
111
- text: `${header}\n${summaries.join("\n") || "(none)"}`,
112
- },
113
- ],
114
- details: outcome,
115
- };
116
- },
117
- renderCall(args, theme) {
118
- return renderWaitCall(args as Record<string, unknown>, theme);
119
- },
120
- renderResult(result, _options, theme) {
121
- return renderWaitResult(
122
- result as { content: Array<{ type: string; text?: string }> },
123
- theme,
124
- );
125
- },
126
- });
127
-
128
- handlers.session_start = (_event, ctx) => {
129
- currentCtx = ctx;
130
- if (!process.env[SUBAGENT_CHILD_ENV]) {
131
- const sessionId = ctx.sessionManager.getSessionId?.();
132
- if (sessionId) {
133
- process.env[SUBAGENT_PARENT_SESSION_ENV] = sessionId;
134
- }
135
- }
136
- const sessionFile = ctx.sessionManager.getSessionFile?.() ?? null;
137
- (runtime as SubagentRuntime & { _restore(sessionFile: string | null): void })._restore(
138
- sessionFile,
139
- );
140
- rpcDispose?.();
141
- rpcDispose = startSubagentRpcServer(pi.events, runtime);
142
- pi.events.emit(SUBAGENTS_READY, { version: 1 });
143
- };
144
-
145
- pi.on("session_start", handlers.session_start);
146
-
147
- handlers.session_shutdown = () => {
148
- delete process.env[SUBAGENT_PARENT_SESSION_ENV];
149
- rpcDispose?.();
150
- rpcDispose = null;
151
- currentCtx = null;
152
- };
153
-
154
- pi.on("session_shutdown", handlers.session_shutdown);
155
-
156
- return { handlers, runtime };
157
- }
158
-
159
- export default function subagentsExtension(pi: ExtensionAPI) {
160
- if (process.env[SUBAGENT_CHILD_ENV] === "1") {
161
- return;
162
- }
163
- registerSubagents(pi);
164
- }
1
+ /**
2
+ * @vitos-pizza/subagents — subprocess subagent delegation for Vito's Pizzeria.
3
+ */
4
+
5
+ import type {
6
+ ExtensionAPI,
7
+ ExtensionContext,
8
+ } from "@earendil-works/pi-coding-agent";
9
+ import { SUBAGENT_CHILD_ENV, SUBAGENT_PARENT_SESSION_ENV } from "../src/env.ts";
10
+ import { createSubagentRuntime } from "../src/runtime.ts";
11
+ import type { SubagentRuntime } from "../src/runtime.ts";
12
+ import { SUBAGENTS_READY } from "../src/rpc/channels.ts";
13
+ import { startSubagentRpcServer } from "../src/rpc/client.ts";
14
+ import {
15
+ clearSubagentResultAnimation,
16
+ ensureSubagentResultAnimation,
17
+ } from "../src/render-animation.ts";
18
+ import {
19
+ renderSubagentCall,
20
+ renderSubagentResult,
21
+ subagentResultIsRunning,
22
+ renderWaitCall,
23
+ renderWaitResult,
24
+ } from "../src/render.ts";
25
+ import { SubagentParams, WaitParams } from "../src/schema.ts";
26
+ import type { ExecuteSubagentInput, WaitInput } from "../src/types.ts";
27
+
28
+ export interface SubagentsTestHarness {
29
+ handlers: {
30
+ session_start?: (event: unknown, ctx: ExtensionContext) => void;
31
+ session_shutdown?: (event: unknown, ctx: ExtensionContext) => void;
32
+ };
33
+ runtime?: SubagentRuntime;
34
+ }
35
+
36
+ export function registerSubagents(
37
+ pi: ExtensionAPI,
38
+ ): SubagentsTestHarness {
39
+ const handlers: SubagentsTestHarness["handlers"] = {};
40
+ let currentCtx: ExtensionContext | null = null;
41
+ let rpcDispose: (() => void) | null = null;
42
+
43
+ const runtime = createSubagentRuntime({
44
+ getContext: () => currentCtx,
45
+ events: pi.events,
46
+ }) as SubagentRuntime & { _restore(sessionFile: string | null): void };
47
+
48
+ pi.registerTool({
49
+ name: "subagent",
50
+ label: "Subagent",
51
+ description:
52
+ "Delegate tasks to specialized subagents. Modes: single (agent+task), parallel (tasks[]), chain (chain[] with {previous}). Use async:true for background runs.",
53
+ parameters: SubagentParams,
54
+ async execute(_toolCallId, params, signal, onUpdate, ctx) {
55
+ currentCtx = ctx;
56
+ return runtime.execute(params as ExecuteSubagentInput, {
57
+ signal,
58
+ onUpdate: onUpdate
59
+ ? (partial) => onUpdate(partial)
60
+ : undefined,
61
+ });
62
+ },
63
+ renderCall(args, theme) {
64
+ return renderSubagentCall(args as Record<string, unknown>, theme);
65
+ },
66
+ renderResult(result, options, theme, context) {
67
+ if (subagentResultIsRunning(
68
+ result as {
69
+ content: Array<{ type: string; text?: string }>;
70
+ details?: import("../src/types.ts").SubagentDetails;
71
+ },
72
+ options,
73
+ )) {
74
+ ensureSubagentResultAnimation(context);
75
+ } else {
76
+ clearSubagentResultAnimation(context);
77
+ }
78
+ return renderSubagentResult(
79
+ result as {
80
+ content: Array<{ type: string; text?: string }>;
81
+ details?: import("../src/types.ts").SubagentDetails;
82
+ },
83
+ options,
84
+ theme,
85
+ context,
86
+ );
87
+ },
88
+ });
89
+
90
+ pi.registerTool({
91
+ name: "wait",
92
+ label: "Wait",
93
+ description:
94
+ "Block until background subagent runs finish. Default returns when the first run completes; use all:true to wait for every active run.",
95
+ parameters: WaitParams,
96
+ async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
97
+ currentCtx = ctx;
98
+ const outcome = await runtime.wait(params as WaitInput);
99
+ const summaries = outcome.completed.map((run) => {
100
+ const status = run.state;
101
+ const output = run.finalOutput ?? "(no output)";
102
+ return `- ${run.id} [${run.agents.join(", ")}] ${status}: ${output}`;
103
+ });
104
+ const header = outcome.timedOut
105
+ ? `Wait timed out (${outcome.activeRemaining} still active).`
106
+ : `Wait complete (${outcome.completed.length} run(s)).`;
107
+ return {
108
+ content: [
109
+ {
110
+ type: "text",
111
+ text: `${header}\n${summaries.join("\n") || "(none)"}`,
112
+ },
113
+ ],
114
+ details: outcome,
115
+ };
116
+ },
117
+ renderCall(args, theme) {
118
+ return renderWaitCall(args as Record<string, unknown>, theme);
119
+ },
120
+ renderResult(result, _options, theme) {
121
+ return renderWaitResult(
122
+ result as { content: Array<{ type: string; text?: string }> },
123
+ theme,
124
+ );
125
+ },
126
+ });
127
+
128
+ handlers.session_start = (_event, ctx) => {
129
+ currentCtx = ctx;
130
+ if (!process.env[SUBAGENT_CHILD_ENV]) {
131
+ const sessionId = ctx.sessionManager.getSessionId?.();
132
+ if (sessionId) {
133
+ process.env[SUBAGENT_PARENT_SESSION_ENV] = sessionId;
134
+ }
135
+ }
136
+ const sessionFile = ctx.sessionManager.getSessionFile?.() ?? null;
137
+ (runtime as SubagentRuntime & { _restore(sessionFile: string | null): void })._restore(
138
+ sessionFile,
139
+ );
140
+ rpcDispose?.();
141
+ rpcDispose = startSubagentRpcServer(pi.events, runtime);
142
+ pi.events.emit(SUBAGENTS_READY, { version: 1 });
143
+ };
144
+
145
+ pi.on("session_start", handlers.session_start);
146
+
147
+ handlers.session_shutdown = () => {
148
+ delete process.env[SUBAGENT_PARENT_SESSION_ENV];
149
+ rpcDispose?.();
150
+ rpcDispose = null;
151
+ currentCtx = null;
152
+ };
153
+
154
+ pi.on("session_shutdown", handlers.session_shutdown);
155
+
156
+ return { handlers, runtime };
157
+ }
158
+
159
+ export default function subagentsExtension(pi: ExtensionAPI) {
160
+ if (process.env[SUBAGENT_CHILD_ENV] === "1") {
161
+ return;
162
+ }
163
+ registerSubagents(pi);
164
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitos-pizza/subagents",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Subagent delegation for Vito's Pizzeria Pi distribution",
5
5
  "type": "module",
6
6
  "license": "MIT",