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;