@tomsun28/pizza 0.0.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extension/index.d.ts +6 -17
- package/dist/extension/index.js +269 -198
- package/dist/extension/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,25 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* pi-pizza extension
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* [WRITE id=1 path=src/hello.ts]
|
|
10
|
-
* export const hi = "hi";
|
|
11
|
-
* [/WRITE]
|
|
12
|
-
* [EDIT id=1 path=src/main.ts]
|
|
13
|
-
* <<<<<<< SEARCH
|
|
14
|
-
* const greet = "hello";
|
|
15
|
-
* =======
|
|
16
|
-
* const greet = "hi";
|
|
17
|
-
* >>>>>>> REPLACE
|
|
18
|
-
* [/EDIT]
|
|
8
|
+
* Supports: read, write, edit, bash (pi's built-in tools)
|
|
19
9
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* Toggle at runtime with /cli-mode (on by default).
|
|
10
|
+
* Usage in pi:
|
|
11
|
+
* /cli-mode — toggle CLI display mode on/off
|
|
23
12
|
*/
|
|
24
13
|
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
|
25
14
|
export default function (pi: ExtensionAPI): void;
|
package/dist/extension/index.js
CHANGED
|
@@ -1,117 +1,266 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* pi-pizza extension
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* [WRITE id=1 path=src/hello.ts]
|
|
10
|
-
* export const hi = "hi";
|
|
11
|
-
* [/WRITE]
|
|
12
|
-
* [EDIT id=1 path=src/main.ts]
|
|
13
|
-
* <<<<<<< SEARCH
|
|
14
|
-
* const greet = "hello";
|
|
15
|
-
* =======
|
|
16
|
-
* const greet = "hi";
|
|
17
|
-
* >>>>>>> REPLACE
|
|
18
|
-
* [/EDIT]
|
|
8
|
+
* Supports: read, write, edit, bash (pi's built-in tools)
|
|
19
9
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* Toggle at runtime with /cli-mode (on by default).
|
|
10
|
+
* Usage in pi:
|
|
11
|
+
* /cli-mode — toggle CLI display mode on/off
|
|
23
12
|
*/
|
|
24
13
|
import { Text } from "@mariozechner/pi-tui";
|
|
25
|
-
|
|
14
|
+
// ─── Helper functions for CLI format conversion ─────────────────────────────────
|
|
15
|
+
function toolCallToCliText(toolName, arguments_) {
|
|
16
|
+
switch (toolName) {
|
|
17
|
+
case "read":
|
|
18
|
+
const path = arguments_.path;
|
|
19
|
+
const offset = arguments_.offset !== undefined ? ` --offset ${arguments_.offset}` : "";
|
|
20
|
+
const limit = arguments_.limit !== undefined ? ` --limit ${arguments_.limit}` : "";
|
|
21
|
+
return `[CLI] read ${path}${offset}${limit}[/CLI]`;
|
|
22
|
+
case "write":
|
|
23
|
+
return `[CLI] write --path ${arguments_.path} --content "${arguments_.content.replace(/"/g, '\\"')}"[/CLI]`;
|
|
24
|
+
case "edit":
|
|
25
|
+
return `[CLI] edit --path ${arguments_.path} --old "${arguments_.oldText.replace(/"/g, '\\"')}" --new "${arguments_.newText.replace(/"/g, '\\"')}"[/CLI]`;
|
|
26
|
+
case "bash":
|
|
27
|
+
return `[CLI] bash ${arguments_.command}[/CLI]`;
|
|
28
|
+
default:
|
|
29
|
+
return `[CLI] ${toolName} ${JSON.stringify(arguments_)}[/CLI]`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function toolResultToCliText(toolName, output, isError) {
|
|
33
|
+
const errorAttr = isError ? " error=true" : "";
|
|
34
|
+
return `[RESULT${errorAttr}]\n${output}\n[/RESULT]`;
|
|
35
|
+
}
|
|
36
|
+
function parseCLICalls(text) {
|
|
37
|
+
const regex = /\[CLI(?:\s+id=(\d+))?\]([\s\S]*?)\[\/CLI\]/g;
|
|
38
|
+
const calls = [];
|
|
39
|
+
let firstMatchStart = -1;
|
|
40
|
+
let autoId = 1;
|
|
41
|
+
let match;
|
|
42
|
+
while ((match = regex.exec(text)) !== null) {
|
|
43
|
+
if (firstMatchStart === -1)
|
|
44
|
+
firstMatchStart = match.index;
|
|
45
|
+
const explicitId = match[1] ? parseInt(match[1], 10) : undefined;
|
|
46
|
+
const inner = match[2].trim();
|
|
47
|
+
const spaceIdx = inner.search(/\s/);
|
|
48
|
+
const toolName = spaceIdx === -1 ? inner : inner.slice(0, spaceIdx);
|
|
49
|
+
const rawArgs = spaceIdx === -1 ? "" : inner.slice(spaceIdx + 1).trim();
|
|
50
|
+
if (toolName) {
|
|
51
|
+
calls.push({ id: explicitId ?? autoId, toolName, rawArgs });
|
|
52
|
+
autoId++;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const textBeforeCalls = firstMatchStart >= 0 ? text.substring(0, firstMatchStart).trimEnd() : text;
|
|
56
|
+
return { calls, textBeforeCalls };
|
|
57
|
+
}
|
|
58
|
+
// ─── Shell-style arg parser with HEREDOC support ─────────────────────────────────
|
|
59
|
+
function parseCliArgs(raw) {
|
|
60
|
+
const args = {};
|
|
61
|
+
const positional = [];
|
|
62
|
+
const tokens = [];
|
|
63
|
+
let i = 0;
|
|
64
|
+
while (i < raw.length) {
|
|
65
|
+
while (i < raw.length && /\s/.test(raw[i]))
|
|
66
|
+
i++;
|
|
67
|
+
if (i >= raw.length)
|
|
68
|
+
break;
|
|
69
|
+
// Handle HEREDOC: <<'DELIMITER' or <<"DELIMITER" or <<DELIMITER
|
|
70
|
+
if (raw.slice(i, i + 2) === "<<") {
|
|
71
|
+
i += 2;
|
|
72
|
+
while (i < raw.length && /\s/.test(raw[i]))
|
|
73
|
+
i++;
|
|
74
|
+
if (i >= raw.length)
|
|
75
|
+
break;
|
|
76
|
+
let delimiter;
|
|
77
|
+
let stripQuotes = false;
|
|
78
|
+
if (raw[i] === "'" || raw[i] === '"') {
|
|
79
|
+
const quote = raw[i++];
|
|
80
|
+
let delim = "";
|
|
81
|
+
while (i < raw.length && raw[i] !== quote) {
|
|
82
|
+
delim += raw[i++];
|
|
83
|
+
}
|
|
84
|
+
i++; // skip closing quote
|
|
85
|
+
delimiter = delim;
|
|
86
|
+
stripQuotes = true;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
let delim = "";
|
|
90
|
+
while (i < raw.length && !/\s/.test(raw[i]) && raw[i] !== "\n") {
|
|
91
|
+
delim += raw[i++];
|
|
92
|
+
}
|
|
93
|
+
delimiter = delim;
|
|
94
|
+
}
|
|
95
|
+
// Find the delimiter on its own line
|
|
96
|
+
const heredocStart = i;
|
|
97
|
+
while (i < raw.length) {
|
|
98
|
+
const lineStart = i;
|
|
99
|
+
while (i < raw.length && raw[i] !== "\n")
|
|
100
|
+
i++;
|
|
101
|
+
const line = raw.slice(lineStart, i).trim();
|
|
102
|
+
if (line === delimiter) {
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
if (i < raw.length && raw[i] === "\n")
|
|
106
|
+
i++;
|
|
107
|
+
}
|
|
108
|
+
const heredocContent = raw.slice(heredocStart, i - delimiter.length - 1).trimEnd();
|
|
109
|
+
tokens.push(heredocContent);
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (raw[i] === '"' || raw[i] === "'") {
|
|
113
|
+
const quote = raw[i++];
|
|
114
|
+
let val = "";
|
|
115
|
+
while (i < raw.length && raw[i] !== quote) {
|
|
116
|
+
if (raw[i] === "\\" && i + 1 < raw.length) {
|
|
117
|
+
i++;
|
|
118
|
+
val += raw[i++];
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
val += raw[i++];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
i++;
|
|
125
|
+
tokens.push(val);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
let val = "";
|
|
129
|
+
while (i < raw.length && !/\s/.test(raw[i])) {
|
|
130
|
+
val += raw[i++];
|
|
131
|
+
}
|
|
132
|
+
tokens.push(val);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
let ti = 0;
|
|
136
|
+
while (ti < tokens.length) {
|
|
137
|
+
const tok = tokens[ti];
|
|
138
|
+
if (tok.startsWith("--")) {
|
|
139
|
+
const key = tok.slice(2);
|
|
140
|
+
if (ti + 1 < tokens.length && !tokens[ti + 1].startsWith("--")) {
|
|
141
|
+
args[key] = tokens[ti + 1];
|
|
142
|
+
ti += 2;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
args[key] = true;
|
|
146
|
+
ti++;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
positional.push(tok);
|
|
151
|
+
ti++;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (positional.length > 0) {
|
|
155
|
+
if (!("path" in args) && !("command" in args) && !("pattern" in args)) {
|
|
156
|
+
args._positional = positional.join(" ");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return args;
|
|
160
|
+
}
|
|
161
|
+
function mapArgsToTool(toolName, rawArgs) {
|
|
162
|
+
const args = parseCliArgs(rawArgs);
|
|
163
|
+
const pos = args._positional;
|
|
164
|
+
delete args._positional;
|
|
165
|
+
switch (toolName) {
|
|
166
|
+
case "read":
|
|
167
|
+
if (pos && !args.path)
|
|
168
|
+
args.path = pos;
|
|
169
|
+
break;
|
|
170
|
+
case "write":
|
|
171
|
+
// --path and --content required
|
|
172
|
+
break;
|
|
173
|
+
case "edit":
|
|
174
|
+
if (args.old) {
|
|
175
|
+
args.oldText = args.old;
|
|
176
|
+
delete args.old;
|
|
177
|
+
}
|
|
178
|
+
if (args.new) {
|
|
179
|
+
args.newText = args.new;
|
|
180
|
+
delete args.new;
|
|
181
|
+
}
|
|
182
|
+
if (pos && !args.path)
|
|
183
|
+
args.path = pos;
|
|
184
|
+
break;
|
|
185
|
+
case "bash":
|
|
186
|
+
if (rawArgs && !args.command)
|
|
187
|
+
args.command = rawArgs;
|
|
188
|
+
break;
|
|
189
|
+
default:
|
|
190
|
+
if (pos)
|
|
191
|
+
args.input = pos;
|
|
192
|
+
}
|
|
193
|
+
return args;
|
|
194
|
+
}
|
|
26
195
|
// ─── System prompt addon ───────────────────────────────────────────────────────
|
|
27
196
|
const PIZZA_SYSTEM_PROMPT = `
|
|
28
|
-
You
|
|
29
|
-
Any blocks you emit are executed immediately; results come back as [RESULT]...[/RESULT]
|
|
30
|
-
text in the next turn. You may also continue to use any native tools that are
|
|
31
|
-
available (e.g. MCP tools) — the two styles coexist.
|
|
197
|
+
You are a software engineering assistant that interacts with the user's environment by issuing commands wrapped in [CLI]...[/CLI] tags.
|
|
32
198
|
|
|
33
|
-
|
|
199
|
+
Any [CLI] blocks you emit are executed immediately; results come back as [RESULT]...[/RESULT] text.
|
|
200
|
+
You may include multiple [CLI] blocks in a single response — they all run before your next reply.
|
|
201
|
+
When issuing multiple [CLI] blocks, add an id attribute to each for result mapping: [CLI id=1] ... [/CLI]
|
|
34
202
|
|
|
35
|
-
|
|
36
|
-
rg, fd, find, grep, sed, awk, jq, git, gh, curl, node, python, make, docker,
|
|
37
|
-
kubectl, and whatever else is installed. Compose with pipes freely.
|
|
203
|
+
## Commands
|
|
38
204
|
|
|
39
|
-
|
|
205
|
+
[CLI] read <path>[/CLI]
|
|
206
|
+
[CLI] read <path> --offset <n> --limit <n>[/CLI]
|
|
207
|
+
[CLI] write --path <path> --content <content>[/CLI]
|
|
208
|
+
[CLI] edit --path <path> --old <oldText> --new <newText>[/CLI]
|
|
209
|
+
[CLI] bash <any shell command>[/CLI]
|
|
40
210
|
|
|
41
|
-
|
|
42
|
-
do not wrap it in markdown fences. Do not emit the literal string [/WRITE]
|
|
43
|
-
inside the body.
|
|
211
|
+
## Multi-line Text
|
|
44
212
|
|
|
45
|
-
|
|
46
|
-
<full file contents>
|
|
47
|
-
[/WRITE]
|
|
213
|
+
For multi-line text in edit or write, use heredoc syntax:
|
|
48
214
|
|
|
49
|
-
|
|
50
|
-
|
|
215
|
+
[CLI] edit --path file.js --old <<'EOF'
|
|
216
|
+
function foo() {
|
|
217
|
+
return 1;
|
|
218
|
+
}
|
|
219
|
+
EOF
|
|
220
|
+
--new <<'EOF'
|
|
221
|
+
function foo() {
|
|
222
|
+
return 2;
|
|
223
|
+
}
|
|
224
|
+
EOF
|
|
225
|
+
[/CLI]
|
|
51
226
|
|
|
52
|
-
|
|
53
|
-
<<<<<<< SEARCH
|
|
54
|
-
<exact existing text>
|
|
55
|
-
=======
|
|
56
|
-
<replacement text>
|
|
57
|
-
>>>>>>> REPLACE
|
|
58
|
-
[/EDIT]
|
|
227
|
+
The heredoc delimiter (EOF in the example) can be any word. Use single quotes around it to prevent variable expansion.
|
|
59
228
|
|
|
60
229
|
## Examples
|
|
61
230
|
|
|
62
|
-
|
|
231
|
+
Example 1 — Check Node version:
|
|
63
232
|
|
|
64
|
-
Let me
|
|
65
|
-
[CLI id=1]
|
|
66
|
-
[CLI id=2] node --version[/CLI]
|
|
233
|
+
Let me check the Node version.
|
|
234
|
+
[CLI id=1] bash node --version[/CLI]
|
|
67
235
|
|
|
68
|
-
|
|
236
|
+
Example 2 — Edit a file with multi-line text:
|
|
69
237
|
|
|
70
|
-
[CLI id=1]
|
|
71
|
-
|
|
238
|
+
[CLI id=1] edit --path app.js --old <<'EOF'
|
|
239
|
+
const x = 1;
|
|
240
|
+
EOF
|
|
241
|
+
--new <<'EOF'
|
|
242
|
+
const x = 2;
|
|
243
|
+
EOF
|
|
244
|
+
[/CLI]
|
|
72
245
|
|
|
73
|
-
|
|
246
|
+
## Best Practices
|
|
74
247
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
<<<<<<< SEARCH
|
|
85
|
-
const greet = "hello";
|
|
86
|
-
=======
|
|
87
|
-
const greet = "hi";
|
|
88
|
-
>>>>>>> REPLACE
|
|
89
|
-
[/EDIT]
|
|
90
|
-
|
|
91
|
-
When you have enough information, answer normally without any blocks.
|
|
92
|
-
|
|
93
|
-
## Rules
|
|
94
|
-
|
|
95
|
-
- Emit at most ${MAX_CALLS_PER_TURN} blocks per response (combined across kinds)
|
|
96
|
-
- All blocks in your response are executed before your next turn
|
|
97
|
-
- NEVER generate [RESULT] blocks yourself — they are injected automatically
|
|
98
|
-
- Do NOT wrap blocks in markdown fences; they must appear as raw text
|
|
99
|
-
- Prefer [EDIT] over [WRITE] for existing files — keep changes minimal
|
|
100
|
-
- ALWAYS read a file (\`sed -n '1,200p' path\` or \`cat path\`) before editing it
|
|
101
|
-
- For file edits, the SEARCH text must match exactly once; include enough
|
|
102
|
-
surrounding context to be unique
|
|
103
|
-
- When running shell commands with paths that contain spaces, quote them
|
|
104
|
-
- Be honest and objective. If something is wrong, say so
|
|
105
|
-
- Do not add unnecessary features, refactoring, comments, or error handling
|
|
106
|
-
beyond what was requested
|
|
107
|
-
- Avoid introducing security issues (command injection, XSS, SQLi, etc.)
|
|
248
|
+
- ALWAYS read a file before modifying it. Use \`read\` first, understand the existing code, then use \`edit\`
|
|
249
|
+
- Prefer \`edit\` over \`write\` for changing existing files — make minimal, targeted changes
|
|
250
|
+
- Only create new files when explicitly necessary
|
|
251
|
+
- For complex tasks, plan your approach first: read relevant files, understand the structure, then make changes step by step
|
|
252
|
+
- Keep responses concise and direct. Output text only when it communicates something useful to the user
|
|
253
|
+
- Be honest and objective. If something is wrong, say so. Do not blindly validate the user's assumptions
|
|
254
|
+
- Do not add unnecessary features, refactoring, comments, or error handling beyond what was requested — do the minimum necessary
|
|
255
|
+
- Avoid security vulnerabilities: do not introduce command injection, XSS, SQL injection, or other OWASP top 10 issues in generated code
|
|
256
|
+
- When running bash commands with file paths that contain spaces, quote the paths with double quotes
|
|
108
257
|
`.trim();
|
|
109
258
|
// ─── Extension ────────────────────────────────────────────────────────────────
|
|
110
259
|
export default function (pi) {
|
|
111
260
|
let pizzaModeActive = true;
|
|
112
|
-
// ── /
|
|
261
|
+
// ── /pizza-mode command ──────────────────────────────────────────────────
|
|
113
262
|
pi.registerCommand("cli-mode", {
|
|
114
|
-
description: "Toggle [CLI]
|
|
263
|
+
description: "Toggle [CLI] tag mode on/off (active by default at startup)",
|
|
115
264
|
handler: async (_args, ctx) => {
|
|
116
265
|
pizzaModeActive = !pizzaModeActive;
|
|
117
266
|
const status = pizzaModeActive ? "ON" : "OFF";
|
|
@@ -127,121 +276,56 @@ export default function (pi) {
|
|
|
127
276
|
systemPrompt: event.systemPrompt + "\n\n" + PIZZA_SYSTEM_PROMPT,
|
|
128
277
|
};
|
|
129
278
|
});
|
|
130
|
-
//
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
// ── Parse blocks, execute, inject [RESULT] ───────────────────────────────
|
|
134
|
-
pi.on("agent_end", async (event, ctx) => {
|
|
135
|
-
if (!pizzaModeActive)
|
|
136
|
-
return;
|
|
137
|
-
const messages = event.messages;
|
|
138
|
-
// Find the last assistant text
|
|
139
|
-
let lastAssistantText = "";
|
|
140
|
-
for (let i = messages.length - 1; i >= 0; i--) {
|
|
141
|
-
const msg = messages[i];
|
|
142
|
-
if (msg.role === "assistant") {
|
|
143
|
-
if (typeof msg.content === "string") {
|
|
144
|
-
lastAssistantText = msg.content;
|
|
145
|
-
}
|
|
146
|
-
else if (Array.isArray(msg.content)) {
|
|
147
|
-
const textParts = msg.content
|
|
148
|
-
.filter((c) => c.type === "text")
|
|
149
|
-
.map((c) => c.text ?? "");
|
|
150
|
-
lastAssistantText = textParts.join("\n");
|
|
151
|
-
}
|
|
152
|
-
break;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
const blocks = parseBlocks(lastAssistantText);
|
|
156
|
-
if (blocks.length === 0)
|
|
157
|
-
return;
|
|
158
|
-
const cwd = ctx.cwd;
|
|
159
|
-
const toExecute = blocks.slice(0, MAX_CALLS_PER_TURN);
|
|
160
|
-
const skipped = blocks.length - toExecute.length;
|
|
161
|
-
const results = [];
|
|
162
|
-
for (const block of toExecute) {
|
|
163
|
-
try {
|
|
164
|
-
results.push(await dispatchBlock(block, cwd));
|
|
165
|
-
}
|
|
166
|
-
catch (err) {
|
|
167
|
-
results.push({
|
|
168
|
-
output: err instanceof Error ? err.message : String(err),
|
|
169
|
-
isError: true,
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
const parts = results.map((r, i) => {
|
|
174
|
-
const block = toExecute[i];
|
|
175
|
-
return buildResultBlock(r.output, r.isError, block.id, block.kind, labelForBlock(block));
|
|
176
|
-
});
|
|
177
|
-
if (skipped > 0) {
|
|
178
|
-
parts.push(`[INFO] ${skipped} block(s) were skipped (limit: ${MAX_CALLS_PER_TURN} per turn).`);
|
|
179
|
-
}
|
|
180
|
-
const content = parts.join("\n\n");
|
|
181
|
-
pi.sendMessage({ customType: "pizza-result", content, display: true }, { triggerTurn: true });
|
|
182
|
-
});
|
|
183
|
-
// ── Rewrite history: custom pizza-result → plain user text ───────────────
|
|
279
|
+
// ── Keep pi's tools enabled ─────────────────────────────────────────────
|
|
280
|
+
// We don't strip tools anymore, so pi's built-in tools (read, write, edit, bash) are available
|
|
281
|
+
// ── Rewrite history: pi's tool_use/tool_result → [CLI]/[RESULT] format ─────
|
|
184
282
|
pi.on("context", (event, _ctx) => {
|
|
185
283
|
if (!pizzaModeActive)
|
|
186
284
|
return;
|
|
187
285
|
let modified = false;
|
|
188
286
|
const messages = event.messages.map((msg) => {
|
|
189
|
-
|
|
190
|
-
if (custom.role === "custom" && custom.customType === "pizza-result") {
|
|
191
|
-
modified = true;
|
|
192
|
-
return {
|
|
193
|
-
role: "user",
|
|
194
|
-
content: [{ type: "text", text: custom.content ?? "" }],
|
|
195
|
-
timestamp: custom.timestamp ?? Date.now(),
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
// If legacy sessions recorded our built-ins as native tool calls,
|
|
199
|
-
// rewrite them to pizza-format text so the history stays coherent.
|
|
287
|
+
// Rewrite assistant's tool_use messages to [CLI] format
|
|
200
288
|
if (msg.role === "assistant" && Array.isArray(msg.content)) {
|
|
201
289
|
const content = msg.content;
|
|
202
290
|
const hasToolCalls = content.some((c) => c.type === "toolCall");
|
|
203
|
-
if (
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
if (block.type === "text" && typeof block.text === "string") {
|
|
210
|
-
textParts.push(block.text);
|
|
211
|
-
}
|
|
212
|
-
else if (block.type === "toolCall") {
|
|
213
|
-
const tc = block;
|
|
214
|
-
const reconstructed = reconstructBlockText(tc.name, tc.arguments);
|
|
215
|
-
if (reconstructed !== null) {
|
|
216
|
-
textParts.push(reconstructed);
|
|
217
|
-
rewroteAny = true;
|
|
291
|
+
if (hasToolCalls) {
|
|
292
|
+
modified = true;
|
|
293
|
+
const textParts = [];
|
|
294
|
+
for (const block of content) {
|
|
295
|
+
if (block.type === "text" && block.text) {
|
|
296
|
+
textParts.push(block.text);
|
|
218
297
|
}
|
|
219
|
-
else {
|
|
220
|
-
|
|
298
|
+
else if (block.type === "toolCall") {
|
|
299
|
+
const tc = block;
|
|
300
|
+
textParts.push(toolCallToCliText(tc.name, tc.arguments));
|
|
221
301
|
}
|
|
222
302
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
303
|
+
return {
|
|
304
|
+
...msg,
|
|
305
|
+
content: [{ type: "text", text: textParts.join("\n\n") }],
|
|
306
|
+
};
|
|
226
307
|
}
|
|
227
|
-
|
|
228
|
-
|
|
308
|
+
}
|
|
309
|
+
// Rewrite tool_result messages to [RESULT] format
|
|
310
|
+
if (msg.role === "toolResult" && typeof msg.content === "string") {
|
|
229
311
|
modified = true;
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
312
|
+
const toolName = msg.toolName ?? "unknown";
|
|
313
|
+
const isError = msg.isError ?? false;
|
|
314
|
+
return {
|
|
315
|
+
role: "user",
|
|
316
|
+
content: [{ type: "text", text: toolResultToCliText(toolName, msg.content, isError) }],
|
|
317
|
+
timestamp: msg.timestamp ?? Date.now(),
|
|
318
|
+
};
|
|
236
319
|
}
|
|
237
320
|
return msg;
|
|
238
321
|
});
|
|
239
322
|
if (modified)
|
|
240
323
|
return { messages };
|
|
241
324
|
});
|
|
242
|
-
// ── Custom renderer for
|
|
243
|
-
pi.registerMessageRenderer("
|
|
325
|
+
// ── Custom renderer for [RESULT] messages ─────────────────────────────────────
|
|
326
|
+
pi.registerMessageRenderer("text", (message, options, theme) => {
|
|
244
327
|
const content = typeof message.content === "string" ? message.content : "";
|
|
328
|
+
// Check if this is a [RESULT] block
|
|
245
329
|
const resultPattern = /\[RESULT((?:\s+[^\]]*)?)\]([\s\S]*?)\[\/RESULT\]/g;
|
|
246
330
|
const PREVIEW_LINES = 2;
|
|
247
331
|
const lines = [];
|
|
@@ -252,18 +336,9 @@ export default function (pi) {
|
|
|
252
336
|
const attrs = match[1] || "";
|
|
253
337
|
const isError = attrs.includes("error=true");
|
|
254
338
|
const body = match[2].trim();
|
|
255
|
-
const idMatch = attrs.match(/id=(\d+)/);
|
|
256
|
-
const kindMatch = attrs.match(/kind=(\w+)/);
|
|
257
|
-
const labelMatch = attrs.match(/label="((?:[^"\\]|\\.)*)"/);
|
|
258
|
-
const id = idMatch ? idMatch[1] : null;
|
|
259
|
-
const kind = kindMatch ? kindMatch[1] : null;
|
|
260
|
-
const label = labelMatch ? labelMatch[1].replace(/\\"/g, '"') : null;
|
|
261
339
|
const headerColor = isError ? "error" : "success";
|
|
262
340
|
const statusLabel = isError ? "error" : "ok";
|
|
263
|
-
const
|
|
264
|
-
const kindLabel = kind ? ` ${kind}` : "";
|
|
265
|
-
const labelText = label ? ` ${label}` : "";
|
|
266
|
-
const header = `▶ result ${idLabel}${kindLabel} ${statusLabel}${labelText}`;
|
|
341
|
+
const header = `▶ result ${statusLabel}`;
|
|
267
342
|
lines.push(theme.fg(headerColor, header));
|
|
268
343
|
if (body) {
|
|
269
344
|
const bodyLines = body.split("\n");
|
|
@@ -282,15 +357,11 @@ export default function (pi) {
|
|
|
282
357
|
}
|
|
283
358
|
lines.push("");
|
|
284
359
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
while ((infoMatch = infoPattern.exec(content)) !== null) {
|
|
288
|
-
lines.push(theme.fg("muted", `ℹ ${infoMatch[1]}`));
|
|
289
|
-
}
|
|
290
|
-
if (!hasResults) {
|
|
291
|
-
lines.push(theme.fg("muted", "(no pizza results)"));
|
|
360
|
+
if (hasResults) {
|
|
361
|
+
return new Text(lines.join("\n"), 0, 0);
|
|
292
362
|
}
|
|
293
|
-
|
|
363
|
+
// Default rendering for non-RESULT text
|
|
364
|
+
return new Text(content, 0, 0);
|
|
294
365
|
});
|
|
295
366
|
// ── Pizza UI customization ────────────────────────────────────────────────
|
|
296
367
|
pi.on("session_start", (_event, ctx) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extension/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extension/index.ts"],"names":[],"mappings":"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"}
|