Files
paperclip/packages/plugins/examples/plugin-kitchen-sink-example/src/constants.ts
2026-03-14 09:26:45 -05:00

114 lines
3.3 KiB
TypeScript

import type { PluginLauncherRegistration } from "@paperclipai/plugin-sdk";
export const PLUGIN_ID = "paperclip-kitchen-sink-example";
export const PLUGIN_VERSION = "0.1.0";
export const PAGE_ROUTE = "kitchensink";
export const SLOT_IDS = {
page: "kitchen-sink-page",
settingsPage: "kitchen-sink-settings-page",
dashboardWidget: "kitchen-sink-dashboard-widget",
sidebar: "kitchen-sink-sidebar-link",
sidebarPanel: "kitchen-sink-sidebar-panel",
projectSidebarItem: "kitchen-sink-project-link",
projectTab: "kitchen-sink-project-tab",
issueTab: "kitchen-sink-issue-tab",
taskDetailView: "kitchen-sink-task-detail",
toolbarButton: "kitchen-sink-toolbar-action",
contextMenuItem: "kitchen-sink-context-action",
commentAnnotation: "kitchen-sink-comment-annotation",
commentContextMenuItem: "kitchen-sink-comment-action",
} as const;
export const EXPORT_NAMES = {
page: "KitchenSinkPage",
settingsPage: "KitchenSinkSettingsPage",
dashboardWidget: "KitchenSinkDashboardWidget",
sidebar: "KitchenSinkSidebarLink",
sidebarPanel: "KitchenSinkSidebarPanel",
projectSidebarItem: "KitchenSinkProjectSidebarItem",
projectTab: "KitchenSinkProjectTab",
issueTab: "KitchenSinkIssueTab",
taskDetailView: "KitchenSinkTaskDetailView",
toolbarButton: "KitchenSinkToolbarButton",
contextMenuItem: "KitchenSinkContextMenuItem",
commentAnnotation: "KitchenSinkCommentAnnotation",
commentContextMenuItem: "KitchenSinkCommentContextMenuItem",
launcherModal: "KitchenSinkLauncherModal",
} as const;
export const JOB_KEYS = {
heartbeat: "demo-heartbeat",
} as const;
export const WEBHOOK_KEYS = {
demo: "demo-ingest",
} as const;
export const TOOL_NAMES = {
echo: "echo",
companySummary: "company-summary",
createIssue: "create-issue",
} as const;
export const STREAM_CHANNELS = {
progress: "progress",
agentChat: "agent-chat",
} as const;
export const SAFE_COMMANDS = [
{
key: "pwd",
label: "Print workspace path",
command: "pwd",
args: [] as string[],
description: "Prints the current workspace directory.",
},
{
key: "ls",
label: "List workspace files",
command: "ls",
args: ["-la"] as string[],
description: "Lists files in the selected workspace.",
},
{
key: "git-status",
label: "Git status",
command: "git",
args: ["status", "--short", "--branch"] as string[],
description: "Shows git status for the selected workspace.",
},
] as const;
export type SafeCommandKey = (typeof SAFE_COMMANDS)[number]["key"];
export const DEFAULT_CONFIG = {
showSidebarEntry: true,
showSidebarPanel: true,
showProjectSidebarItem: true,
showCommentAnnotation: true,
showCommentContextMenuItem: true,
enableWorkspaceDemos: true,
enableProcessDemos: false,
secretRefExample: "",
httpDemoUrl: "https://httpbin.org/anything",
allowedCommands: SAFE_COMMANDS.map((command) => command.key),
workspaceScratchFile: ".paperclip-kitchen-sink-demo.txt",
} as const;
export const RUNTIME_LAUNCHER: PluginLauncherRegistration = {
id: "kitchen-sink-runtime-launcher",
displayName: "Kitchen Sink Modal",
description: "Demonstrates runtime launcher registration from the worker.",
placementZone: "toolbarButton",
entityTypes: ["project", "issue"],
action: {
type: "openModal",
target: EXPORT_NAMES.launcherModal,
},
render: {
environment: "hostOverlay",
bounds: "wide",
},
};