@tomsun28/pizza 0.0.9 → 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 -25
  379. package/dist/extension/index.js +0 -303
  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,27 @@
1
+ /**
2
+ * Print mode (single-shot): Send prompts, output result, exit.
3
+ *
4
+ * Used for:
5
+ * - `pizza -p "prompt"` - text output
6
+ * - `pizza --mode json "prompt"` - JSON event stream
7
+ */
8
+ import type { ImageContent } from "@earendil-works/pi-ai/compat";
9
+ import type { SessionFacade } from "../core/session-facade.js";
10
+ /**
11
+ * Options for print mode.
12
+ */
13
+ export interface PrintModeOptions {
14
+ /** Output mode: "text" for final response only, "json" for all events */
15
+ mode: "text" | "json";
16
+ /** Array of additional prompts to send after initialMessage */
17
+ messages?: string[];
18
+ /** First message to send (may contain @file content) */
19
+ initialMessage?: string;
20
+ /** Images to attach to the initial message */
21
+ initialImages?: ImageContent[];
22
+ }
23
+ /**
24
+ * Run print mode against the event-sourced facade.
25
+ * JSON mode emits raw TypedEvent JSON lines; text mode prints the final assistant text.
26
+ */
27
+ export declare function runPrintModeWithFacade(facade: SessionFacade, options: PrintModeOptions): Promise<number>;
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Print mode (single-shot): Send prompts, output result, exit.
3
+ *
4
+ * Used for:
5
+ * - `pizza -p "prompt"` - text output
6
+ * - `pizza --mode json "prompt"` - JSON event stream
7
+ */
8
+ import { flushRawStdout, writeRawStdout } from "../core/output-guard.js";
9
+ import { killTrackedDetachedChildren } from "../utils/shell.js";
10
+ function registerPrintModeSignalHandlers(disposeRuntime) {
11
+ const cleanupHandlers = [];
12
+ const signals = ["SIGTERM"];
13
+ if (process.platform !== "win32") {
14
+ signals.push("SIGHUP");
15
+ }
16
+ for (const signal of signals) {
17
+ const handler = () => {
18
+ killTrackedDetachedChildren();
19
+ void disposeRuntime().finally(() => {
20
+ process.exit(signal === "SIGHUP" ? 129 : 143);
21
+ });
22
+ };
23
+ process.on(signal, handler);
24
+ cleanupHandlers.push(() => process.off(signal, handler));
25
+ }
26
+ return cleanupHandlers;
27
+ }
28
+ function writeFinalAssistantText(messages) {
29
+ const lastMessage = messages[messages.length - 1];
30
+ if (lastMessage?.role !== "assistant") {
31
+ return 0;
32
+ }
33
+ const assistantMsg = lastMessage;
34
+ if (assistantMsg.stopReason === "error" || assistantMsg.stopReason === "aborted") {
35
+ console.error(assistantMsg.errorMessage || `Request ${assistantMsg.stopReason}`);
36
+ return 1;
37
+ }
38
+ for (const content of assistantMsg.content) {
39
+ if (content.type === "text") {
40
+ writeRawStdout(`${content.text}\n`);
41
+ }
42
+ }
43
+ return 0;
44
+ }
45
+ function toEventImages(images) {
46
+ if (!images)
47
+ return undefined;
48
+ return images.map((image) => {
49
+ const eventImage = image;
50
+ return {
51
+ type: "image",
52
+ data: image.data,
53
+ mime_type: eventImage.mime_type ?? image.mimeType,
54
+ };
55
+ });
56
+ }
57
+ /**
58
+ * Run print mode against the event-sourced facade.
59
+ * JSON mode emits raw TypedEvent JSON lines; text mode prints the final assistant text.
60
+ */
61
+ export async function runPrintModeWithFacade(facade, options) {
62
+ const { mode, messages = [], initialMessage, initialImages } = options;
63
+ let exitCode = 0;
64
+ let unsubscribe;
65
+ let disposed = false;
66
+ const disposeRuntime = async () => {
67
+ if (disposed)
68
+ return;
69
+ disposed = true;
70
+ unsubscribe?.();
71
+ await Promise.resolve(facade.dispose());
72
+ };
73
+ const signalCleanupHandlers = registerPrintModeSignalHandlers(disposeRuntime);
74
+ try {
75
+ unsubscribe = facade.subscribe((event) => {
76
+ if (mode === "json") {
77
+ writeRawStdout(`${JSON.stringify(event)}\n`);
78
+ }
79
+ });
80
+ if (initialMessage) {
81
+ await facade.prompt(initialMessage, toEventImages(initialImages));
82
+ }
83
+ for (const message of messages) {
84
+ await facade.prompt(message);
85
+ }
86
+ if (mode === "text") {
87
+ exitCode = writeFinalAssistantText(facade.getProjection().buildContext().messages);
88
+ }
89
+ return exitCode;
90
+ }
91
+ catch (error) {
92
+ console.error(error instanceof Error ? error.message : String(error));
93
+ return 1;
94
+ }
95
+ finally {
96
+ for (const cleanup of signalCleanupHandlers) {
97
+ cleanup();
98
+ }
99
+ await disposeRuntime();
100
+ await flushRawStdout();
101
+ }
102
+ }
@@ -0,0 +1,16 @@
1
+ import type { Readable } from "node:stream";
2
+ /**
3
+ * Serialize a single strict JSONL record.
4
+ *
5
+ * Framing is LF-only. Payload strings may contain other Unicode separators such as
6
+ * U+2028 and U+2029. Clients must split records on `\n` only.
7
+ */
8
+ export declare function serializeJsonLine(value: unknown): string;
9
+ /**
10
+ * Attach an LF-only JSONL reader to a stream.
11
+ *
12
+ * This intentionally does not use Node readline. Readline splits on additional
13
+ * Unicode separators that are valid inside JSON strings and therefore does not
14
+ * implement strict JSONL framing.
15
+ */
16
+ export declare function attachJsonlLineReader(stream: Readable, onLine: (line: string) => void): () => void;
@@ -0,0 +1,48 @@
1
+ import { StringDecoder } from "node:string_decoder";
2
+ /**
3
+ * Serialize a single strict JSONL record.
4
+ *
5
+ * Framing is LF-only. Payload strings may contain other Unicode separators such as
6
+ * U+2028 and U+2029. Clients must split records on `\n` only.
7
+ */
8
+ export function serializeJsonLine(value) {
9
+ return `${JSON.stringify(value)}\n`;
10
+ }
11
+ /**
12
+ * Attach an LF-only JSONL reader to a stream.
13
+ *
14
+ * This intentionally does not use Node readline. Readline splits on additional
15
+ * Unicode separators that are valid inside JSON strings and therefore does not
16
+ * implement strict JSONL framing.
17
+ */
18
+ export function attachJsonlLineReader(stream, onLine) {
19
+ const decoder = new StringDecoder("utf8");
20
+ let buffer = "";
21
+ const emitLine = (line) => {
22
+ onLine(line.endsWith("\r") ? line.slice(0, -1) : line);
23
+ };
24
+ const onData = (chunk) => {
25
+ buffer += typeof chunk === "string" ? chunk : decoder.write(chunk);
26
+ while (true) {
27
+ const newlineIndex = buffer.indexOf("\n");
28
+ if (newlineIndex === -1) {
29
+ return;
30
+ }
31
+ emitLine(buffer.slice(0, newlineIndex));
32
+ buffer = buffer.slice(newlineIndex + 1);
33
+ }
34
+ };
35
+ const onEnd = () => {
36
+ buffer += decoder.end();
37
+ if (buffer.length > 0) {
38
+ emitLine(buffer);
39
+ buffer = "";
40
+ }
41
+ };
42
+ stream.on("data", onData);
43
+ stream.on("end", onEnd);
44
+ return () => {
45
+ stream.off("data", onData);
46
+ stream.off("end", onEnd);
47
+ };
48
+ }
@@ -0,0 +1,219 @@
1
+ /**
2
+ * RPC Client for programmatic access to the coding agent.
3
+ *
4
+ * Spawns the agent in RPC mode and provides a typed API for all operations.
5
+ */
6
+ import type { AgentMessage, ThinkingLevel } from "../../core/agent/types.js";
7
+ import type { ImageContent } from "@earendil-works/pi-ai/compat";
8
+ import type { SessionStats } from "../../core/session-stats.js";
9
+ import type { BashResult } from "../../core/bash-executor.js";
10
+ import type { CompactionResult } from "../../core/compaction/index.js";
11
+ import type { EventBase } from "../../core/event-store/types.js";
12
+ import type { RpcSessionState, RpcSlashCommand } from "./rpc-types.js";
13
+ export interface RpcClientOptions {
14
+ /** Path to the CLI entry point (default: searches for dist/cli.js) */
15
+ cliPath?: string;
16
+ /** Working directory for the agent */
17
+ cwd?: string;
18
+ /** Environment variables */
19
+ env?: Record<string, string>;
20
+ /** Provider to use */
21
+ provider?: string;
22
+ /** Model ID to use */
23
+ model?: string;
24
+ /** Additional CLI arguments */
25
+ args?: string[];
26
+ }
27
+ export interface ModelInfo {
28
+ provider: string;
29
+ id: string;
30
+ contextWindow: number;
31
+ reasoning: boolean;
32
+ }
33
+ export type RpcEventListener = (event: EventBase) => void;
34
+ export declare class RpcClient {
35
+ private options;
36
+ private process;
37
+ private stopReadingStdout;
38
+ private eventListeners;
39
+ private pendingRequests;
40
+ private requestId;
41
+ private stderr;
42
+ constructor(options?: RpcClientOptions);
43
+ /**
44
+ * Start the RPC agent process.
45
+ */
46
+ start(): Promise<void>;
47
+ /**
48
+ * Stop the RPC agent process.
49
+ */
50
+ stop(): Promise<void>;
51
+ /**
52
+ * Subscribe to agent events.
53
+ */
54
+ onEvent(listener: RpcEventListener): () => void;
55
+ /**
56
+ * Get collected stderr output (useful for debugging).
57
+ */
58
+ getStderr(): string;
59
+ /**
60
+ * Send a prompt to the agent.
61
+ * Returns immediately after sending; use onEvent() to receive streaming events.
62
+ * Use waitForIdle() to wait for completion.
63
+ */
64
+ prompt(message: string, images?: ImageContent[]): Promise<void>;
65
+ /**
66
+ * Queue a steering message to interrupt the agent mid-run.
67
+ */
68
+ steer(message: string, images?: ImageContent[]): Promise<void>;
69
+ /**
70
+ * Queue a follow-up message to be processed after the agent finishes.
71
+ */
72
+ followUp(message: string, images?: ImageContent[]): Promise<void>;
73
+ /**
74
+ * Abort current operation.
75
+ */
76
+ abort(): Promise<void>;
77
+ /**
78
+ * Rewind to a branch point, or no-op to continue the eternal conversation.
79
+ * @param targetEventId - Optional event id to fork from
80
+ */
81
+ rewind(targetEventId?: string): Promise<{
82
+ cancelled: boolean;
83
+ }>;
84
+ /**
85
+ * Get current session state.
86
+ */
87
+ getState(): Promise<RpcSessionState>;
88
+ /**
89
+ * Set model by provider and ID.
90
+ */
91
+ setModel(provider: string, modelId: string): Promise<{
92
+ provider: string;
93
+ id: string;
94
+ }>;
95
+ /**
96
+ * Cycle to next model.
97
+ */
98
+ cycleModel(): Promise<{
99
+ model: {
100
+ provider: string;
101
+ id: string;
102
+ };
103
+ thinkingLevel: ThinkingLevel;
104
+ isScoped: boolean;
105
+ } | null>;
106
+ /**
107
+ * Get list of available models.
108
+ */
109
+ getAvailableModels(): Promise<ModelInfo[]>;
110
+ /**
111
+ * Set thinking level.
112
+ */
113
+ setThinkingLevel(level: ThinkingLevel): Promise<void>;
114
+ /**
115
+ * Cycle thinking level.
116
+ */
117
+ cycleThinkingLevel(): Promise<{
118
+ level: ThinkingLevel;
119
+ } | null>;
120
+ /**
121
+ * Set steering mode.
122
+ */
123
+ setSteeringMode(mode: "all" | "one-at-a-time"): Promise<void>;
124
+ /**
125
+ * Set follow-up mode.
126
+ */
127
+ setFollowUpMode(mode: "all" | "one-at-a-time"): Promise<void>;
128
+ /**
129
+ * Compact session context.
130
+ */
131
+ compact(customInstructions?: string): Promise<CompactionResult>;
132
+ /**
133
+ * Set auto-compaction enabled/disabled.
134
+ */
135
+ setAutoCompaction(enabled: boolean): Promise<void>;
136
+ /**
137
+ * Set auto-retry enabled/disabled.
138
+ */
139
+ setAutoRetry(enabled: boolean): Promise<void>;
140
+ /**
141
+ * Abort in-progress retry.
142
+ */
143
+ abortRetry(): Promise<void>;
144
+ /**
145
+ * Execute a bash command.
146
+ */
147
+ bash(command: string): Promise<BashResult>;
148
+ /**
149
+ * Abort running bash command.
150
+ */
151
+ abortBash(): Promise<void>;
152
+ /**
153
+ * Get session statistics.
154
+ */
155
+ getSessionStats(): Promise<SessionStats>;
156
+ /**
157
+ * Export session to HTML.
158
+ */
159
+ exportHtml(outputPath?: string): Promise<{
160
+ path: string;
161
+ }>;
162
+ /**
163
+ * Switch to a different session file.
164
+ * @returns Object with `cancelled: true` if an extension cancelled the switch
165
+ */
166
+ switchSession(sessionPath: string): Promise<{
167
+ cancelled: boolean;
168
+ }>;
169
+ /**
170
+ * Fork from a specific message.
171
+ * @returns Object with `text` (the message text) and `cancelled` (if extension cancelled)
172
+ */
173
+ fork(entryId: string): Promise<{
174
+ text: string;
175
+ cancelled: boolean;
176
+ }>;
177
+ /**
178
+ * Clone the current active branch into a new session.
179
+ * @returns Object with `cancelled: true` if an extension cancelled the clone
180
+ */
181
+ clone(): Promise<{
182
+ cancelled: boolean;
183
+ }>;
184
+ /**
185
+ * Get messages available for forking.
186
+ */
187
+ getForkMessages(): Promise<Array<{
188
+ entryId: string;
189
+ text: string;
190
+ }>>;
191
+ /**
192
+ * Get text of last assistant message.
193
+ */
194
+ getLastAssistantText(): Promise<string | null>;
195
+ /**
196
+ * Get all messages in the session.
197
+ */
198
+ getMessages(): Promise<AgentMessage[]>;
199
+ /**
200
+ * Get available commands (extension commands, prompt templates, skills).
201
+ */
202
+ getCommands(): Promise<RpcSlashCommand[]>;
203
+ /**
204
+ * Wait for agent to become idle (no streaming).
205
+ * Resolves when AGENT_TURN_COMPLETED is received.
206
+ */
207
+ waitForIdle(timeout?: number): Promise<void>;
208
+ /**
209
+ * Collect events until agent becomes idle.
210
+ */
211
+ collectEvents(timeout?: number): Promise<EventBase[]>;
212
+ /**
213
+ * Send prompt and wait for completion, returning all events.
214
+ */
215
+ promptAndWait(message: string, images?: ImageContent[], timeout?: number): Promise<EventBase[]>;
216
+ private handleLine;
217
+ private send;
218
+ private getData;
219
+ }