Files
plugin-legal-ai/node_modules/@paperclipai/shared/dist/validators/plugin.d.ts
Chaim Marcus 587a2a76ca Initial commit: Paperclip plugin for Legal AI integration
16 agent tools, event handler for auto-linking, sync job every 15m.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 08:03:43 +00:00

1173 lines
63 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { z } from "zod";
/**
* Permissive validator for JSON Schema objects. Accepts any `Record<string, unknown>`
* that contains at least a `type`, `$ref`, or composition keyword (`oneOf`/`anyOf`/`allOf`).
* Empty objects are also accepted.
*
* Used to validate `instanceConfigSchema` and `parametersSchema` fields in the
* plugin manifest without fully parsing JSON Schema.
*
* @see PLUGIN_SPEC.md §10.1 — Manifest shape
*/
export declare const jsonSchemaSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>;
export declare const pluginJobDeclarationSchema: z.ZodObject<{
jobKey: z.ZodString;
displayName: z.ZodString;
description: z.ZodOptional<z.ZodString>;
schedule: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
}, "strip", z.ZodTypeAny, {
jobKey: string;
displayName: string;
schedule?: string | undefined;
description?: string | undefined;
}, {
jobKey: string;
displayName: string;
schedule?: string | undefined;
description?: string | undefined;
}>;
export type PluginJobDeclarationInput = z.infer<typeof pluginJobDeclarationSchema>;
/**
* Validates a {@link PluginWebhookDeclaration} — a webhook endpoint declared
* in the plugin manifest. Requires `endpointKey` and `displayName`.
*
* @see PLUGIN_SPEC.md §18 — Webhooks
*/
export declare const pluginWebhookDeclarationSchema: z.ZodObject<{
endpointKey: z.ZodString;
displayName: z.ZodString;
description: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
displayName: string;
endpointKey: string;
description?: string | undefined;
}, {
displayName: string;
endpointKey: string;
description?: string | undefined;
}>;
export type PluginWebhookDeclarationInput = z.infer<typeof pluginWebhookDeclarationSchema>;
/**
* Validates a {@link PluginToolDeclaration} — an agent tool contributed by the
* plugin. Requires `name`, `displayName`, `description`, and a valid
* `parametersSchema`. Requires the `agent.tools.register` capability.
*
* @see PLUGIN_SPEC.md §11 — Agent Tools
*/
export declare const pluginToolDeclarationSchema: z.ZodObject<{
name: z.ZodString;
displayName: z.ZodString;
description: z.ZodString;
parametersSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>;
}, "strip", z.ZodTypeAny, {
name: string;
description: string;
displayName: string;
parametersSchema: Record<string, unknown>;
}, {
name: string;
description: string;
displayName: string;
parametersSchema: Record<string, unknown>;
}>;
export type PluginToolDeclarationInput = z.infer<typeof pluginToolDeclarationSchema>;
/**
* Validates a {@link PluginUiSlotDeclaration} — a UI extension slot the plugin
* fills with a React component. Includes `superRefine` checks for slot-specific
* requirements such as `entityTypes` for context-sensitive slots.
*
* @see PLUGIN_SPEC.md §19 — UI Extension Model
*/
export declare const pluginUiSlotDeclarationSchema: z.ZodEffects<z.ZodObject<{
type: z.ZodEnum<["page", "detailTab", "taskDetailView", "dashboardWidget", "sidebar", "sidebarPanel", "projectSidebarItem", "globalToolbarButton", "toolbarButton", "contextMenuItem", "commentAnnotation", "commentContextMenuItem", "settingsPage"]>;
id: z.ZodString;
displayName: z.ZodString;
exportName: z.ZodString;
entityTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["project", "issue", "agent", "goal", "run", "comment"]>, "many">>;
routePath: z.ZodOptional<z.ZodString>;
order: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}, {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}>, {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}, {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}>;
export type PluginUiSlotDeclarationInput = z.infer<typeof pluginUiSlotDeclarationSchema>;
/**
* Validates the action payload for a declarative plugin launcher.
*/
export declare const pluginLauncherActionDeclarationSchema: z.ZodEffects<z.ZodObject<{
type: z.ZodEnum<["navigate", "openModal", "openDrawer", "openPopover", "performAction", "deepLink"]>;
target: z.ZodString;
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}>, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}>;
export type PluginLauncherActionDeclarationInput = z.infer<typeof pluginLauncherActionDeclarationSchema>;
/**
* Validates optional render hints for a plugin launcher destination.
*/
export declare const pluginLauncherRenderDeclarationSchema: z.ZodEffects<z.ZodObject<{
environment: z.ZodEnum<["hostInline", "hostOverlay", "hostRoute", "external", "iframe"]>;
bounds: z.ZodOptional<z.ZodEnum<["inline", "compact", "default", "wide", "full"]>>;
}, "strip", z.ZodTypeAny, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}>, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}>;
export type PluginLauncherRenderDeclarationInput = z.infer<typeof pluginLauncherRenderDeclarationSchema>;
/**
* Validates declarative launcher metadata in a plugin manifest.
*/
export declare const pluginLauncherDeclarationSchema: z.ZodEffects<z.ZodObject<{
id: z.ZodString;
displayName: z.ZodString;
description: z.ZodOptional<z.ZodString>;
placementZone: z.ZodEnum<["page", "detailTab", "taskDetailView", "dashboardWidget", "sidebar", "sidebarPanel", "projectSidebarItem", "globalToolbarButton", "toolbarButton", "contextMenuItem", "commentAnnotation", "commentContextMenuItem", "settingsPage"]>;
exportName: z.ZodOptional<z.ZodString>;
entityTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["project", "issue", "agent", "goal", "run", "comment"]>, "many">>;
order: z.ZodOptional<z.ZodNumber>;
action: z.ZodEffects<z.ZodObject<{
type: z.ZodEnum<["navigate", "openModal", "openDrawer", "openPopover", "performAction", "deepLink"]>;
target: z.ZodString;
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}>, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}>;
render: z.ZodOptional<z.ZodEffects<z.ZodObject<{
environment: z.ZodEnum<["hostInline", "hostOverlay", "hostRoute", "external", "iframe"]>;
bounds: z.ZodOptional<z.ZodEnum<["inline", "compact", "default", "wide", "full"]>>;
}, "strip", z.ZodTypeAny, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}>, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}>, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}>;
export type PluginLauncherDeclarationInput = z.infer<typeof pluginLauncherDeclarationSchema>;
/**
* Zod schema for {@link PaperclipPluginManifestV1} — the complete runtime
* validator for plugin manifests read at install time.
*
* Field-level constraints (see PLUGIN_SPEC.md §10.1 for the normative rules):
*
* | Field | Type | Constraints |
* |--------------------------|------------|----------------------------------------------|
* | `id` | string | `^[a-z0-9][a-z0-9._-]*$` |
* | `apiVersion` | literal 1 | must equal `PLUGIN_API_VERSION` |
* | `version` | string | semver (`\d+\.\d+\.\d+`) |
* | `displayName` | string | 1100 chars |
* | `description` | string | 1500 chars |
* | `author` | string | 1200 chars |
* | `categories` | enum[] | at least one; values from PLUGIN_CATEGORIES |
* | `minimumHostVersion` | string? | semver lower bound if present, no leading `v`|
* | `minimumPaperclipVersion`| string? | legacy alias of `minimumHostVersion` |
* | `capabilities` | enum[] | at least one; values from PLUGIN_CAPABILITIES|
* | `entrypoints.worker` | string | min 1 char |
* | `entrypoints.ui` | string? | required when `ui.slots` is declared |
*
* Cross-field rules enforced via `superRefine`:
* - `entrypoints.ui` required when `ui.slots` declared
* - `agent.tools.register` capability required when `tools` declared
* - `jobs.schedule` capability required when `jobs` declared
* - `webhooks.receive` capability required when `webhooks` declared
* - duplicate `jobs[].jobKey` values are rejected
* - duplicate `webhooks[].endpointKey` values are rejected
* - duplicate `tools[].name` values are rejected
* - duplicate `ui.slots[].id` values are rejected
*
* @see PLUGIN_SPEC.md §10.1 — Manifest shape
* @see {@link PaperclipPluginManifestV1} — the inferred TypeScript type
*/
export declare const pluginManifestV1Schema: z.ZodEffects<z.ZodObject<{
id: z.ZodString;
apiVersion: z.ZodLiteral<1>;
version: z.ZodString;
displayName: z.ZodString;
description: z.ZodString;
author: z.ZodString;
categories: z.ZodArray<z.ZodEnum<["connector", "workspace", "automation", "ui"]>, "many">;
minimumHostVersion: z.ZodOptional<z.ZodString>;
minimumPaperclipVersion: z.ZodOptional<z.ZodString>;
capabilities: z.ZodArray<z.ZodEnum<["companies.read", "projects.read", "project.workspaces.read", "issues.read", "issue.comments.read", "issue.documents.read", "agents.read", "goals.read", "goals.create", "goals.update", "activity.read", "costs.read", "issues.create", "issues.update", "issue.comments.create", "issue.documents.write", "agents.pause", "agents.resume", "agents.invoke", "agent.sessions.create", "agent.sessions.list", "agent.sessions.send", "agent.sessions.close", "activity.log.write", "metrics.write", "plugin.state.read", "plugin.state.write", "events.subscribe", "events.emit", "jobs.schedule", "webhooks.receive", "http.outbound", "secrets.read-ref", "agent.tools.register", "instance.settings.register", "ui.sidebar.register", "ui.page.register", "ui.detailTab.register", "ui.dashboardWidget.register", "ui.commentAnnotation.register", "ui.action.register"]>, "many">;
entrypoints: z.ZodObject<{
worker: z.ZodString;
ui: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
worker: string;
ui?: string | undefined;
}, {
worker: string;
ui?: string | undefined;
}>;
instanceConfigSchema: z.ZodOptional<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>>;
jobs: z.ZodOptional<z.ZodArray<z.ZodObject<{
jobKey: z.ZodString;
displayName: z.ZodString;
description: z.ZodOptional<z.ZodString>;
schedule: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
}, "strip", z.ZodTypeAny, {
jobKey: string;
displayName: string;
schedule?: string | undefined;
description?: string | undefined;
}, {
jobKey: string;
displayName: string;
schedule?: string | undefined;
description?: string | undefined;
}>, "many">>;
webhooks: z.ZodOptional<z.ZodArray<z.ZodObject<{
endpointKey: z.ZodString;
displayName: z.ZodString;
description: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
displayName: string;
endpointKey: string;
description?: string | undefined;
}, {
displayName: string;
endpointKey: string;
description?: string | undefined;
}>, "many">>;
tools: z.ZodOptional<z.ZodArray<z.ZodObject<{
name: z.ZodString;
displayName: z.ZodString;
description: z.ZodString;
parametersSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>;
}, "strip", z.ZodTypeAny, {
name: string;
description: string;
displayName: string;
parametersSchema: Record<string, unknown>;
}, {
name: string;
description: string;
displayName: string;
parametersSchema: Record<string, unknown>;
}>, "many">>;
launchers: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
id: z.ZodString;
displayName: z.ZodString;
description: z.ZodOptional<z.ZodString>;
placementZone: z.ZodEnum<["page", "detailTab", "taskDetailView", "dashboardWidget", "sidebar", "sidebarPanel", "projectSidebarItem", "globalToolbarButton", "toolbarButton", "contextMenuItem", "commentAnnotation", "commentContextMenuItem", "settingsPage"]>;
exportName: z.ZodOptional<z.ZodString>;
entityTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["project", "issue", "agent", "goal", "run", "comment"]>, "many">>;
order: z.ZodOptional<z.ZodNumber>;
action: z.ZodEffects<z.ZodObject<{
type: z.ZodEnum<["navigate", "openModal", "openDrawer", "openPopover", "performAction", "deepLink"]>;
target: z.ZodString;
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}>, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}>;
render: z.ZodOptional<z.ZodEffects<z.ZodObject<{
environment: z.ZodEnum<["hostInline", "hostOverlay", "hostRoute", "external", "iframe"]>;
bounds: z.ZodOptional<z.ZodEnum<["inline", "compact", "default", "wide", "full"]>>;
}, "strip", z.ZodTypeAny, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}>, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}>, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}>, "many">>;
ui: z.ZodOptional<z.ZodObject<{
slots: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
type: z.ZodEnum<["page", "detailTab", "taskDetailView", "dashboardWidget", "sidebar", "sidebarPanel", "projectSidebarItem", "globalToolbarButton", "toolbarButton", "contextMenuItem", "commentAnnotation", "commentContextMenuItem", "settingsPage"]>;
id: z.ZodString;
displayName: z.ZodString;
exportName: z.ZodString;
entityTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["project", "issue", "agent", "goal", "run", "comment"]>, "many">>;
routePath: z.ZodOptional<z.ZodString>;
order: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}, {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}>, {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}, {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}>, "many">>;
launchers: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
id: z.ZodString;
displayName: z.ZodString;
description: z.ZodOptional<z.ZodString>;
placementZone: z.ZodEnum<["page", "detailTab", "taskDetailView", "dashboardWidget", "sidebar", "sidebarPanel", "projectSidebarItem", "globalToolbarButton", "toolbarButton", "contextMenuItem", "commentAnnotation", "commentContextMenuItem", "settingsPage"]>;
exportName: z.ZodOptional<z.ZodString>;
entityTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["project", "issue", "agent", "goal", "run", "comment"]>, "many">>;
order: z.ZodOptional<z.ZodNumber>;
action: z.ZodEffects<z.ZodObject<{
type: z.ZodEnum<["navigate", "openModal", "openDrawer", "openPopover", "performAction", "deepLink"]>;
target: z.ZodString;
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}>, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}, {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
}>;
render: z.ZodOptional<z.ZodEffects<z.ZodObject<{
environment: z.ZodEnum<["hostInline", "hostOverlay", "hostRoute", "external", "iframe"]>;
bounds: z.ZodOptional<z.ZodEnum<["inline", "compact", "default", "wide", "full"]>>;
}, "strip", z.ZodTypeAny, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}>, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}, {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}>, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}, {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}>, "many">>;
}, "strip", z.ZodTypeAny, {
launchers?: {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}[] | undefined;
slots?: {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}[] | undefined;
}, {
launchers?: {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}[] | undefined;
slots?: {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}[] | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
version: string;
id: string;
description: string;
capabilities: ("companies.read" | "projects.read" | "project.workspaces.read" | "issues.read" | "issue.comments.read" | "issue.documents.read" | "agents.read" | "goals.read" | "goals.create" | "goals.update" | "activity.read" | "costs.read" | "issues.create" | "issues.update" | "issue.comments.create" | "issue.documents.write" | "agents.pause" | "agents.resume" | "agents.invoke" | "agent.sessions.create" | "agent.sessions.list" | "agent.sessions.send" | "agent.sessions.close" | "activity.log.write" | "metrics.write" | "plugin.state.read" | "plugin.state.write" | "events.subscribe" | "events.emit" | "jobs.schedule" | "webhooks.receive" | "http.outbound" | "secrets.read-ref" | "agent.tools.register" | "instance.settings.register" | "ui.sidebar.register" | "ui.page.register" | "ui.detailTab.register" | "ui.dashboardWidget.register" | "ui.commentAnnotation.register" | "ui.action.register")[];
displayName: string;
apiVersion: 1;
author: string;
categories: ("automation" | "connector" | "workspace" | "ui")[];
entrypoints: {
worker: string;
ui?: string | undefined;
};
ui?: {
launchers?: {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}[] | undefined;
slots?: {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}[] | undefined;
} | undefined;
minimumHostVersion?: string | undefined;
minimumPaperclipVersion?: string | undefined;
instanceConfigSchema?: Record<string, unknown> | undefined;
jobs?: {
jobKey: string;
displayName: string;
schedule?: string | undefined;
description?: string | undefined;
}[] | undefined;
webhooks?: {
displayName: string;
endpointKey: string;
description?: string | undefined;
}[] | undefined;
tools?: {
name: string;
description: string;
displayName: string;
parametersSchema: Record<string, unknown>;
}[] | undefined;
launchers?: {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}[] | undefined;
}, {
version: string;
id: string;
description: string;
capabilities: ("companies.read" | "projects.read" | "project.workspaces.read" | "issues.read" | "issue.comments.read" | "issue.documents.read" | "agents.read" | "goals.read" | "goals.create" | "goals.update" | "activity.read" | "costs.read" | "issues.create" | "issues.update" | "issue.comments.create" | "issue.documents.write" | "agents.pause" | "agents.resume" | "agents.invoke" | "agent.sessions.create" | "agent.sessions.list" | "agent.sessions.send" | "agent.sessions.close" | "activity.log.write" | "metrics.write" | "plugin.state.read" | "plugin.state.write" | "events.subscribe" | "events.emit" | "jobs.schedule" | "webhooks.receive" | "http.outbound" | "secrets.read-ref" | "agent.tools.register" | "instance.settings.register" | "ui.sidebar.register" | "ui.page.register" | "ui.detailTab.register" | "ui.dashboardWidget.register" | "ui.commentAnnotation.register" | "ui.action.register")[];
displayName: string;
apiVersion: 1;
author: string;
categories: ("automation" | "connector" | "workspace" | "ui")[];
entrypoints: {
worker: string;
ui?: string | undefined;
};
ui?: {
launchers?: {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}[] | undefined;
slots?: {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}[] | undefined;
} | undefined;
minimumHostVersion?: string | undefined;
minimumPaperclipVersion?: string | undefined;
instanceConfigSchema?: Record<string, unknown> | undefined;
jobs?: {
jobKey: string;
displayName: string;
schedule?: string | undefined;
description?: string | undefined;
}[] | undefined;
webhooks?: {
displayName: string;
endpointKey: string;
description?: string | undefined;
}[] | undefined;
tools?: {
name: string;
description: string;
displayName: string;
parametersSchema: Record<string, unknown>;
}[] | undefined;
launchers?: {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}[] | undefined;
}>, {
version: string;
id: string;
description: string;
capabilities: ("companies.read" | "projects.read" | "project.workspaces.read" | "issues.read" | "issue.comments.read" | "issue.documents.read" | "agents.read" | "goals.read" | "goals.create" | "goals.update" | "activity.read" | "costs.read" | "issues.create" | "issues.update" | "issue.comments.create" | "issue.documents.write" | "agents.pause" | "agents.resume" | "agents.invoke" | "agent.sessions.create" | "agent.sessions.list" | "agent.sessions.send" | "agent.sessions.close" | "activity.log.write" | "metrics.write" | "plugin.state.read" | "plugin.state.write" | "events.subscribe" | "events.emit" | "jobs.schedule" | "webhooks.receive" | "http.outbound" | "secrets.read-ref" | "agent.tools.register" | "instance.settings.register" | "ui.sidebar.register" | "ui.page.register" | "ui.detailTab.register" | "ui.dashboardWidget.register" | "ui.commentAnnotation.register" | "ui.action.register")[];
displayName: string;
apiVersion: 1;
author: string;
categories: ("automation" | "connector" | "workspace" | "ui")[];
entrypoints: {
worker: string;
ui?: string | undefined;
};
ui?: {
launchers?: {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}[] | undefined;
slots?: {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}[] | undefined;
} | undefined;
minimumHostVersion?: string | undefined;
minimumPaperclipVersion?: string | undefined;
instanceConfigSchema?: Record<string, unknown> | undefined;
jobs?: {
jobKey: string;
displayName: string;
schedule?: string | undefined;
description?: string | undefined;
}[] | undefined;
webhooks?: {
displayName: string;
endpointKey: string;
description?: string | undefined;
}[] | undefined;
tools?: {
name: string;
description: string;
displayName: string;
parametersSchema: Record<string, unknown>;
}[] | undefined;
launchers?: {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}[] | undefined;
}, {
version: string;
id: string;
description: string;
capabilities: ("companies.read" | "projects.read" | "project.workspaces.read" | "issues.read" | "issue.comments.read" | "issue.documents.read" | "agents.read" | "goals.read" | "goals.create" | "goals.update" | "activity.read" | "costs.read" | "issues.create" | "issues.update" | "issue.comments.create" | "issue.documents.write" | "agents.pause" | "agents.resume" | "agents.invoke" | "agent.sessions.create" | "agent.sessions.list" | "agent.sessions.send" | "agent.sessions.close" | "activity.log.write" | "metrics.write" | "plugin.state.read" | "plugin.state.write" | "events.subscribe" | "events.emit" | "jobs.schedule" | "webhooks.receive" | "http.outbound" | "secrets.read-ref" | "agent.tools.register" | "instance.settings.register" | "ui.sidebar.register" | "ui.page.register" | "ui.detailTab.register" | "ui.dashboardWidget.register" | "ui.commentAnnotation.register" | "ui.action.register")[];
displayName: string;
apiVersion: 1;
author: string;
categories: ("automation" | "connector" | "workspace" | "ui")[];
entrypoints: {
worker: string;
ui?: string | undefined;
};
ui?: {
launchers?: {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}[] | undefined;
slots?: {
type: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
id: string;
displayName: string;
exportName: string;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
routePath?: string | undefined;
order?: number | undefined;
}[] | undefined;
} | undefined;
minimumHostVersion?: string | undefined;
minimumPaperclipVersion?: string | undefined;
instanceConfigSchema?: Record<string, unknown> | undefined;
jobs?: {
jobKey: string;
displayName: string;
schedule?: string | undefined;
description?: string | undefined;
}[] | undefined;
webhooks?: {
displayName: string;
endpointKey: string;
description?: string | undefined;
}[] | undefined;
tools?: {
name: string;
description: string;
displayName: string;
parametersSchema: Record<string, unknown>;
}[] | undefined;
launchers?: {
id: string;
action: {
target: string;
type: "navigate" | "openModal" | "openDrawer" | "openPopover" | "performAction" | "deepLink";
params?: Record<string, unknown> | undefined;
};
displayName: string;
placementZone: "page" | "detailTab" | "taskDetailView" | "dashboardWidget" | "sidebar" | "sidebarPanel" | "projectSidebarItem" | "globalToolbarButton" | "toolbarButton" | "contextMenuItem" | "commentAnnotation" | "commentContextMenuItem" | "settingsPage";
description?: string | undefined;
exportName?: string | undefined;
entityTypes?: ("agent" | "project" | "issue" | "goal" | "run" | "comment")[] | undefined;
order?: number | undefined;
render?: {
environment: "hostInline" | "hostOverlay" | "hostRoute" | "external" | "iframe";
bounds?: "inline" | "compact" | "default" | "wide" | "full" | undefined;
} | undefined;
}[] | undefined;
}>;
export type PluginManifestV1Input = z.infer<typeof pluginManifestV1Schema>;
/**
* Schema for installing (registering) a plugin.
* The server receives the packageName and resolves the manifest from the
* installed package.
*/
export declare const installPluginSchema: z.ZodObject<{
packageName: z.ZodString;
version: z.ZodOptional<z.ZodString>;
/** Set by loader for local-path installs so the worker can be resolved. */
packagePath: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
packageName: string;
version?: string | undefined;
packagePath?: string | undefined;
}, {
packageName: string;
version?: string | undefined;
packagePath?: string | undefined;
}>;
export type InstallPlugin = z.infer<typeof installPluginSchema>;
/**
* Schema for creating or updating a plugin's instance configuration.
* configJson is validated permissively here; runtime validation against
* the plugin's instanceConfigSchema is done at the service layer.
*/
export declare const upsertPluginConfigSchema: z.ZodObject<{
configJson: z.ZodRecord<z.ZodString, z.ZodUnknown>;
}, "strip", z.ZodTypeAny, {
configJson: Record<string, unknown>;
}, {
configJson: Record<string, unknown>;
}>;
export type UpsertPluginConfig = z.infer<typeof upsertPluginConfigSchema>;
/**
* Schema for partially updating a plugin's instance configuration.
* Allows a partial merge of config values.
*/
export declare const patchPluginConfigSchema: z.ZodObject<{
configJson: z.ZodRecord<z.ZodString, z.ZodUnknown>;
}, "strip", z.ZodTypeAny, {
configJson: Record<string, unknown>;
}, {
configJson: Record<string, unknown>;
}>;
export type PatchPluginConfig = z.infer<typeof patchPluginConfigSchema>;
/**
* Schema for updating a plugin's lifecycle status. Used by the lifecycle
* manager to persist state transitions.
*
* @see {@link PLUGIN_STATUSES} for the valid status values
*/
export declare const updatePluginStatusSchema: z.ZodObject<{
status: z.ZodEnum<["installed", "ready", "disabled", "error", "upgrade_pending", "uninstalled"]>;
lastError: z.ZodOptional<z.ZodNullable<z.ZodString>>;
}, "strip", z.ZodTypeAny, {
status: "error" | "installed" | "ready" | "disabled" | "upgrade_pending" | "uninstalled";
lastError?: string | null | undefined;
}, {
status: "error" | "installed" | "ready" | "disabled" | "upgrade_pending" | "uninstalled";
lastError?: string | null | undefined;
}>;
export type UpdatePluginStatus = z.infer<typeof updatePluginStatusSchema>;
/** Schema for the uninstall request. `removeData` controls hard vs soft delete. */
export declare const uninstallPluginSchema: z.ZodObject<{
removeData: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
removeData: boolean;
}, {
removeData?: boolean | undefined;
}>;
export type UninstallPlugin = z.infer<typeof uninstallPluginSchema>;
/**
* Schema for a plugin state scope key — identifies the exact location where
* state is stored. Used by the `ctx.state.get()`, `ctx.state.set()`, and
* `ctx.state.delete()` SDK methods.
*
* @see PLUGIN_SPEC.md §21.3 `plugin_state`
*/
export declare const pluginStateScopeKeySchema: z.ZodObject<{
scopeKind: z.ZodEnum<["instance", "company", "project", "project_workspace", "agent", "issue", "goal", "run"]>;
scopeId: z.ZodOptional<z.ZodString>;
namespace: z.ZodOptional<z.ZodString>;
stateKey: z.ZodString;
}, "strip", z.ZodTypeAny, {
scopeKind: "agent" | "company" | "project" | "issue" | "goal" | "run" | "instance" | "project_workspace";
stateKey: string;
scopeId?: string | undefined;
namespace?: string | undefined;
}, {
scopeKind: "agent" | "company" | "project" | "issue" | "goal" | "run" | "instance" | "project_workspace";
stateKey: string;
scopeId?: string | undefined;
namespace?: string | undefined;
}>;
export type PluginStateScopeKey = z.infer<typeof pluginStateScopeKeySchema>;
/**
* Schema for setting a plugin state value.
*/
export declare const setPluginStateSchema: z.ZodObject<{
scopeKind: z.ZodEnum<["instance", "company", "project", "project_workspace", "agent", "issue", "goal", "run"]>;
scopeId: z.ZodOptional<z.ZodString>;
namespace: z.ZodOptional<z.ZodString>;
stateKey: z.ZodString;
/** JSON-serializable value to store. */
value: z.ZodUnknown;
}, "strip", z.ZodTypeAny, {
scopeKind: "agent" | "company" | "project" | "issue" | "goal" | "run" | "instance" | "project_workspace";
stateKey: string;
value?: unknown;
scopeId?: string | undefined;
namespace?: string | undefined;
}, {
scopeKind: "agent" | "company" | "project" | "issue" | "goal" | "run" | "instance" | "project_workspace";
stateKey: string;
value?: unknown;
scopeId?: string | undefined;
namespace?: string | undefined;
}>;
export type SetPluginState = z.infer<typeof setPluginStateSchema>;
/**
* Schema for querying plugin state entries. All fields are optional to allow
* flexible list queries (e.g. all state for a plugin within a scope).
*/
export declare const listPluginStateSchema: z.ZodObject<{
scopeKind: z.ZodOptional<z.ZodEnum<["instance", "company", "project", "project_workspace", "agent", "issue", "goal", "run"]>>;
scopeId: z.ZodOptional<z.ZodString>;
namespace: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
scopeId?: string | undefined;
namespace?: string | undefined;
scopeKind?: "agent" | "company" | "project" | "issue" | "goal" | "run" | "instance" | "project_workspace" | undefined;
}, {
scopeId?: string | undefined;
namespace?: string | undefined;
scopeKind?: "agent" | "company" | "project" | "issue" | "goal" | "run" | "instance" | "project_workspace" | undefined;
}>;
export type ListPluginState = z.infer<typeof listPluginStateSchema>;
//# sourceMappingURL=plugin.d.ts.map