Added nono profiles & orca integration - Added some extensions to start working on
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
import {
|
||||
copyToClipboard,
|
||||
type ExtensionAPI,
|
||||
} from "@earendil-works/pi-coding-agent";
|
||||
|
||||
function textFromContent(content: unknown) {
|
||||
if (typeof content === "string") return content;
|
||||
if (!Array.isArray(content)) return "";
|
||||
|
||||
return content
|
||||
.map((block) => {
|
||||
if (!block || typeof block !== "object") return "";
|
||||
if (!("type" in block)) return "";
|
||||
|
||||
if (
|
||||
block.type === "text" &&
|
||||
"text" in block &&
|
||||
typeof block.text === "string"
|
||||
) {
|
||||
return block.text;
|
||||
}
|
||||
|
||||
if (block.type === "image") return "[image]";
|
||||
|
||||
return "";
|
||||
})
|
||||
.filter(Boolean)
|
||||
.join("\n");
|
||||
}
|
||||
|
||||
export default function (pi: ExtensionAPI) {
|
||||
pi.registerCommand("copy-all", {
|
||||
description:
|
||||
"Copy all previous user and assistant messages in this thread to the clipboard",
|
||||
handler: async (_args, ctx) => {
|
||||
await ctx.waitForIdle();
|
||||
|
||||
const sections = ctx.sessionManager
|
||||
.getBranch()
|
||||
.filter((entry) => entry.type === "message")
|
||||
.map((entry) => entry.message)
|
||||
.filter(
|
||||
(message) => message.role === "user" || message.role === "assistant",
|
||||
)
|
||||
.map((message) => ({
|
||||
role: message.role,
|
||||
content: textFromContent(message.content).trim(),
|
||||
}))
|
||||
.filter(({ content }) => content)
|
||||
.map(({ role, content }) => `${role.toUpperCase()}:\n${content}`);
|
||||
|
||||
if (sections.length === 0) {
|
||||
ctx.ui.notify("No user or assistant messages to copy", "info");
|
||||
return;
|
||||
}
|
||||
|
||||
await copyToClipboard(sections.join("\n\n---\n\n"));
|
||||
ctx.ui.notify(`Copied ${sections.length} messages to clipboard`, "info");
|
||||
},
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user