86 lines
2.6 KiB
TypeScript
86 lines
2.6 KiB
TypeScript
import type { PaperclipPluginManifestV1 } from "@paperclipai/plugin-sdk";
|
|
|
|
const PLUGIN_ID = "paperclip-file-browser-example";
|
|
const FILES_SIDEBAR_SLOT_ID = "files-link";
|
|
const FILES_TAB_SLOT_ID = "files-tab";
|
|
const COMMENT_FILE_LINKS_SLOT_ID = "comment-file-links";
|
|
const COMMENT_OPEN_FILES_SLOT_ID = "comment-open-files";
|
|
|
|
const manifest: PaperclipPluginManifestV1 = {
|
|
id: PLUGIN_ID,
|
|
apiVersion: 1,
|
|
version: "0.2.0",
|
|
displayName: "File Browser (Example)",
|
|
description: "Example plugin that adds a Files link under each project in the sidebar, a file browser + editor tab on the project detail page, and per-comment file link annotations with a context menu action to open referenced files.",
|
|
author: "Paperclip",
|
|
categories: ["workspace", "ui"],
|
|
capabilities: [
|
|
"ui.sidebar.register",
|
|
"ui.detailTab.register",
|
|
"ui.commentAnnotation.register",
|
|
"ui.action.register",
|
|
"projects.read",
|
|
"project.workspaces.read",
|
|
"issue.comments.read",
|
|
"plugin.state.read",
|
|
],
|
|
instanceConfigSchema: {
|
|
type: "object",
|
|
properties: {
|
|
showFilesInSidebar: {
|
|
type: "boolean",
|
|
title: "Show Files in Sidebar",
|
|
default: false,
|
|
description: "Adds the Files link under each project in the sidebar.",
|
|
},
|
|
commentAnnotationMode: {
|
|
type: "string",
|
|
title: "Comment File Links",
|
|
enum: ["annotation", "contextMenu", "both", "none"],
|
|
default: "both",
|
|
description: "Controls which comment extensions are active: 'annotation' shows file links below each comment, 'contextMenu' adds an \"Open in Files\" action to the comment menu, 'both' enables both, 'none' disables comment features.",
|
|
},
|
|
},
|
|
},
|
|
entrypoints: {
|
|
worker: "./dist/worker.js",
|
|
ui: "./dist/ui",
|
|
},
|
|
ui: {
|
|
slots: [
|
|
{
|
|
type: "projectSidebarItem",
|
|
id: FILES_SIDEBAR_SLOT_ID,
|
|
displayName: "Files",
|
|
exportName: "FilesLink",
|
|
entityTypes: ["project"],
|
|
order: 10,
|
|
},
|
|
{
|
|
type: "detailTab",
|
|
id: FILES_TAB_SLOT_ID,
|
|
displayName: "Files",
|
|
exportName: "FilesTab",
|
|
entityTypes: ["project"],
|
|
order: 10,
|
|
},
|
|
{
|
|
type: "commentAnnotation",
|
|
id: COMMENT_FILE_LINKS_SLOT_ID,
|
|
displayName: "File Links",
|
|
exportName: "CommentFileLinks",
|
|
entityTypes: ["comment"],
|
|
},
|
|
{
|
|
type: "commentContextMenuItem",
|
|
id: COMMENT_OPEN_FILES_SLOT_ID,
|
|
displayName: "Open in Files",
|
|
exportName: "CommentOpenFiles",
|
|
entityTypes: ["comment"],
|
|
},
|
|
],
|
|
},
|
|
};
|
|
|
|
export default manifest;
|