@tomsun28/pizza 0.1.0 → 0.1.1

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 (382) hide show
  1. package/README.md +20 -143
  2. package/README.zh-CN.md +36 -0
  3. package/dist/bun/cli.d.ts +2 -0
  4. package/dist/bun/cli.js +6 -0
  5. package/dist/bun/register-bedrock.d.ts +1 -0
  6. package/dist/bun/register-bedrock.js +3 -0
  7. package/dist/cli/args.d.ts +48 -0
  8. package/dist/cli/args.js +330 -0
  9. package/dist/cli/config-selector.d.ts +13 -0
  10. package/dist/cli/config-selector.js +30 -0
  11. package/dist/cli/file-processor.d.ts +14 -0
  12. package/dist/cli/file-processor.js +82 -0
  13. package/dist/cli/initial-message.d.ts +17 -0
  14. package/dist/cli/initial-message.js +21 -0
  15. package/dist/cli/list-models.d.ts +8 -0
  16. package/dist/cli/list-models.js +96 -0
  17. package/dist/cli.d.ts +2 -0
  18. package/dist/cli.js +68 -0
  19. package/dist/config.d.ts +79 -0
  20. package/dist/config.js +223 -0
  21. package/dist/core/agent/index.d.ts +6 -0
  22. package/dist/core/agent/index.js +6 -0
  23. package/dist/core/agent/types.d.ts +202 -0
  24. package/dist/core/agent/types.js +51 -0
  25. package/dist/core/auth-storage.d.ts +135 -0
  26. package/dist/core/auth-storage.js +417 -0
  27. package/dist/core/bash-executor.d.ts +31 -0
  28. package/dist/core/bash-executor.js +107 -0
  29. package/dist/core/compaction/branch-summarization.d.ts +87 -0
  30. package/dist/core/compaction/branch-summarization.js +242 -0
  31. package/dist/core/compaction/compaction-engine.d.ts +40 -0
  32. package/dist/core/compaction/compaction-engine.js +292 -0
  33. package/dist/core/compaction/compaction.d.ts +106 -0
  34. package/dist/core/compaction/compaction.js +295 -0
  35. package/dist/core/compaction/index.d.ts +7 -0
  36. package/dist/core/compaction/index.js +7 -0
  37. package/dist/core/compaction/utils.d.ts +37 -0
  38. package/dist/core/compaction/utils.js +152 -0
  39. package/dist/core/defaults.d.ts +2 -0
  40. package/dist/core/defaults.js +1 -0
  41. package/dist/core/diagnostics.d.ts +14 -0
  42. package/dist/core/diagnostics.js +1 -0
  43. package/dist/core/event-bus.d.ts +8 -0
  44. package/dist/core/event-bus.js +24 -0
  45. package/dist/core/event-store/events.d.ts +465 -0
  46. package/dist/core/event-store/events.js +6 -0
  47. package/dist/core/event-store/index.d.ts +10 -0
  48. package/dist/core/event-store/index.js +10 -0
  49. package/dist/core/event-store/sqlite-store.d.ts +27 -0
  50. package/dist/core/event-store/sqlite-store.js +275 -0
  51. package/dist/core/event-store/store.d.ts +91 -0
  52. package/dist/core/event-store/store.js +7 -0
  53. package/dist/core/event-store/thread-scoped-store.d.ts +29 -0
  54. package/dist/core/event-store/thread-scoped-store.js +50 -0
  55. package/dist/core/event-store/types.d.ts +70 -0
  56. package/dist/core/event-store/types.js +7 -0
  57. package/dist/core/event-store/workspace.d.ts +37 -0
  58. package/dist/core/event-store/workspace.js +71 -0
  59. package/dist/core/exec.d.ts +28 -0
  60. package/dist/core/exec.js +74 -0
  61. package/dist/core/export-html/ansi-to-html.d.ts +21 -0
  62. package/dist/core/export-html/ansi-to-html.js +248 -0
  63. package/dist/core/export-html/index.d.ts +29 -0
  64. package/dist/core/export-html/index.js +186 -0
  65. package/dist/core/export-html/template.css +1017 -0
  66. package/dist/core/export-html/template.html +55 -0
  67. package/dist/core/export-html/template.js +1742 -0
  68. package/dist/core/export-html/tool-renderer.d.ts +39 -0
  69. package/dist/core/export-html/tool-renderer.js +94 -0
  70. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  71. package/dist/core/export-html/vendor/marked.min.js +6 -0
  72. package/dist/core/extensions/index.d.ts +12 -0
  73. package/dist/core/extensions/index.js +9 -0
  74. package/dist/core/extensions/loader.d.ts +24 -0
  75. package/dist/core/extensions/loader.js +492 -0
  76. package/dist/core/extensions/runner.d.ts +167 -0
  77. package/dist/core/extensions/runner.js +898 -0
  78. package/dist/core/extensions/session-context.d.ts +67 -0
  79. package/dist/core/extensions/session-context.js +272 -0
  80. package/dist/core/extensions/types.d.ts +1147 -0
  81. package/dist/core/extensions/types.js +44 -0
  82. package/dist/core/extensions/wrapper.d.ts +19 -0
  83. package/dist/core/extensions/wrapper.js +21 -0
  84. package/dist/core/footer-data-provider.d.ts +47 -0
  85. package/dist/core/footer-data-provider.js +321 -0
  86. package/dist/core/goal/index.d.ts +3 -0
  87. package/dist/core/goal/index.js +1 -0
  88. package/dist/core/goal/scheduler.d.ts +83 -0
  89. package/dist/core/goal/scheduler.js +154 -0
  90. package/dist/core/goal/types.d.ts +182 -0
  91. package/dist/core/goal/types.js +11 -0
  92. package/dist/core/index.d.ts +8 -0
  93. package/dist/core/index.js +8 -0
  94. package/dist/core/intent/classifier.d.ts +53 -0
  95. package/dist/core/intent/classifier.js +353 -0
  96. package/dist/core/intent/index.d.ts +8 -0
  97. package/dist/core/intent/index.js +8 -0
  98. package/dist/core/intent/tool-adapter.d.ts +31 -0
  99. package/dist/core/intent/tool-adapter.js +168 -0
  100. package/dist/core/intent/types.d.ts +71 -0
  101. package/dist/core/intent/types.js +6 -0
  102. package/dist/core/keybindings.d.ts +297 -0
  103. package/dist/core/keybindings.js +250 -0
  104. package/dist/core/messages.d.ts +30 -0
  105. package/dist/core/messages.js +134 -0
  106. package/dist/core/model-registry.d.ts +131 -0
  107. package/dist/core/model-registry.js +634 -0
  108. package/dist/core/model-resolver.d.ts +109 -0
  109. package/dist/core/model-resolver.js +486 -0
  110. package/dist/core/output-guard.d.ts +5 -0
  111. package/dist/core/output-guard.js +58 -0
  112. package/dist/core/package-manager.d.ts +196 -0
  113. package/dist/core/package-manager.js +1873 -0
  114. package/dist/core/projection/boundary-inferrer.d.ts +58 -0
  115. package/dist/core/projection/boundary-inferrer.js +122 -0
  116. package/dist/core/projection/event-to-message.d.ts +35 -0
  117. package/dist/core/projection/event-to-message.js +253 -0
  118. package/dist/core/projection/goal-projection.d.ts +67 -0
  119. package/dist/core/projection/goal-projection.js +339 -0
  120. package/dist/core/projection/index.d.ts +13 -0
  121. package/dist/core/projection/index.js +13 -0
  122. package/dist/core/projection/session-manager.d.ts +100 -0
  123. package/dist/core/projection/session-manager.js +331 -0
  124. package/dist/core/projection/session-projection.d.ts +58 -0
  125. package/dist/core/projection/session-projection.js +257 -0
  126. package/dist/core/projection/task-history.d.ts +13 -0
  127. package/dist/core/projection/task-history.js +61 -0
  128. package/dist/core/projection/timeline-projection.d.ts +82 -0
  129. package/dist/core/projection/timeline-projection.js +276 -0
  130. package/dist/core/projection/types.d.ts +69 -0
  131. package/dist/core/projection/types.js +6 -0
  132. package/dist/core/prompt-templates.d.ts +51 -0
  133. package/dist/core/prompt-templates.js +249 -0
  134. package/dist/core/resolve-config-value.d.ts +22 -0
  135. package/dist/core/resolve-config-value.js +125 -0
  136. package/dist/core/resource-loader.d.ts +193 -0
  137. package/dist/core/resource-loader.js +685 -0
  138. package/dist/core/runtime/ai-client.d.ts +12 -0
  139. package/dist/core/runtime/ai-client.js +153 -0
  140. package/dist/core/runtime/checkpoint.d.ts +12 -0
  141. package/dist/core/runtime/checkpoint.js +78 -0
  142. package/dist/core/runtime/index.d.ts +12 -0
  143. package/dist/core/runtime/index.js +12 -0
  144. package/dist/core/runtime/llm-types.d.ts +99 -0
  145. package/dist/core/runtime/llm-types.js +6 -0
  146. package/dist/core/runtime/local-runtime.d.ts +23 -0
  147. package/dist/core/runtime/local-runtime.js +59 -0
  148. package/dist/core/runtime/policies.d.ts +72 -0
  149. package/dist/core/runtime/policies.js +37 -0
  150. package/dist/core/runtime/reactor.d.ts +213 -0
  151. package/dist/core/runtime/reactor.js +992 -0
  152. package/dist/core/runtime/runtime.d.ts +191 -0
  153. package/dist/core/runtime/runtime.js +449 -0
  154. package/dist/core/runtime/types.d.ts +42 -0
  155. package/dist/core/runtime/types.js +1 -0
  156. package/dist/core/sdk.d.ts +12 -0
  157. package/dist/core/sdk.js +10 -0
  158. package/dist/core/session-context-builder.d.ts +9 -0
  159. package/dist/core/session-context-builder.js +87 -0
  160. package/dist/core/session-cwd.d.ts +18 -0
  161. package/dist/core/session-cwd.js +36 -0
  162. package/dist/core/session-facade-factory.d.ts +79 -0
  163. package/dist/core/session-facade-factory.js +460 -0
  164. package/dist/core/session-facade.d.ts +57 -0
  165. package/dist/core/session-facade.js +91 -0
  166. package/dist/core/session-listing.d.ts +30 -0
  167. package/dist/core/session-listing.js +168 -0
  168. package/dist/core/session-reader.d.ts +19 -0
  169. package/dist/core/session-reader.js +101 -0
  170. package/dist/core/session-ref.d.ts +7 -0
  171. package/dist/core/session-ref.js +25 -0
  172. package/dist/core/session-services.d.ts +51 -0
  173. package/dist/core/session-services.js +90 -0
  174. package/dist/core/session-stats.d.ts +43 -0
  175. package/dist/core/session-stats.js +41 -0
  176. package/dist/core/settings-manager.d.ts +236 -0
  177. package/dist/core/settings-manager.js +706 -0
  178. package/dist/core/skill-block-parser.d.ts +12 -0
  179. package/dist/core/skill-block-parser.js +15 -0
  180. package/dist/core/skills.d.ts +59 -0
  181. package/dist/core/skills.js +408 -0
  182. package/dist/core/slash-commands.d.ts +13 -0
  183. package/dist/core/slash-commands.js +17 -0
  184. package/dist/core/source-info.d.ts +17 -0
  185. package/dist/core/source-info.js +18 -0
  186. package/dist/core/system-prompt.d.ts +27 -0
  187. package/dist/core/system-prompt.js +179 -0
  188. package/dist/core/timings.d.ts +7 -0
  189. package/dist/core/timings.js +30 -0
  190. package/dist/core/tools/bash.d.ts +95 -0
  191. package/dist/core/tools/bash.js +513 -0
  192. package/dist/core/tools/builtin-commands.d.ts +75 -0
  193. package/dist/core/tools/builtin-commands.js +503 -0
  194. package/dist/core/tools/compat-commands.d.ts +12 -0
  195. package/dist/core/tools/compat-commands.js +1280 -0
  196. package/dist/core/tools/edit-diff.d.ts +59 -0
  197. package/dist/core/tools/edit-diff.js +263 -0
  198. package/dist/core/tools/edit.d.ts +49 -0
  199. package/dist/core/tools/edit.js +340 -0
  200. package/dist/core/tools/file-mutation-queue.d.ts +5 -0
  201. package/dist/core/tools/file-mutation-queue.js +36 -0
  202. package/dist/core/tools/find.d.ts +34 -0
  203. package/dist/core/tools/find.js +459 -0
  204. package/dist/core/tools/grep.d.ts +36 -0
  205. package/dist/core/tools/grep.js +422 -0
  206. package/dist/core/tools/index.d.ts +70 -0
  207. package/dist/core/tools/index.js +129 -0
  208. package/dist/core/tools/line-anchors.d.ts +33 -0
  209. package/dist/core/tools/line-anchors.js +151 -0
  210. package/dist/core/tools/ls.d.ts +36 -0
  211. package/dist/core/tools/ls.js +268 -0
  212. package/dist/core/tools/path-utils.d.ts +7 -0
  213. package/dist/core/tools/path-utils.js +80 -0
  214. package/dist/core/tools/read.d.ts +35 -0
  215. package/dist/core/tools/read.js +244 -0
  216. package/dist/core/tools/render-utils.d.ts +20 -0
  217. package/dist/core/tools/render-utils.js +48 -0
  218. package/dist/core/tools/session-split.d.ts +9 -0
  219. package/dist/core/tools/session-split.js +77 -0
  220. package/dist/core/tools/tool-definition-wrapper.d.ts +13 -0
  221. package/dist/core/tools/tool-definition-wrapper.js +32 -0
  222. package/dist/core/tools/truncate.d.ts +69 -0
  223. package/dist/core/tools/truncate.js +204 -0
  224. package/dist/core/tools/write.d.ts +25 -0
  225. package/dist/core/tools/write.js +211 -0
  226. package/dist/core/types/session-types.d.ts +123 -0
  227. package/dist/core/types/session-types.js +8 -0
  228. package/dist/index.d.ts +27 -0
  229. package/dist/index.js +38 -0
  230. package/dist/main.d.ts +11 -2
  231. package/dist/main.js +577 -149
  232. package/dist/modes/event-mapper.d.ts +115 -0
  233. package/dist/modes/event-mapper.js +200 -0
  234. package/dist/modes/gui/server.d.ts +14 -0
  235. package/dist/modes/gui/server.js +1032 -0
  236. package/dist/modes/index.d.ts +10 -0
  237. package/dist/modes/index.js +9 -0
  238. package/dist/modes/interactive/assets/clankolas.png +0 -0
  239. package/dist/modes/interactive/components/armin.d.ts +33 -0
  240. package/dist/modes/interactive/components/armin.js +328 -0
  241. package/dist/modes/interactive/components/assistant-message.d.ts +19 -0
  242. package/dist/modes/interactive/components/assistant-message.js +115 -0
  243. package/dist/modes/interactive/components/bash-execution.d.ts +33 -0
  244. package/dist/modes/interactive/components/bash-execution.js +169 -0
  245. package/dist/modes/interactive/components/bordered-loader.d.ts +15 -0
  246. package/dist/modes/interactive/components/bordered-loader.js +50 -0
  247. package/dist/modes/interactive/components/branch-summary-message.d.ts +15 -0
  248. package/dist/modes/interactive/components/branch-summary-message.js +41 -0
  249. package/dist/modes/interactive/components/brand-header.d.ts +33 -0
  250. package/dist/modes/interactive/components/brand-header.js +235 -0
  251. package/dist/modes/interactive/components/compaction-summary-message.d.ts +15 -0
  252. package/dist/modes/interactive/components/compaction-summary-message.js +42 -0
  253. package/dist/modes/interactive/components/config-selector.d.ts +70 -0
  254. package/dist/modes/interactive/components/config-selector.js +469 -0
  255. package/dist/modes/interactive/components/countdown-timer.d.ts +13 -0
  256. package/dist/modes/interactive/components/countdown-timer.js +27 -0
  257. package/dist/modes/interactive/components/custom-editor.d.ts +27 -0
  258. package/dist/modes/interactive/components/custom-editor.js +94 -0
  259. package/dist/modes/interactive/components/custom-message.d.ts +19 -0
  260. package/dist/modes/interactive/components/custom-message.js +73 -0
  261. package/dist/modes/interactive/components/daxnuts.d.ts +22 -0
  262. package/dist/modes/interactive/components/daxnuts.js +137 -0
  263. package/dist/modes/interactive/components/diff.d.ts +11 -0
  264. package/dist/modes/interactive/components/diff.js +132 -0
  265. package/dist/modes/interactive/components/dynamic-border.d.ts +14 -0
  266. package/dist/modes/interactive/components/dynamic-border.js +19 -0
  267. package/dist/modes/interactive/components/earendil-announcement.d.ts +4 -0
  268. package/dist/modes/interactive/components/earendil-announcement.js +39 -0
  269. package/dist/modes/interactive/components/extension-editor.d.ts +19 -0
  270. package/dist/modes/interactive/components/extension-editor.js +105 -0
  271. package/dist/modes/interactive/components/extension-input.d.ts +22 -0
  272. package/dist/modes/interactive/components/extension-input.js +54 -0
  273. package/dist/modes/interactive/components/extension-selector.d.ts +23 -0
  274. package/dist/modes/interactive/components/extension-selector.js +70 -0
  275. package/dist/modes/interactive/components/footer.d.ts +55 -0
  276. package/dist/modes/interactive/components/footer.js +207 -0
  277. package/dist/modes/interactive/components/index.d.ts +31 -0
  278. package/dist/modes/interactive/components/index.js +32 -0
  279. package/dist/modes/interactive/components/keybinding-hints.d.ts +7 -0
  280. package/dist/modes/interactive/components/keybinding-hints.js +21 -0
  281. package/dist/modes/interactive/components/login-dialog.d.ts +41 -0
  282. package/dist/modes/interactive/components/login-dialog.js +138 -0
  283. package/dist/modes/interactive/components/model-selector.d.ts +32 -0
  284. package/dist/modes/interactive/components/model-selector.js +209 -0
  285. package/dist/modes/interactive/components/oauth-selector.d.ts +18 -0
  286. package/dist/modes/interactive/components/oauth-selector.js +91 -0
  287. package/dist/modes/interactive/components/settings-selector.d.ts +57 -0
  288. package/dist/modes/interactive/components/settings-selector.js +299 -0
  289. package/dist/modes/interactive/components/show-images-selector.d.ts +9 -0
  290. package/dist/modes/interactive/components/show-images-selector.js +37 -0
  291. package/dist/modes/interactive/components/skill-invocation-message.d.ts +16 -0
  292. package/dist/modes/interactive/components/skill-invocation-message.js +44 -0
  293. package/dist/modes/interactive/components/theme-selector.d.ts +10 -0
  294. package/dist/modes/interactive/components/theme-selector.js +47 -0
  295. package/dist/modes/interactive/components/thinking-selector.d.ts +10 -0
  296. package/dist/modes/interactive/components/thinking-selector.js +50 -0
  297. package/dist/modes/interactive/components/timeline-view.d.ts +31 -0
  298. package/dist/modes/interactive/components/timeline-view.js +81 -0
  299. package/dist/modes/interactive/components/tool-execution.d.ts +64 -0
  300. package/dist/modes/interactive/components/tool-execution.js +305 -0
  301. package/dist/modes/interactive/components/tree-selector.d.ts +88 -0
  302. package/dist/modes/interactive/components/tree-selector.js +1072 -0
  303. package/dist/modes/interactive/components/user-message-selector.d.ts +29 -0
  304. package/dist/modes/interactive/components/user-message-selector.js +110 -0
  305. package/dist/modes/interactive/components/user-message.d.ts +9 -0
  306. package/dist/modes/interactive/components/user-message.js +27 -0
  307. package/dist/modes/interactive/components/visual-truncate.d.ts +23 -0
  308. package/dist/modes/interactive/components/visual-truncate.js +32 -0
  309. package/dist/modes/interactive/interactive-mode.d.ts +394 -0
  310. package/dist/modes/interactive/interactive-mode.js +4116 -0
  311. package/dist/modes/interactive/theme/dark.json +85 -0
  312. package/dist/modes/interactive/theme/light.json +84 -0
  313. package/dist/modes/interactive/theme/theme-schema.json +335 -0
  314. package/dist/modes/interactive/theme/theme.d.ts +80 -0
  315. package/dist/modes/interactive/theme/theme.js +973 -0
  316. package/dist/modes/print-mode.d.ts +27 -0
  317. package/dist/modes/print-mode.js +102 -0
  318. package/dist/modes/rpc/jsonl.d.ts +16 -0
  319. package/dist/modes/rpc/jsonl.js +48 -0
  320. package/dist/modes/rpc/rpc-client.d.ts +219 -0
  321. package/dist/modes/rpc/rpc-client.js +405 -0
  322. package/dist/modes/rpc/rpc-mode.d.ts +19 -0
  323. package/dist/modes/rpc/rpc-mode.js +381 -0
  324. package/dist/modes/rpc/rpc-types.d.ts +406 -0
  325. package/dist/modes/rpc/rpc-types.js +7 -0
  326. package/dist/package-manager-cli.d.ts +3 -0
  327. package/dist/package-manager-cli.js +233 -0
  328. package/dist/utils/changelog.d.ts +20 -0
  329. package/dist/utils/changelog.js +86 -0
  330. package/dist/utils/child-process.d.ts +10 -0
  331. package/dist/utils/child-process.js +77 -0
  332. package/dist/utils/clipboard-image.d.ts +10 -0
  333. package/dist/utils/clipboard-image.js +244 -0
  334. package/dist/utils/clipboard-native.d.ts +7 -0
  335. package/dist/utils/clipboard-native.js +13 -0
  336. package/dist/utils/clipboard.d.ts +1 -0
  337. package/dist/utils/clipboard.js +77 -0
  338. package/dist/utils/exif-orientation.d.ts +4 -0
  339. package/dist/utils/exif-orientation.js +157 -0
  340. package/dist/utils/frontmatter.d.ts +7 -0
  341. package/dist/utils/frontmatter.js +25 -0
  342. package/dist/utils/git.d.ts +25 -0
  343. package/dist/utils/git.js +162 -0
  344. package/dist/utils/image-convert.d.ts +8 -0
  345. package/dist/utils/image-convert.js +38 -0
  346. package/dist/utils/image-resize.d.ts +35 -0
  347. package/dist/utils/image-resize.js +136 -0
  348. package/dist/utils/mime.d.ts +1 -0
  349. package/dist/utils/mime.js +25 -0
  350. package/dist/utils/path-shims.d.ts +1 -0
  351. package/dist/utils/path-shims.js +90 -0
  352. package/dist/utils/paths.d.ts +6 -0
  353. package/dist/utils/paths.js +18 -0
  354. package/dist/utils/photon.d.ts +20 -0
  355. package/dist/utils/photon.js +120 -0
  356. package/dist/utils/shell.d.ts +29 -0
  357. package/dist/utils/shell.js +189 -0
  358. package/dist/utils/sleep.d.ts +4 -0
  359. package/dist/utils/sleep.js +16 -0
  360. package/dist/utils/tools-manager.d.ts +3 -0
  361. package/dist/utils/tools-manager.js +101 -0
  362. package/dist/vendor/bin/darwin-arm64/fd +0 -0
  363. package/dist/vendor/bin/darwin-arm64/rg +0 -0
  364. package/dist/vendor/bin/darwin-x64/fd +0 -0
  365. package/dist/vendor/bin/darwin-x64/rg +0 -0
  366. package/dist/vendor/bin/linux-arm64/fd +0 -0
  367. package/dist/vendor/bin/linux-arm64/rg +0 -0
  368. package/dist/vendor/bin/linux-x64/fd +0 -0
  369. package/dist/vendor/bin/linux-x64/rg +0 -0
  370. package/dist/vendor/bin/win32-arm64/fd.exe +0 -0
  371. package/dist/vendor/bin/win32-arm64/rg.exe +0 -0
  372. package/dist/vendor/bin/win32-x64/fd.exe +0 -0
  373. package/dist/vendor/bin/win32-x64/rg.exe +0 -0
  374. package/package.json +90 -26
  375. package/dist/extension/core.d.ts +0 -69
  376. package/dist/extension/core.js +0 -270
  377. package/dist/extension/core.js.map +0 -1
  378. package/dist/extension/index.d.ts +0 -14
  379. package/dist/extension/index.js +0 -374
  380. package/dist/extension/index.js.map +0 -1
  381. package/dist/main.js.map +0 -1
  382. package/themes/pizza.json +0 -87
@@ -0,0 +1,179 @@
1
+ /**
2
+ * System prompt construction and project context loading
3
+ */
4
+ import { existsSync } from "fs";
5
+ import { execSync } from "child_process";
6
+ import { formatSkillsForPrompt } from "./skills.js";
7
+ /**
8
+ * Check if the current directory is a git repository
9
+ */
10
+ function isGitRepository(cwd) {
11
+ try {
12
+ const gitDir = existsSync(cwd) ? cwd : process.cwd();
13
+ execSync("git rev-parse --is-inside-work-tree", { cwd: gitDir, stdio: "ignore" });
14
+ return true;
15
+ }
16
+ catch {
17
+ return false;
18
+ }
19
+ }
20
+ /**
21
+ * Build the environment section to append at the end of the system prompt
22
+ */
23
+ function buildEnvironmentSection(cwd) {
24
+ const resolvedCwd = cwd.replace(/\\/g, "/");
25
+ const isGit = isGitRepository(cwd);
26
+ const platform = process.platform;
27
+ const shell = process.env.SHELL || process.env.COMSPEC || "unknown";
28
+ const osVersion = process.version;
29
+ const nodeVersion = process.versions.node;
30
+ return `
31
+ ## Environment
32
+ You are being called in the following environment:
33
+ - Primary working directory: ${resolvedCwd}
34
+ - Is Git repository: ${isGit ? "Yes" : "No"}
35
+ - Platform: ${platform}
36
+ - Shell: ${shell}
37
+ - Node.js version: ${nodeVersion}
38
+ - OS version: ${osVersion}
39
+ `;
40
+ }
41
+ /** Build the system prompt with tools, guidelines, and context */
42
+ export function buildSystemPrompt(options) {
43
+ const { customPrompt, selectedTools, toolSnippets, promptGuidelines, appendSystemPrompt, cwd, contextFiles: providedContextFiles, skills: providedSkills, } = options;
44
+ const resolvedCwd = cwd;
45
+ const promptCwd = resolvedCwd.replace(/\\/g, "/");
46
+ const now = new Date();
47
+ const year = now.getFullYear();
48
+ const month = String(now.getMonth() + 1).padStart(2, "0");
49
+ const day = String(now.getDate()).padStart(2, "0");
50
+ const date = `${year}-${month}-${day}`;
51
+ const appendSection = appendSystemPrompt ? `\n\n${appendSystemPrompt}` : "";
52
+ const contextFiles = providedContextFiles ?? [];
53
+ const skills = providedSkills ?? [];
54
+ if (customPrompt) {
55
+ let prompt = customPrompt;
56
+ if (appendSection) {
57
+ prompt += appendSection;
58
+ }
59
+ // Append project context files
60
+ if (contextFiles.length > 0) {
61
+ prompt += "\n\n# Project Context\n\n";
62
+ prompt += "Project-specific instructions and guidelines:\n\n";
63
+ for (const { path: filePath, content } of contextFiles) {
64
+ prompt += `## ${filePath}\n\n${content}\n\n`;
65
+ }
66
+ }
67
+ // Append skills section (only if read tool is available)
68
+ const customPromptHasRead = !selectedTools || selectedTools.includes("read");
69
+ if (customPromptHasRead && skills.length > 0) {
70
+ prompt += formatSkillsForPrompt(skills);
71
+ }
72
+ // Add date and working directory last
73
+ prompt += `\nCurrent date: ${date}`;
74
+ prompt += `\nCurrent working directory: ${promptCwd}`;
75
+ // Add environment section at the end
76
+ prompt += buildEnvironmentSection(resolvedCwd);
77
+ return prompt;
78
+ }
79
+ // Build tools list - only cli is exposed via function calls.
80
+ // read/write/edit are handled internally by the cli tool;
81
+ // grep/find/ls and other commands are passed to the system shell as-is.
82
+ const tools = selectedTools || (toolSnippets ? Object.keys(toolSnippets) : ["cli"]);
83
+ const toolSnippetsMap = {
84
+ cli: "Execute CLI commands",
85
+ bash: "Execute shell commands",
86
+ ...toolSnippets,
87
+ };
88
+ const visibleTools = tools.filter((name) => !!toolSnippetsMap[name]);
89
+ const toolsList = visibleTools.length > 0
90
+ ? visibleTools.map((name) => `- ${name}: ${toolSnippetsMap[name]}`)
91
+ : "(none)";
92
+ // Build guidelines based on which tools are actually available
93
+ const guidelinesList = [];
94
+ const guidelinesSet = new Set();
95
+ const addGuideline = (guideline) => {
96
+ if (guidelinesSet.has(guideline)) {
97
+ return;
98
+ }
99
+ guidelinesSet.add(guideline);
100
+ guidelinesList.push(guideline);
101
+ };
102
+ const hasCli = tools.includes("cli") || tools.includes("bash");
103
+ const hasRead = tools.includes("read");
104
+ // File exploration guidelines
105
+ if (hasCli) {
106
+ addGuideline("Use Pizza built-in file commands only for read, write, and edit");
107
+ addGuideline("Use shell commands such as grep, find, and ls normally; shell handles pipes, redirects, globs, &&, and ;");
108
+ addGuideline("Use read line anchors as edit range values; edit accepts op/range/new edits");
109
+ }
110
+ for (const guideline of promptGuidelines ?? []) {
111
+ const normalized = guideline.trim();
112
+ if (normalized.length > 0) {
113
+ addGuideline(normalized);
114
+ }
115
+ }
116
+ // Always include these
117
+ addGuideline("Be concise in your responses");
118
+ addGuideline("Show file paths clearly when working with files");
119
+ const guidelines = guidelinesList.map((g) => `- ${g}`).join("\n");
120
+ // Native CLI commands documentation
121
+ const builtinCommandsSection = [
122
+ "## Built-in Commands (executed internally by the cli tool)",
123
+ "",
124
+ "The cli tool recognizes only the following Pizza built-in file commands and executes them internally (no shell fork):",
125
+ "",
126
+ " read <path> [offset] [limit] Read file content with 2-hex line anchors",
127
+ " write <path> <content> Write content to file",
128
+ " write <path> <<EOF\ncontent\nEOF Write multi-line content (heredoc)",
129
+ " edit <path> <op> <range> [new] Edit anchored whole line(s)",
130
+ "",
131
+ "grep, find, ls, git, npm, and all other commands are passed to the system shell as-is.",
132
+ "The shell handles native pipes, redirects, globs, command grouping, &&, and ;. If grep/find/ls are missing from PATH, Pizza injects temporary per-process shims for only those missing commands.",
133
+ "",
134
+ "Examples:",
135
+ '- cli("read src/main.ts") - Read a file; text lines include <line>#<2-hex-hash> anchors',
136
+ '- cli("read src/main.ts 10 50") - Read lines 10-60',
137
+ '- cli("write output.txt Hello World") - Write to a file',
138
+ '- cli("edit src/main.ts replace 12#ab \"const value = 2\"") - Replace an anchored line',
139
+ '- cli("edit src/main.ts insert_after 12#ab \"const next = 3\"") - Insert after an anchored line',
140
+ '- cli("edit src/main.ts delete 12#ab..14#de") - Delete an anchored range',
141
+ '- cli("grep -rn \"foo\" . | head") - Search with native shell pipeline',
142
+ '- cli("find . -name \"*.py\" -maxdepth 2 | wc -l") - Find with native shell pipeline',
143
+ '- cli("ls -lah *.py") - List files with shell glob expansion',
144
+ ].join("\n");
145
+ let prompt = [
146
+ "You are an expert coding assistant. You help users by reading files, executing commands, editing code, and writing new files.",
147
+ "",
148
+ "Available tools:",
149
+ toolsList,
150
+ "",
151
+ builtinCommandsSection,
152
+ "",
153
+ "In addition to the tools above, you may have access to other custom tools depending on the project.",
154
+ "",
155
+ "Guidelines:",
156
+ guidelines,
157
+ "",
158
+ "Current date: " + date,
159
+ "Current working directory: " + promptCwd,
160
+ ].join("\n");
161
+ if (appendSection) {
162
+ prompt += appendSection;
163
+ }
164
+ // Append project context files
165
+ if (contextFiles.length > 0) {
166
+ prompt += "\n\n# Project Context\n\n";
167
+ prompt += "Project-specific instructions and guidelines:\n\n";
168
+ for (const { path: filePath, content } of contextFiles) {
169
+ prompt += `## ${filePath}\n\n${content}\n\n`;
170
+ }
171
+ }
172
+ // Append skills section (only if read tool is available)
173
+ if (hasRead && skills.length > 0) {
174
+ prompt += formatSkillsForPrompt(skills);
175
+ }
176
+ // Add environment section at the end
177
+ prompt += buildEnvironmentSection(resolvedCwd);
178
+ return prompt;
179
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Central timing instrumentation for startup profiling.
3
+ * Enable with PIZZA_TIMING=1 environment variable.
4
+ */
5
+ export declare function resetTimings(): void;
6
+ export declare function time(label: string): void;
7
+ export declare function printTimings(): void;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Central timing instrumentation for startup profiling.
3
+ * Enable with PIZZA_TIMING=1 environment variable.
4
+ */
5
+ const ENABLED = process.env.PIZZA_TIMING === "1";
6
+ const timings = [];
7
+ let lastTime = Date.now();
8
+ export function resetTimings() {
9
+ if (!ENABLED)
10
+ return;
11
+ timings.length = 0;
12
+ lastTime = Date.now();
13
+ }
14
+ export function time(label) {
15
+ if (!ENABLED)
16
+ return;
17
+ const now = Date.now();
18
+ timings.push({ label, ms: now - lastTime });
19
+ lastTime = now;
20
+ }
21
+ export function printTimings() {
22
+ if (!ENABLED || timings.length === 0)
23
+ return;
24
+ console.error("\n--- Startup Timings ---");
25
+ for (const t of timings) {
26
+ console.error(` ${t.label}: ${t.ms}ms`);
27
+ }
28
+ console.error(` TOTAL: ${timings.reduce((a, b) => a + b.ms, 0)}ms`);
29
+ console.error("------------------------\n");
30
+ }
@@ -0,0 +1,95 @@
1
+ import type { AgentTool } from "../agent/types.js";
2
+ import { type Component } from "@earendil-works/pi-tui";
3
+ import { type Static } from "@sinclair/typebox";
4
+ import type { ToolDefinition } from "../extensions/types.js";
5
+ import { type TruncationResult } from "./truncate.js";
6
+ import { type EditToolDetails, type EditToolInput, type EditToolOptions } from "./edit.js";
7
+ import { type ReadToolDetails, type ReadToolInput, type ReadToolOptions } from "./read.js";
8
+ import { type WriteToolInput, type WriteToolOptions } from "./write.js";
9
+ declare const bashSchema: import("@sinclair/typebox").TObject<{
10
+ command: import("@sinclair/typebox").TString;
11
+ timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
12
+ }>;
13
+ export type BashToolInput = Static<typeof bashSchema>;
14
+ export interface BashToolDetails {
15
+ truncation?: TruncationResult;
16
+ fullOutputPath?: string;
17
+ builtin?: BashBuiltinDetails;
18
+ }
19
+ export type BashBuiltinDetails = {
20
+ name: "read";
21
+ args: ReadToolInput;
22
+ details?: ReadToolDetails;
23
+ } | {
24
+ name: "write";
25
+ args: WriteToolInput;
26
+ details?: undefined;
27
+ } | {
28
+ name: "edit";
29
+ args: EditToolInput;
30
+ details?: EditToolDetails;
31
+ };
32
+ /**
33
+ * Pluggable operations for the cli tool's shell execution path.
34
+ * Override these to delegate command execution to remote systems (for example SSH).
35
+ */
36
+ export interface BashOperations {
37
+ /**
38
+ * Execute a command and stream output.
39
+ * @param command The command to execute
40
+ * @param cwd Working directory
41
+ * @param options Execution options
42
+ * @returns Promise resolving to exit code (null if killed)
43
+ */
44
+ exec: (command: string, cwd: string, options: {
45
+ onData: (data: Buffer) => void;
46
+ signal?: AbortSignal;
47
+ timeout?: number;
48
+ env?: NodeJS.ProcessEnv;
49
+ }) => Promise<{
50
+ exitCode: number | null;
51
+ }>;
52
+ }
53
+ /**
54
+ * Create bash operations using Pizza's built-in local shell execution backend.
55
+ *
56
+ * This is useful for extensions that intercept user_bash and still want Pizza's
57
+ * standard local shell behavior while wrapping or rewriting commands.
58
+ */
59
+ export declare function createLocalBashOperations(options?: {
60
+ shellPath?: string;
61
+ }): BashOperations;
62
+ export interface BashSpawnContext {
63
+ command: string;
64
+ cwd: string;
65
+ env: NodeJS.ProcessEnv;
66
+ }
67
+ export type BashSpawnHook = (context: BashSpawnContext) => BashSpawnContext;
68
+ export interface BashToolOptions {
69
+ /** Custom operations for command execution. Default: local shell */
70
+ operations?: BashOperations;
71
+ /** Options used when routing the built-in read command through the read tool. */
72
+ read?: ReadToolOptions;
73
+ /** Options used when routing the built-in write command through the write tool. */
74
+ write?: WriteToolOptions;
75
+ /** Options used when routing the built-in edit command through the edit tool. */
76
+ edit?: EditToolOptions;
77
+ /** Command prefix prepended to every command (for example shell setup commands) */
78
+ commandPrefix?: string;
79
+ /** Optional explicit shell path from settings */
80
+ shellPath?: string;
81
+ /** Hook to adjust command, cwd, or env before execution */
82
+ spawnHook?: BashSpawnHook;
83
+ }
84
+ type BashRenderState = {
85
+ startedAt: number | undefined;
86
+ endedAt: number | undefined;
87
+ interval: NodeJS.Timeout | undefined;
88
+ builtinKey?: string;
89
+ builtinCallComponent?: Component;
90
+ builtinResultComponent?: Component;
91
+ builtinRendererState?: any;
92
+ };
93
+ export declare function createBashToolDefinition(cwd: string, options?: BashToolOptions): ToolDefinition<typeof bashSchema, BashToolDetails | undefined, BashRenderState>;
94
+ export declare function createBashTool(cwd: string, options?: BashToolOptions): AgentTool<typeof bashSchema>;
95
+ export {};