@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.
- package/README.md +20 -143
- package/README.zh-CN.md +36 -0
- package/dist/bun/cli.d.ts +2 -0
- package/dist/bun/cli.js +6 -0
- package/dist/bun/register-bedrock.d.ts +1 -0
- package/dist/bun/register-bedrock.js +3 -0
- package/dist/cli/args.d.ts +48 -0
- package/dist/cli/args.js +330 -0
- package/dist/cli/config-selector.d.ts +13 -0
- package/dist/cli/config-selector.js +30 -0
- package/dist/cli/file-processor.d.ts +14 -0
- package/dist/cli/file-processor.js +82 -0
- package/dist/cli/initial-message.d.ts +17 -0
- package/dist/cli/initial-message.js +21 -0
- package/dist/cli/list-models.d.ts +8 -0
- package/dist/cli/list-models.js +96 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +68 -0
- package/dist/config.d.ts +79 -0
- package/dist/config.js +223 -0
- package/dist/core/agent/index.d.ts +6 -0
- package/dist/core/agent/index.js +6 -0
- package/dist/core/agent/types.d.ts +202 -0
- package/dist/core/agent/types.js +51 -0
- package/dist/core/auth-storage.d.ts +135 -0
- package/dist/core/auth-storage.js +417 -0
- package/dist/core/bash-executor.d.ts +31 -0
- package/dist/core/bash-executor.js +107 -0
- package/dist/core/compaction/branch-summarization.d.ts +87 -0
- package/dist/core/compaction/branch-summarization.js +242 -0
- package/dist/core/compaction/compaction-engine.d.ts +40 -0
- package/dist/core/compaction/compaction-engine.js +292 -0
- package/dist/core/compaction/compaction.d.ts +106 -0
- package/dist/core/compaction/compaction.js +295 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/utils.d.ts +37 -0
- package/dist/core/compaction/utils.js +152 -0
- package/dist/core/defaults.d.ts +2 -0
- package/dist/core/defaults.js +1 -0
- package/dist/core/diagnostics.d.ts +14 -0
- package/dist/core/diagnostics.js +1 -0
- package/dist/core/event-bus.d.ts +8 -0
- package/dist/core/event-bus.js +24 -0
- package/dist/core/event-store/events.d.ts +465 -0
- package/dist/core/event-store/events.js +6 -0
- package/dist/core/event-store/index.d.ts +10 -0
- package/dist/core/event-store/index.js +10 -0
- package/dist/core/event-store/sqlite-store.d.ts +27 -0
- package/dist/core/event-store/sqlite-store.js +275 -0
- package/dist/core/event-store/store.d.ts +91 -0
- package/dist/core/event-store/store.js +7 -0
- package/dist/core/event-store/thread-scoped-store.d.ts +29 -0
- package/dist/core/event-store/thread-scoped-store.js +50 -0
- package/dist/core/event-store/types.d.ts +70 -0
- package/dist/core/event-store/types.js +7 -0
- package/dist/core/event-store/workspace.d.ts +37 -0
- package/dist/core/event-store/workspace.js +71 -0
- package/dist/core/exec.d.ts +28 -0
- package/dist/core/exec.js +74 -0
- package/dist/core/export-html/ansi-to-html.d.ts +21 -0
- package/dist/core/export-html/ansi-to-html.js +248 -0
- package/dist/core/export-html/index.d.ts +29 -0
- package/dist/core/export-html/index.js +186 -0
- package/dist/core/export-html/template.css +1017 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1742 -0
- package/dist/core/export-html/tool-renderer.d.ts +39 -0
- package/dist/core/export-html/tool-renderer.js +94 -0
- package/dist/core/export-html/vendor/highlight.min.js +1213 -0
- package/dist/core/export-html/vendor/marked.min.js +6 -0
- package/dist/core/extensions/index.d.ts +12 -0
- package/dist/core/extensions/index.js +9 -0
- package/dist/core/extensions/loader.d.ts +24 -0
- package/dist/core/extensions/loader.js +492 -0
- package/dist/core/extensions/runner.d.ts +167 -0
- package/dist/core/extensions/runner.js +898 -0
- package/dist/core/extensions/session-context.d.ts +67 -0
- package/dist/core/extensions/session-context.js +272 -0
- package/dist/core/extensions/types.d.ts +1147 -0
- package/dist/core/extensions/types.js +44 -0
- package/dist/core/extensions/wrapper.d.ts +19 -0
- package/dist/core/extensions/wrapper.js +21 -0
- package/dist/core/footer-data-provider.d.ts +47 -0
- package/dist/core/footer-data-provider.js +321 -0
- package/dist/core/goal/index.d.ts +3 -0
- package/dist/core/goal/index.js +1 -0
- package/dist/core/goal/scheduler.d.ts +83 -0
- package/dist/core/goal/scheduler.js +154 -0
- package/dist/core/goal/types.d.ts +182 -0
- package/dist/core/goal/types.js +11 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.js +8 -0
- package/dist/core/intent/classifier.d.ts +53 -0
- package/dist/core/intent/classifier.js +353 -0
- package/dist/core/intent/index.d.ts +8 -0
- package/dist/core/intent/index.js +8 -0
- package/dist/core/intent/tool-adapter.d.ts +31 -0
- package/dist/core/intent/tool-adapter.js +168 -0
- package/dist/core/intent/types.d.ts +71 -0
- package/dist/core/intent/types.js +6 -0
- package/dist/core/keybindings.d.ts +297 -0
- package/dist/core/keybindings.js +250 -0
- package/dist/core/messages.d.ts +30 -0
- package/dist/core/messages.js +134 -0
- package/dist/core/model-registry.d.ts +131 -0
- package/dist/core/model-registry.js +634 -0
- package/dist/core/model-resolver.d.ts +109 -0
- package/dist/core/model-resolver.js +486 -0
- package/dist/core/output-guard.d.ts +5 -0
- package/dist/core/output-guard.js +58 -0
- package/dist/core/package-manager.d.ts +196 -0
- package/dist/core/package-manager.js +1873 -0
- package/dist/core/projection/boundary-inferrer.d.ts +58 -0
- package/dist/core/projection/boundary-inferrer.js +122 -0
- package/dist/core/projection/event-to-message.d.ts +35 -0
- package/dist/core/projection/event-to-message.js +253 -0
- package/dist/core/projection/goal-projection.d.ts +67 -0
- package/dist/core/projection/goal-projection.js +339 -0
- package/dist/core/projection/index.d.ts +13 -0
- package/dist/core/projection/index.js +13 -0
- package/dist/core/projection/session-manager.d.ts +100 -0
- package/dist/core/projection/session-manager.js +331 -0
- package/dist/core/projection/session-projection.d.ts +58 -0
- package/dist/core/projection/session-projection.js +257 -0
- package/dist/core/projection/task-history.d.ts +13 -0
- package/dist/core/projection/task-history.js +61 -0
- package/dist/core/projection/timeline-projection.d.ts +82 -0
- package/dist/core/projection/timeline-projection.js +276 -0
- package/dist/core/projection/types.d.ts +69 -0
- package/dist/core/projection/types.js +6 -0
- package/dist/core/prompt-templates.d.ts +51 -0
- package/dist/core/prompt-templates.js +249 -0
- package/dist/core/resolve-config-value.d.ts +22 -0
- package/dist/core/resolve-config-value.js +125 -0
- package/dist/core/resource-loader.d.ts +193 -0
- package/dist/core/resource-loader.js +685 -0
- package/dist/core/runtime/ai-client.d.ts +12 -0
- package/dist/core/runtime/ai-client.js +153 -0
- package/dist/core/runtime/checkpoint.d.ts +12 -0
- package/dist/core/runtime/checkpoint.js +78 -0
- package/dist/core/runtime/index.d.ts +12 -0
- package/dist/core/runtime/index.js +12 -0
- package/dist/core/runtime/llm-types.d.ts +99 -0
- package/dist/core/runtime/llm-types.js +6 -0
- package/dist/core/runtime/local-runtime.d.ts +23 -0
- package/dist/core/runtime/local-runtime.js +59 -0
- package/dist/core/runtime/policies.d.ts +72 -0
- package/dist/core/runtime/policies.js +37 -0
- package/dist/core/runtime/reactor.d.ts +213 -0
- package/dist/core/runtime/reactor.js +992 -0
- package/dist/core/runtime/runtime.d.ts +191 -0
- package/dist/core/runtime/runtime.js +449 -0
- package/dist/core/runtime/types.d.ts +42 -0
- package/dist/core/runtime/types.js +1 -0
- package/dist/core/sdk.d.ts +12 -0
- package/dist/core/sdk.js +10 -0
- package/dist/core/session-context-builder.d.ts +9 -0
- package/dist/core/session-context-builder.js +87 -0
- package/dist/core/session-cwd.d.ts +18 -0
- package/dist/core/session-cwd.js +36 -0
- package/dist/core/session-facade-factory.d.ts +79 -0
- package/dist/core/session-facade-factory.js +460 -0
- package/dist/core/session-facade.d.ts +57 -0
- package/dist/core/session-facade.js +91 -0
- package/dist/core/session-listing.d.ts +30 -0
- package/dist/core/session-listing.js +168 -0
- package/dist/core/session-reader.d.ts +19 -0
- package/dist/core/session-reader.js +101 -0
- package/dist/core/session-ref.d.ts +7 -0
- package/dist/core/session-ref.js +25 -0
- package/dist/core/session-services.d.ts +51 -0
- package/dist/core/session-services.js +90 -0
- package/dist/core/session-stats.d.ts +43 -0
- package/dist/core/session-stats.js +41 -0
- package/dist/core/settings-manager.d.ts +236 -0
- package/dist/core/settings-manager.js +706 -0
- package/dist/core/skill-block-parser.d.ts +12 -0
- package/dist/core/skill-block-parser.js +15 -0
- package/dist/core/skills.d.ts +59 -0
- package/dist/core/skills.js +408 -0
- package/dist/core/slash-commands.d.ts +13 -0
- package/dist/core/slash-commands.js +17 -0
- package/dist/core/source-info.d.ts +17 -0
- package/dist/core/source-info.js +18 -0
- package/dist/core/system-prompt.d.ts +27 -0
- package/dist/core/system-prompt.js +179 -0
- package/dist/core/timings.d.ts +7 -0
- package/dist/core/timings.js +30 -0
- package/dist/core/tools/bash.d.ts +95 -0
- package/dist/core/tools/bash.js +513 -0
- package/dist/core/tools/builtin-commands.d.ts +75 -0
- package/dist/core/tools/builtin-commands.js +503 -0
- package/dist/core/tools/compat-commands.d.ts +12 -0
- package/dist/core/tools/compat-commands.js +1280 -0
- package/dist/core/tools/edit-diff.d.ts +59 -0
- package/dist/core/tools/edit-diff.js +263 -0
- package/dist/core/tools/edit.d.ts +49 -0
- package/dist/core/tools/edit.js +340 -0
- package/dist/core/tools/file-mutation-queue.d.ts +5 -0
- package/dist/core/tools/file-mutation-queue.js +36 -0
- package/dist/core/tools/find.d.ts +34 -0
- package/dist/core/tools/find.js +459 -0
- package/dist/core/tools/grep.d.ts +36 -0
- package/dist/core/tools/grep.js +422 -0
- package/dist/core/tools/index.d.ts +70 -0
- package/dist/core/tools/index.js +129 -0
- package/dist/core/tools/line-anchors.d.ts +33 -0
- package/dist/core/tools/line-anchors.js +151 -0
- package/dist/core/tools/ls.d.ts +36 -0
- package/dist/core/tools/ls.js +268 -0
- package/dist/core/tools/path-utils.d.ts +7 -0
- package/dist/core/tools/path-utils.js +80 -0
- package/dist/core/tools/read.d.ts +35 -0
- package/dist/core/tools/read.js +244 -0
- package/dist/core/tools/render-utils.d.ts +20 -0
- package/dist/core/tools/render-utils.js +48 -0
- package/dist/core/tools/session-split.d.ts +9 -0
- package/dist/core/tools/session-split.js +77 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +13 -0
- package/dist/core/tools/tool-definition-wrapper.js +32 -0
- package/dist/core/tools/truncate.d.ts +69 -0
- package/dist/core/tools/truncate.js +204 -0
- package/dist/core/tools/write.d.ts +25 -0
- package/dist/core/tools/write.js +211 -0
- package/dist/core/types/session-types.d.ts +123 -0
- package/dist/core/types/session-types.js +8 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +38 -0
- package/dist/main.d.ts +11 -2
- package/dist/main.js +577 -149
- package/dist/modes/event-mapper.d.ts +115 -0
- package/dist/modes/event-mapper.js +200 -0
- package/dist/modes/gui/server.d.ts +14 -0
- package/dist/modes/gui/server.js +1032 -0
- package/dist/modes/index.d.ts +10 -0
- package/dist/modes/index.js +9 -0
- package/dist/modes/interactive/assets/clankolas.png +0 -0
- package/dist/modes/interactive/components/armin.d.ts +33 -0
- package/dist/modes/interactive/components/armin.js +328 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +19 -0
- package/dist/modes/interactive/components/assistant-message.js +115 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +33 -0
- package/dist/modes/interactive/components/bash-execution.js +169 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +15 -0
- package/dist/modes/interactive/components/bordered-loader.js +50 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +15 -0
- package/dist/modes/interactive/components/branch-summary-message.js +41 -0
- package/dist/modes/interactive/components/brand-header.d.ts +33 -0
- package/dist/modes/interactive/components/brand-header.js +235 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +15 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +42 -0
- package/dist/modes/interactive/components/config-selector.d.ts +70 -0
- package/dist/modes/interactive/components/config-selector.js +469 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +13 -0
- package/dist/modes/interactive/components/countdown-timer.js +27 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +27 -0
- package/dist/modes/interactive/components/custom-editor.js +94 -0
- package/dist/modes/interactive/components/custom-message.d.ts +19 -0
- package/dist/modes/interactive/components/custom-message.js +73 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +22 -0
- package/dist/modes/interactive/components/daxnuts.js +137 -0
- package/dist/modes/interactive/components/diff.d.ts +11 -0
- package/dist/modes/interactive/components/diff.js +132 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +14 -0
- package/dist/modes/interactive/components/dynamic-border.js +19 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts +4 -0
- package/dist/modes/interactive/components/earendil-announcement.js +39 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +19 -0
- package/dist/modes/interactive/components/extension-editor.js +105 -0
- package/dist/modes/interactive/components/extension-input.d.ts +22 -0
- package/dist/modes/interactive/components/extension-input.js +54 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +23 -0
- package/dist/modes/interactive/components/extension-selector.js +70 -0
- package/dist/modes/interactive/components/footer.d.ts +55 -0
- package/dist/modes/interactive/components/footer.js +207 -0
- package/dist/modes/interactive/components/index.d.ts +31 -0
- package/dist/modes/interactive/components/index.js +32 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +7 -0
- package/dist/modes/interactive/components/keybinding-hints.js +21 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +41 -0
- package/dist/modes/interactive/components/login-dialog.js +138 -0
- package/dist/modes/interactive/components/model-selector.d.ts +32 -0
- package/dist/modes/interactive/components/model-selector.js +209 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +18 -0
- package/dist/modes/interactive/components/oauth-selector.js +91 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +57 -0
- package/dist/modes/interactive/components/settings-selector.js +299 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +9 -0
- package/dist/modes/interactive/components/show-images-selector.js +37 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +16 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +44 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +10 -0
- package/dist/modes/interactive/components/theme-selector.js +47 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +10 -0
- package/dist/modes/interactive/components/thinking-selector.js +50 -0
- package/dist/modes/interactive/components/timeline-view.d.ts +31 -0
- package/dist/modes/interactive/components/timeline-view.js +81 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +64 -0
- package/dist/modes/interactive/components/tool-execution.js +305 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +88 -0
- package/dist/modes/interactive/components/tree-selector.js +1072 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +29 -0
- package/dist/modes/interactive/components/user-message-selector.js +110 -0
- package/dist/modes/interactive/components/user-message.d.ts +9 -0
- package/dist/modes/interactive/components/user-message.js +27 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +23 -0
- package/dist/modes/interactive/components/visual-truncate.js +32 -0
- package/dist/modes/interactive/interactive-mode.d.ts +394 -0
- package/dist/modes/interactive/interactive-mode.js +4116 -0
- package/dist/modes/interactive/theme/dark.json +85 -0
- package/dist/modes/interactive/theme/light.json +84 -0
- package/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/dist/modes/interactive/theme/theme.d.ts +80 -0
- package/dist/modes/interactive/theme/theme.js +973 -0
- package/dist/modes/print-mode.d.ts +27 -0
- package/dist/modes/print-mode.js +102 -0
- package/dist/modes/rpc/jsonl.d.ts +16 -0
- package/dist/modes/rpc/jsonl.js +48 -0
- package/dist/modes/rpc/rpc-client.d.ts +219 -0
- package/dist/modes/rpc/rpc-client.js +405 -0
- package/dist/modes/rpc/rpc-mode.d.ts +19 -0
- package/dist/modes/rpc/rpc-mode.js +381 -0
- package/dist/modes/rpc/rpc-types.d.ts +406 -0
- package/dist/modes/rpc/rpc-types.js +7 -0
- package/dist/package-manager-cli.d.ts +3 -0
- package/dist/package-manager-cli.js +233 -0
- package/dist/utils/changelog.d.ts +20 -0
- package/dist/utils/changelog.js +86 -0
- package/dist/utils/child-process.d.ts +10 -0
- package/dist/utils/child-process.js +77 -0
- package/dist/utils/clipboard-image.d.ts +10 -0
- package/dist/utils/clipboard-image.js +244 -0
- package/dist/utils/clipboard-native.d.ts +7 -0
- package/dist/utils/clipboard-native.js +13 -0
- package/dist/utils/clipboard.d.ts +1 -0
- package/dist/utils/clipboard.js +77 -0
- package/dist/utils/exif-orientation.d.ts +4 -0
- package/dist/utils/exif-orientation.js +157 -0
- package/dist/utils/frontmatter.d.ts +7 -0
- package/dist/utils/frontmatter.js +25 -0
- package/dist/utils/git.d.ts +25 -0
- package/dist/utils/git.js +162 -0
- package/dist/utils/image-convert.d.ts +8 -0
- package/dist/utils/image-convert.js +38 -0
- package/dist/utils/image-resize.d.ts +35 -0
- package/dist/utils/image-resize.js +136 -0
- package/dist/utils/mime.d.ts +1 -0
- package/dist/utils/mime.js +25 -0
- package/dist/utils/path-shims.d.ts +1 -0
- package/dist/utils/path-shims.js +90 -0
- package/dist/utils/paths.d.ts +6 -0
- package/dist/utils/paths.js +18 -0
- package/dist/utils/photon.d.ts +20 -0
- package/dist/utils/photon.js +120 -0
- package/dist/utils/shell.d.ts +29 -0
- package/dist/utils/shell.js +189 -0
- package/dist/utils/sleep.d.ts +4 -0
- package/dist/utils/sleep.js +16 -0
- package/dist/utils/tools-manager.d.ts +3 -0
- package/dist/utils/tools-manager.js +101 -0
- package/dist/vendor/bin/darwin-arm64/fd +0 -0
- package/dist/vendor/bin/darwin-arm64/rg +0 -0
- package/dist/vendor/bin/darwin-x64/fd +0 -0
- package/dist/vendor/bin/darwin-x64/rg +0 -0
- package/dist/vendor/bin/linux-arm64/fd +0 -0
- package/dist/vendor/bin/linux-arm64/rg +0 -0
- package/dist/vendor/bin/linux-x64/fd +0 -0
- package/dist/vendor/bin/linux-x64/rg +0 -0
- package/dist/vendor/bin/win32-arm64/fd.exe +0 -0
- package/dist/vendor/bin/win32-arm64/rg.exe +0 -0
- package/dist/vendor/bin/win32-x64/fd.exe +0 -0
- package/dist/vendor/bin/win32-x64/rg.exe +0 -0
- package/package.json +90 -26
- package/dist/extension/core.d.ts +0 -69
- package/dist/extension/core.js +0 -270
- package/dist/extension/core.js.map +0 -1
- package/dist/extension/index.d.ts +0 -14
- package/dist/extension/index.js +0 -374
- package/dist/extension/index.js.map +0 -1
- package/dist/main.js.map +0 -1
- package/themes/pizza.json +0 -87
package/package.json
CHANGED
|
@@ -1,41 +1,105 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tomsun28/pizza",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Pizza -
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Pizza - Pizza is an event-driven agent. Every conversation, tool call, and file edit is an event in an immutable log. Your UI, the LLM context, and the session tree are all projections of that log.",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"pizzaConfig": {
|
|
7
|
+
"name": "pizza",
|
|
8
|
+
"configDir": ".pizza"
|
|
9
|
+
},
|
|
6
10
|
"bin": {
|
|
7
|
-
"pizza": "dist/
|
|
11
|
+
"pizza": "dist/cli.js"
|
|
12
|
+
},
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./hooks": {
|
|
21
|
+
"types": "./dist/core/hooks/index.d.ts",
|
|
22
|
+
"import": "./dist/core/hooks/index.js"
|
|
23
|
+
}
|
|
8
24
|
},
|
|
9
|
-
"
|
|
25
|
+
"files": [
|
|
26
|
+
"dist"
|
|
27
|
+
],
|
|
10
28
|
"scripts": {
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"start": "node dist/
|
|
29
|
+
"clean": "shx rm -rf dist",
|
|
30
|
+
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput",
|
|
31
|
+
"start": "node dist/cli.js",
|
|
32
|
+
"build": "tsc -p tsconfig.build.json && shx chmod +x dist/cli.js && npm run copy-assets",
|
|
33
|
+
"build:release": "npm run build && npm run vendor-tools",
|
|
34
|
+
"build:binary": "npm run build && npm run vendor-tools && bun build --compile ./dist/bun/cli.js --outfile dist/pizza && npm run copy-binary-assets",
|
|
35
|
+
"copy-assets": "shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/",
|
|
36
|
+
"copy-binary-assets": "shx cp package.json dist/ && shx cp README.md dist/ && if [ -f CHANGELOG.md ]; then shx cp CHANGELOG.md dist/; fi && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/",
|
|
37
|
+
"vendor-tools": "node scripts/download-vendor-tools.mjs",
|
|
38
|
+
"test": "PIZZA_OFFLINE=1 vitest --run --no-file-parallelism --poolOptions.forks.singleFork",
|
|
39
|
+
"test:headless": "PIZZA_OFFLINE=1 vitest --run --no-file-parallelism --poolOptions.forks.singleFork",
|
|
40
|
+
"test:online": "vitest --run",
|
|
41
|
+
"install:local": "npm run build && npm link",
|
|
42
|
+
"prepublishOnly": "npm run clean && npm run build && npm run vendor-tools"
|
|
14
43
|
},
|
|
15
44
|
"dependencies": {
|
|
16
|
-
"@mariozechner/
|
|
17
|
-
"@
|
|
18
|
-
"@
|
|
45
|
+
"@mariozechner/jiti": "^2.6.2",
|
|
46
|
+
"@earendil-works/pi-ai": "^0.80.6",
|
|
47
|
+
"@earendil-works/pi-tui": "^0.80.6",
|
|
48
|
+
"@silvia-odwyer/photon-node": "^0.3.4",
|
|
49
|
+
"@sinclair/typebox": "^0.34.41",
|
|
50
|
+
"ajv": "^8.17.1",
|
|
51
|
+
"chalk": "^5.5.0",
|
|
52
|
+
"cli-highlight": "^2.1.11",
|
|
53
|
+
"diff": "^8.0.2",
|
|
54
|
+
"extract-zip": "^2.0.1",
|
|
55
|
+
"file-type": "^21.1.1",
|
|
56
|
+
"glob": "^13.0.1",
|
|
57
|
+
"hosted-git-info": "^9.0.2",
|
|
58
|
+
"ignore": "^7.0.5",
|
|
59
|
+
"marked": "^15.0.12",
|
|
60
|
+
"minimatch": "^10.2.3",
|
|
61
|
+
"proper-lockfile": "^4.1.2",
|
|
62
|
+
"strip-ansi": "^7.1.0",
|
|
63
|
+
"undici": "^7.19.1",
|
|
64
|
+
"uuid": "^11.1.0",
|
|
65
|
+
"yaml": "^2.8.2"
|
|
19
66
|
},
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
|
|
67
|
+
"overrides": {
|
|
68
|
+
"rimraf": "6.1.2",
|
|
69
|
+
"gaxios": {
|
|
70
|
+
"rimraf": "6.1.2"
|
|
71
|
+
}
|
|
24
72
|
},
|
|
25
|
-
"
|
|
26
|
-
"
|
|
73
|
+
"optionalDependencies": {
|
|
74
|
+
"@mariozechner/clipboard": "^0.3.2"
|
|
27
75
|
},
|
|
28
|
-
"
|
|
29
|
-
"
|
|
76
|
+
"devDependencies": {
|
|
77
|
+
"@types/diff": "^7.0.2",
|
|
78
|
+
"@types/hosted-git-info": "^3.0.5",
|
|
79
|
+
"@types/ms": "^2.1.0",
|
|
80
|
+
"@types/node": "^24.3.0",
|
|
81
|
+
"@types/proper-lockfile": "^4.1.4",
|
|
82
|
+
"@typescript/native-preview": "^7.0.0-dev.20260120.1",
|
|
83
|
+
"shx": "^0.4.0",
|
|
84
|
+
"tsx": "^4.21.0",
|
|
85
|
+
"typescript": "^5.7.3",
|
|
86
|
+
"vitest": "^3.2.4"
|
|
30
87
|
},
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
88
|
+
"keywords": [
|
|
89
|
+
"coding-agent",
|
|
90
|
+
"ai",
|
|
91
|
+
"llm",
|
|
92
|
+
"cli",
|
|
93
|
+
"tui",
|
|
94
|
+
"agent"
|
|
36
95
|
],
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
96
|
+
"author": "Z.ai",
|
|
97
|
+
"license": "MIT",
|
|
98
|
+
"repository": {
|
|
99
|
+
"type": "git",
|
|
100
|
+
"url": "https://github.com/tomsun28/pizza.git"
|
|
101
|
+
},
|
|
102
|
+
"engines": {
|
|
103
|
+
"node": ">=22.5.0"
|
|
40
104
|
}
|
|
41
105
|
}
|
package/dist/extension/core.d.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core logic for pizza-mode.
|
|
3
|
-
*
|
|
4
|
-
* Protocol:
|
|
5
|
-
* [CLI id=N] <shell command>[/CLI]
|
|
6
|
-
* — execute an arbitrary shell command; the full unix toolbelt is available
|
|
7
|
-
* (ls, cat, rg, fd, find, grep, sed, awk, jq, git, gh, curl, node, python, …).
|
|
8
|
-
*
|
|
9
|
-
* [WRITE id=N path=<path>]
|
|
10
|
-
* <full file contents>
|
|
11
|
-
* [/WRITE]
|
|
12
|
-
* — overwrite a file with the exact body between the tags.
|
|
13
|
-
*
|
|
14
|
-
* [EDIT id=N path=<path>]
|
|
15
|
-
* <<<<<<< SEARCH
|
|
16
|
-
* <exact existing text>
|
|
17
|
-
* =======
|
|
18
|
-
* <replacement text>
|
|
19
|
-
* >>>>>>> REPLACE
|
|
20
|
-
* [/EDIT]
|
|
21
|
-
* — targeted replacement; SEARCH text must match exactly and appear exactly once.
|
|
22
|
-
*
|
|
23
|
-
* Results are always returned as [RESULT id=N kind=<bash|write|edit> …]…[/RESULT].
|
|
24
|
-
*/
|
|
25
|
-
export declare const MAX_CALLS_PER_TURN = 10;
|
|
26
|
-
export declare const MAX_OUTPUT_BYTES: number;
|
|
27
|
-
export declare const MAX_OUTPUT_LINES = 1000;
|
|
28
|
-
export type BlockKind = "bash" | "write" | "edit";
|
|
29
|
-
export interface ParsedBashCall {
|
|
30
|
-
kind: "bash";
|
|
31
|
-
id: number;
|
|
32
|
-
command: string;
|
|
33
|
-
}
|
|
34
|
-
export interface ParsedWriteBlock {
|
|
35
|
-
kind: "write";
|
|
36
|
-
id: number;
|
|
37
|
-
path: string;
|
|
38
|
-
content: string;
|
|
39
|
-
}
|
|
40
|
-
export interface ParsedEditBlock {
|
|
41
|
-
kind: "edit";
|
|
42
|
-
id: number;
|
|
43
|
-
path: string;
|
|
44
|
-
search: string;
|
|
45
|
-
replace: string;
|
|
46
|
-
}
|
|
47
|
-
export type ParsedBlock = ParsedBashCall | ParsedWriteBlock | ParsedEditBlock;
|
|
48
|
-
export interface CLIToolResult {
|
|
49
|
-
output: string;
|
|
50
|
-
isError: boolean;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Parse all [CLI], [WRITE], [EDIT] blocks from assistant text, preserving order.
|
|
54
|
-
* Auto-assigns ids when not explicit. Ids are independent per kind so that
|
|
55
|
-
* result rendering can reference them back without collision.
|
|
56
|
-
*/
|
|
57
|
-
export declare function parseBlocks(text: string): ParsedBlock[];
|
|
58
|
-
export declare function execBash(cwd: string, command: string, signal?: AbortSignal): Promise<CLIToolResult>;
|
|
59
|
-
export declare function execWrite(cwd: string, path: string, content: string): Promise<CLIToolResult>;
|
|
60
|
-
export declare function execEdit(cwd: string, path: string, search: string, replace: string): Promise<CLIToolResult>;
|
|
61
|
-
export declare function dispatchBlock(block: ParsedBlock, cwd: string, signal?: AbortSignal): Promise<CLIToolResult>;
|
|
62
|
-
export declare function buildResultBlock(output: string, isError: boolean, id: number, kind: BlockKind, label?: string): string;
|
|
63
|
-
export declare function labelForBlock(block: ParsedBlock): string;
|
|
64
|
-
/**
|
|
65
|
-
* Reconstruct assistant-visible text for a native tool_use call of one of our
|
|
66
|
-
* built-in operations (used only if an older session recorded them as native
|
|
67
|
-
* tool calls). For bash we render [CLI]; for write/edit we render fenced blocks.
|
|
68
|
-
*/
|
|
69
|
-
export declare function reconstructBlockText(toolName: string, args: Record<string, any>): string | null;
|
package/dist/extension/core.js
DELETED
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core logic for pizza-mode.
|
|
3
|
-
*
|
|
4
|
-
* Protocol:
|
|
5
|
-
* [CLI id=N] <shell command>[/CLI]
|
|
6
|
-
* — execute an arbitrary shell command; the full unix toolbelt is available
|
|
7
|
-
* (ls, cat, rg, fd, find, grep, sed, awk, jq, git, gh, curl, node, python, …).
|
|
8
|
-
*
|
|
9
|
-
* [WRITE id=N path=<path>]
|
|
10
|
-
* <full file contents>
|
|
11
|
-
* [/WRITE]
|
|
12
|
-
* — overwrite a file with the exact body between the tags.
|
|
13
|
-
*
|
|
14
|
-
* [EDIT id=N path=<path>]
|
|
15
|
-
* <<<<<<< SEARCH
|
|
16
|
-
* <exact existing text>
|
|
17
|
-
* =======
|
|
18
|
-
* <replacement text>
|
|
19
|
-
* >>>>>>> REPLACE
|
|
20
|
-
* [/EDIT]
|
|
21
|
-
* — targeted replacement; SEARCH text must match exactly and appear exactly once.
|
|
22
|
-
*
|
|
23
|
-
* Results are always returned as [RESULT id=N kind=<bash|write|edit> …]…[/RESULT].
|
|
24
|
-
*/
|
|
25
|
-
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
26
|
-
import { resolve, isAbsolute, dirname } from "node:path";
|
|
27
|
-
import { spawn } from "node:child_process";
|
|
28
|
-
// ─── Constants ────────────────────────────────────────────────────────────────
|
|
29
|
-
export const MAX_CALLS_PER_TURN = 10;
|
|
30
|
-
export const MAX_OUTPUT_BYTES = 128 * 1024;
|
|
31
|
-
export const MAX_OUTPUT_LINES = 1000;
|
|
32
|
-
// ─── Attribute parsing ────────────────────────────────────────────────────────
|
|
33
|
-
/**
|
|
34
|
-
* Parse `key=value` attribute strings, supporting quoted values.
|
|
35
|
-
* Example input: ` id=1 path="src/foo.ts"` → { id: "1", path: "src/foo.ts" }
|
|
36
|
-
*/
|
|
37
|
-
function parseAttrs(raw) {
|
|
38
|
-
const attrs = {};
|
|
39
|
-
const re = /(\w+)=(?:"((?:[^"\\]|\\.)*)"|'((?:[^'\\]|\\.)*)'|([^\s\]]+))/g;
|
|
40
|
-
let m;
|
|
41
|
-
while ((m = re.exec(raw)) !== null) {
|
|
42
|
-
const key = m[1];
|
|
43
|
-
const value = m[2] ?? m[3] ?? m[4] ?? "";
|
|
44
|
-
attrs[key] = value;
|
|
45
|
-
}
|
|
46
|
-
return attrs;
|
|
47
|
-
}
|
|
48
|
-
// ─── Block parsing ────────────────────────────────────────────────────────────
|
|
49
|
-
/**
|
|
50
|
-
* Parse all [CLI], [WRITE], [EDIT] blocks from assistant text, preserving order.
|
|
51
|
-
* Auto-assigns ids when not explicit. Ids are independent per kind so that
|
|
52
|
-
* result rendering can reference them back without collision.
|
|
53
|
-
*/
|
|
54
|
-
export function parseBlocks(text) {
|
|
55
|
-
const blocks = [];
|
|
56
|
-
const counters = { bash: 1, write: 1, edit: 1 };
|
|
57
|
-
// Use a single scanner that finds whichever tag opens next, then consumes
|
|
58
|
-
// to its matching close tag. This preserves source order across kinds.
|
|
59
|
-
const openRe = /\[(CLI|WRITE|EDIT)((?:\s+[^\]]*)?)\]/g;
|
|
60
|
-
let m;
|
|
61
|
-
while ((m = openRe.exec(text)) !== null) {
|
|
62
|
-
const tag = m[1];
|
|
63
|
-
const attrs = parseAttrs(m[2] ?? "");
|
|
64
|
-
const closeTag = `[/${tag}]`;
|
|
65
|
-
const closeIdx = text.indexOf(closeTag, openRe.lastIndex);
|
|
66
|
-
if (closeIdx === -1)
|
|
67
|
-
break;
|
|
68
|
-
const body = text.slice(openRe.lastIndex, closeIdx);
|
|
69
|
-
openRe.lastIndex = closeIdx + closeTag.length;
|
|
70
|
-
const explicitId = attrs.id ? parseInt(attrs.id, 10) : undefined;
|
|
71
|
-
if (tag === "CLI") {
|
|
72
|
-
const command = body.trim();
|
|
73
|
-
if (!command)
|
|
74
|
-
continue;
|
|
75
|
-
blocks.push({
|
|
76
|
-
kind: "bash",
|
|
77
|
-
id: explicitId ?? counters.bash++,
|
|
78
|
-
command,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
else if (tag === "WRITE") {
|
|
82
|
-
if (!attrs.path) {
|
|
83
|
-
blocks.push({
|
|
84
|
-
kind: "write",
|
|
85
|
-
id: explicitId ?? counters.write++,
|
|
86
|
-
path: "",
|
|
87
|
-
content: body,
|
|
88
|
-
});
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
blocks.push({
|
|
92
|
-
kind: "write",
|
|
93
|
-
id: explicitId ?? counters.write++,
|
|
94
|
-
path: attrs.path,
|
|
95
|
-
content: stripLeadingNewline(body),
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
else if (tag === "EDIT") {
|
|
99
|
-
const parsed = parseEditBody(body);
|
|
100
|
-
blocks.push({
|
|
101
|
-
kind: "edit",
|
|
102
|
-
id: explicitId ?? counters.edit++,
|
|
103
|
-
path: attrs.path ?? "",
|
|
104
|
-
search: parsed?.search ?? "",
|
|
105
|
-
replace: parsed?.replace ?? "",
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return blocks;
|
|
110
|
-
}
|
|
111
|
-
function stripLeadingNewline(s) {
|
|
112
|
-
return s.startsWith("\n") ? s.slice(1) : s;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Extract SEARCH / REPLACE halves from the body of an [EDIT] block.
|
|
116
|
-
* Accepts Aider-style markers:
|
|
117
|
-
* <<<<<<< SEARCH
|
|
118
|
-
* ...
|
|
119
|
-
* =======
|
|
120
|
-
* ...
|
|
121
|
-
* >>>>>>> REPLACE
|
|
122
|
-
*/
|
|
123
|
-
function parseEditBody(body) {
|
|
124
|
-
const re = /<{5,}\s*SEARCH\s*\r?\n([\s\S]*?)\r?\n={5,}\s*\r?\n([\s\S]*?)\r?\n>{5,}\s*REPLACE/;
|
|
125
|
-
const m = re.exec(body);
|
|
126
|
-
if (!m)
|
|
127
|
-
return null;
|
|
128
|
-
return { search: m[1], replace: m[2] };
|
|
129
|
-
}
|
|
130
|
-
// ─── Tool implementations ─────────────────────────────────────────────────────
|
|
131
|
-
export async function execBash(cwd, command, signal) {
|
|
132
|
-
if (!command)
|
|
133
|
-
throw new Error("bash requires a command");
|
|
134
|
-
return new Promise((resolve_, reject) => {
|
|
135
|
-
const shell = process.env.SHELL || "/bin/bash";
|
|
136
|
-
const child = spawn(shell, ["-c", command], {
|
|
137
|
-
cwd,
|
|
138
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
139
|
-
env: { ...process.env },
|
|
140
|
-
});
|
|
141
|
-
const chunks = [];
|
|
142
|
-
const onAbort = () => {
|
|
143
|
-
child.kill("SIGTERM");
|
|
144
|
-
setTimeout(() => child.kill("SIGKILL"), 2000);
|
|
145
|
-
};
|
|
146
|
-
if (signal) {
|
|
147
|
-
if (signal.aborted)
|
|
148
|
-
onAbort();
|
|
149
|
-
else
|
|
150
|
-
signal.addEventListener("abort", onAbort, { once: true });
|
|
151
|
-
}
|
|
152
|
-
child.stdout?.on("data", (d) => chunks.push(d));
|
|
153
|
-
child.stderr?.on("data", (d) => chunks.push(d));
|
|
154
|
-
child.on("close", (code) => {
|
|
155
|
-
if (signal)
|
|
156
|
-
signal.removeEventListener("abort", onAbort);
|
|
157
|
-
const raw = Buffer.concat(chunks).toString("utf-8");
|
|
158
|
-
const output = truncateOutput(raw);
|
|
159
|
-
const isError = code !== 0 && code !== null;
|
|
160
|
-
resolve_({ output: output || "(no output)", isError });
|
|
161
|
-
});
|
|
162
|
-
child.on("error", (err) => {
|
|
163
|
-
if (signal)
|
|
164
|
-
signal.removeEventListener("abort", onAbort);
|
|
165
|
-
reject(err);
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
export async function execWrite(cwd, path, content) {
|
|
170
|
-
if (!path)
|
|
171
|
-
throw new Error("[WRITE] requires path= attribute");
|
|
172
|
-
const absolutePath = isAbsolute(path) ? path : resolve(cwd, path);
|
|
173
|
-
await mkdir(dirname(absolutePath), { recursive: true });
|
|
174
|
-
await writeFile(absolutePath, content, "utf-8");
|
|
175
|
-
return {
|
|
176
|
-
output: `Wrote ${Buffer.byteLength(content, "utf-8")} bytes to ${path}`,
|
|
177
|
-
isError: false,
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
export async function execEdit(cwd, path, search, replace) {
|
|
181
|
-
if (!path)
|
|
182
|
-
throw new Error("[EDIT] requires path= attribute");
|
|
183
|
-
if (!search) {
|
|
184
|
-
throw new Error("[EDIT] requires a SEARCH/REPLACE body. Use <<<<<<< SEARCH … ======= … >>>>>>> REPLACE");
|
|
185
|
-
}
|
|
186
|
-
const absolutePath = isAbsolute(path) ? path : resolve(cwd, path);
|
|
187
|
-
const content = await readFile(absolutePath, "utf-8");
|
|
188
|
-
const index = content.indexOf(search);
|
|
189
|
-
if (index === -1) {
|
|
190
|
-
throw new Error(`Could not find the SEARCH text in ${path}. It must match exactly, including whitespace.`);
|
|
191
|
-
}
|
|
192
|
-
const second = content.indexOf(search, index + 1);
|
|
193
|
-
if (second !== -1) {
|
|
194
|
-
throw new Error(`SEARCH text occurs multiple times in ${path}. Provide more surrounding context to make it unique.`);
|
|
195
|
-
}
|
|
196
|
-
const newContent = content.substring(0, index) + replace + content.substring(index + search.length);
|
|
197
|
-
await writeFile(absolutePath, newContent, "utf-8");
|
|
198
|
-
return { output: `Edited ${path}`, isError: false };
|
|
199
|
-
}
|
|
200
|
-
// ─── Dispatch ─────────────────────────────────────────────────────────────────
|
|
201
|
-
export async function dispatchBlock(block, cwd, signal) {
|
|
202
|
-
switch (block.kind) {
|
|
203
|
-
case "bash":
|
|
204
|
-
return execBash(cwd, block.command, signal);
|
|
205
|
-
case "write":
|
|
206
|
-
return execWrite(cwd, block.path, block.content);
|
|
207
|
-
case "edit":
|
|
208
|
-
return execEdit(cwd, block.path, block.search, block.replace);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
// ─── Result formatting ────────────────────────────────────────────────────────
|
|
212
|
-
export function buildResultBlock(output, isError, id, kind, label) {
|
|
213
|
-
const labelAttr = label ? ` label="${label.replace(/"/g, '\\"')}"` : "";
|
|
214
|
-
const errAttr = isError ? " error=true" : "";
|
|
215
|
-
return `[RESULT id=${id} kind=${kind}${labelAttr}${errAttr}]\n${output}\n[/RESULT]`;
|
|
216
|
-
}
|
|
217
|
-
export function labelForBlock(block) {
|
|
218
|
-
switch (block.kind) {
|
|
219
|
-
case "bash":
|
|
220
|
-
return truncateLabel(block.command);
|
|
221
|
-
case "write":
|
|
222
|
-
return `write ${block.path}`;
|
|
223
|
-
case "edit":
|
|
224
|
-
return `edit ${block.path}`;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
function truncateLabel(s) {
|
|
228
|
-
const oneLine = s.replace(/\s+/g, " ").trim();
|
|
229
|
-
return oneLine.length > 120 ? oneLine.slice(0, 117) + "…" : oneLine;
|
|
230
|
-
}
|
|
231
|
-
// ─── History rewriting ────────────────────────────────────────────────────────
|
|
232
|
-
/**
|
|
233
|
-
* Reconstruct assistant-visible text for a native tool_use call of one of our
|
|
234
|
-
* built-in operations (used only if an older session recorded them as native
|
|
235
|
-
* tool calls). For bash we render [CLI]; for write/edit we render fenced blocks.
|
|
236
|
-
*/
|
|
237
|
-
export function reconstructBlockText(toolName, args) {
|
|
238
|
-
if (toolName === "bash" && typeof args.command === "string") {
|
|
239
|
-
return `[CLI] ${args.command}[/CLI]`;
|
|
240
|
-
}
|
|
241
|
-
if (toolName === "write" && typeof args.path === "string") {
|
|
242
|
-
const content = typeof args.content === "string" ? args.content : "";
|
|
243
|
-
return `[WRITE path="${escapeAttr(args.path)}"]\n${content}\n[/WRITE]`;
|
|
244
|
-
}
|
|
245
|
-
if (toolName === "edit" && typeof args.path === "string") {
|
|
246
|
-
const oldText = args.oldText ?? args.old ?? "";
|
|
247
|
-
const newText = args.newText ?? args.new ?? "";
|
|
248
|
-
return (`[EDIT path="${escapeAttr(args.path)}"]\n` +
|
|
249
|
-
`<<<<<<< SEARCH\n${oldText}\n=======\n${newText}\n>>>>>>> REPLACE\n` +
|
|
250
|
-
`[/EDIT]`);
|
|
251
|
-
}
|
|
252
|
-
return null;
|
|
253
|
-
}
|
|
254
|
-
function escapeAttr(s) {
|
|
255
|
-
return s.replace(/"/g, '\\"');
|
|
256
|
-
}
|
|
257
|
-
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
258
|
-
function truncateOutput(text) {
|
|
259
|
-
const lines = text.split("\n");
|
|
260
|
-
if (lines.length > MAX_OUTPUT_LINES) {
|
|
261
|
-
const kept = lines.slice(lines.length - MAX_OUTPUT_LINES);
|
|
262
|
-
return `[${lines.length - MAX_OUTPUT_LINES} lines truncated]\n${kept.join("\n")}`;
|
|
263
|
-
}
|
|
264
|
-
if (Buffer.byteLength(text, "utf-8") > MAX_OUTPUT_BYTES) {
|
|
265
|
-
const buf = Buffer.from(text, "utf-8");
|
|
266
|
-
return buf.subarray(buf.length - MAX_OUTPUT_BYTES).toString("utf-8");
|
|
267
|
-
}
|
|
268
|
-
return text;
|
|
269
|
-
}
|
|
270
|
-
//# sourceMappingURL=core.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/extension/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pi-pizza extension
|
|
3
|
-
*
|
|
4
|
-
* Uses pi's built-in tools (read, write, edit, bash) but displays them in [CLI] tag format.
|
|
5
|
-
* The LLM uses pi's native tool calling, but conversation history is rewritten so the model
|
|
6
|
-
* sees [CLI]/[RESULT] format instead of JSON tool calls.
|
|
7
|
-
*
|
|
8
|
-
* Supports: read, write, edit, bash (pi's built-in tools)
|
|
9
|
-
*
|
|
10
|
-
* Usage in pi:
|
|
11
|
-
* /cli-mode — toggle CLI display mode on/off
|
|
12
|
-
*/
|
|
13
|
-
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
|
14
|
-
export default function (pi: ExtensionAPI): void;
|