pi: change model and agent harness as uiux for subagent extensions
This commit is contained in:
parent
2de7c7613d
commit
b31929bbf3
9 changed files with 577 additions and 51 deletions
39
.pi/agent/extensions/clipboard-images.ts
Normal file
39
.pi/agent/extensions/clipboard-images.ts
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
/**
|
||||
* Clipboard Image Labels
|
||||
*
|
||||
* Adds [Image #N] labels to messages that include pasted images,
|
||||
* matching the Claude Code / Codex visual style.
|
||||
*
|
||||
* Usage:
|
||||
* - Paste: Ctrl+V (Alt+V on Windows)
|
||||
* - Drag: drag any image file onto the terminal
|
||||
*
|
||||
* When images are detected, [Image #1], [Image #2], … labels are
|
||||
* appended to the message text so they appear in the conversation
|
||||
* history and are visible to the LLM alongside the actual image data.
|
||||
*
|
||||
* A small notification confirms how many images were attached.
|
||||
*/
|
||||
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
||||
|
||||
export default function (pi: ExtensionAPI) {
|
||||
pi.on("input", async (event, ctx) => {
|
||||
// Nothing to do when no images are attached
|
||||
if (!event.images || event.images.length === 0) {
|
||||
return { action: "continue" };
|
||||
}
|
||||
|
||||
// Build [Image #N] labels – one per attached image
|
||||
const labels = event.images.map((_img, i) => `[Image #${i + 1}]`).join(" ");
|
||||
|
||||
// Append labels after any typed text (or use them alone if no text)
|
||||
const newText = event.text?.trim() ? `${event.text.trim()}\n\n${labels}` : labels;
|
||||
|
||||
// Brief confirmation so the user knows the paste registered
|
||||
const count = event.images.length;
|
||||
ctx.ui.notify(`📎 ${count} image${count > 1 ? "s" : ""} attached`, "info");
|
||||
|
||||
// Transform keeps the original images intact; only the text changes
|
||||
return { action: "transform", text: newText };
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue