@quilltap/plugin-types 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,28 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.4.0] - 2026-01-02
9
+
10
+ ### Added
11
+
12
+ - Added `AnnotationButton` interface for roleplay template annotation buttons:
13
+ - `label: string` - Full name for tooltip (e.g., "Narration", "Internal Monologue")
14
+ - `abbrev: string` - Abbreviated label for button display (e.g., "Nar", "Int", "OOC")
15
+ - `prefix: string` - Opening delimiter (e.g., "[", "{", "// ")
16
+ - `suffix: string` - Closing delimiter (e.g., "]", "}", "")
17
+ - Added `annotationButtons?: AnnotationButton[]` field to `RoleplayTemplateConfig` interface
18
+ - Enables roleplay template plugins to define custom annotation formatting buttons
19
+ - Used by the Document Editing Mode formatting toolbar
20
+
21
+ ## [1.3.0] - 2026-01-02
22
+
23
+ ### Added
24
+
25
+ - Added `requiresRestart?: boolean` field to `PluginManifest` interface
26
+ - Optional field to indicate if a plugin requires a server restart to activate
27
+ - If not specified, restart requirement is inferred from capabilities (AUTH_METHODS, DATABASE_BACKEND, FILE_BACKEND, UPGRADE_MIGRATION)
28
+ - Used by hosted deployments to enforce site-wide installation for restart-requiring plugins
29
+
8
30
  ## [1.2.0] - 2025-12-31
9
31
 
10
32
  ### Added
@@ -475,6 +475,15 @@ interface PluginManifest {
475
475
  url: string;
476
476
  email?: string;
477
477
  };
478
+ /**
479
+ * Whether this plugin requires a server restart to activate.
480
+ *
481
+ * If not specified, this is inferred from capabilities:
482
+ * - AUTH_METHODS, DATABASE_BACKEND, FILE_BACKEND, UPGRADE_MIGRATION → requires restart
483
+ *
484
+ * Set explicitly to override the inferred value.
485
+ */
486
+ requiresRestart?: boolean;
478
487
  }
479
488
  /**
480
489
  * Installed plugin metadata
@@ -836,6 +845,22 @@ interface ThemePluginExport {
836
845
  *
837
846
  * @module @quilltap/plugin-types/plugins/roleplay-template
838
847
  */
848
+ /**
849
+ * Configuration for an annotation button in the formatting toolbar.
850
+ *
851
+ * Annotation buttons allow users to insert roleplay formatting
852
+ * (e.g., narration brackets, OOC markers) with a single click.
853
+ */
854
+ interface AnnotationButton {
855
+ /** Full name displayed in tooltip (e.g., "Narration", "Internal Monologue") */
856
+ label: string;
857
+ /** Abbreviated label displayed on button (e.g., "Nar", "Int", "OOC") */
858
+ abbrev: string;
859
+ /** Opening delimiter (e.g., "[", "*", "{{") */
860
+ prefix: string;
861
+ /** Closing delimiter (e.g., "]", "*", "}}") - empty string for line-end delimiters */
862
+ suffix: string;
863
+ }
839
864
  /**
840
865
  * Configuration for a single roleplay template
841
866
  *
@@ -854,6 +879,20 @@ interface RoleplayTemplateConfig {
854
879
  systemPrompt: string;
855
880
  /** Tags for categorization and searchability */
856
881
  tags?: string[];
882
+ /**
883
+ * Annotation buttons for the formatting toolbar.
884
+ * Defines which formatting options are available when document editing mode is enabled.
885
+ *
886
+ * @example
887
+ * ```typescript
888
+ * annotationButtons: [
889
+ * { label: 'Narration', abbrev: 'Nar', prefix: '[', suffix: ']' },
890
+ * { label: 'Internal Monologue', abbrev: 'Int', prefix: '{', suffix: '}' },
891
+ * { label: 'Out of Character', abbrev: 'OOC', prefix: '// ', suffix: '' },
892
+ * ]
893
+ * ```
894
+ */
895
+ annotationButtons?: AnnotationButton[];
857
896
  }
858
897
  /**
859
898
  * Metadata for a roleplay template plugin
@@ -475,6 +475,15 @@ interface PluginManifest {
475
475
  url: string;
476
476
  email?: string;
477
477
  };
478
+ /**
479
+ * Whether this plugin requires a server restart to activate.
480
+ *
481
+ * If not specified, this is inferred from capabilities:
482
+ * - AUTH_METHODS, DATABASE_BACKEND, FILE_BACKEND, UPGRADE_MIGRATION → requires restart
483
+ *
484
+ * Set explicitly to override the inferred value.
485
+ */
486
+ requiresRestart?: boolean;
478
487
  }
479
488
  /**
480
489
  * Installed plugin metadata
@@ -836,6 +845,22 @@ interface ThemePluginExport {
836
845
  *
837
846
  * @module @quilltap/plugin-types/plugins/roleplay-template
838
847
  */
848
+ /**
849
+ * Configuration for an annotation button in the formatting toolbar.
850
+ *
851
+ * Annotation buttons allow users to insert roleplay formatting
852
+ * (e.g., narration brackets, OOC markers) with a single click.
853
+ */
854
+ interface AnnotationButton {
855
+ /** Full name displayed in tooltip (e.g., "Narration", "Internal Monologue") */
856
+ label: string;
857
+ /** Abbreviated label displayed on button (e.g., "Nar", "Int", "OOC") */
858
+ abbrev: string;
859
+ /** Opening delimiter (e.g., "[", "*", "{{") */
860
+ prefix: string;
861
+ /** Closing delimiter (e.g., "]", "*", "}}") - empty string for line-end delimiters */
862
+ suffix: string;
863
+ }
839
864
  /**
840
865
  * Configuration for a single roleplay template
841
866
  *
@@ -854,6 +879,20 @@ interface RoleplayTemplateConfig {
854
879
  systemPrompt: string;
855
880
  /** Tags for categorization and searchability */
856
881
  tags?: string[];
882
+ /**
883
+ * Annotation buttons for the formatting toolbar.
884
+ * Defines which formatting options are available when document editing mode is enabled.
885
+ *
886
+ * @example
887
+ * ```typescript
888
+ * annotationButtons: [
889
+ * { label: 'Narration', abbrev: 'Nar', prefix: '[', suffix: ']' },
890
+ * { label: 'Internal Monologue', abbrev: 'Int', prefix: '{', suffix: '}' },
891
+ * { label: 'Out of Character', abbrev: 'OOC', prefix: '// ', suffix: '' },
892
+ * ]
893
+ * ```
894
+ */
895
+ annotationButtons?: AnnotationButton[];
857
896
  }
858
897
  /**
859
898
  * Metadata for a roleplay template plugin
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { AnthropicToolDefinition, AttachmentResults, CacheUsage, FileAttachment, GeneratedImage, GoogleToolDefinition, ImageGenParams, ImageGenProvider, ImageGenResponse, JSONSchemaDefinition, LLMMessage, LLMParams, LLMProvider, LLMResponse, ModelMetadata, ModelWarning, ModelWarningLevel, OpenAIToolDefinition, ResponseFormat, StreamChunk, TokenUsage, ToolCall, ToolCallRequest, ToolFormatOptions, ToolResult, UniversalTool } from './llm/index.mjs';
2
- export { A as AttachmentSupport, C as CheapModelConfig, p as ColorPalette, r as Effects, t as EmbeddedFont, E as EmbeddingModelInfo, F as FontDefinition, d as IconProps, I as ImageGenerationModelInfo, c as ImageProviderConstraints, o as InstalledPluginInfo, L as LLMProviderPlugin, f as MessageFormatSupport, M as ModelInfo, j as PluginAuthor, g as PluginCapability, h as PluginCategory, k as PluginCompatibility, n as PluginManifest, m as PluginPermissions, i as PluginStatus, b as ProviderCapabilities, l as ProviderConfig, a as ProviderConfigRequirements, P as ProviderMetadata, e as ProviderPluginExport, R as RoleplayTemplateConfig, x as RoleplayTemplateMetadata, y as RoleplayTemplatePlugin, z as RoleplayTemplatePluginExport, S as Spacing, u as ThemeMetadata, v as ThemePlugin, w as ThemePluginExport, s as ThemeTokens, T as ToolFormatType, q as Typography } from './index-DkdHzVYa.mjs';
2
+ export { A as AttachmentSupport, C as CheapModelConfig, p as ColorPalette, r as Effects, t as EmbeddedFont, E as EmbeddingModelInfo, F as FontDefinition, d as IconProps, I as ImageGenerationModelInfo, c as ImageProviderConstraints, o as InstalledPluginInfo, L as LLMProviderPlugin, f as MessageFormatSupport, M as ModelInfo, j as PluginAuthor, g as PluginCapability, h as PluginCategory, k as PluginCompatibility, n as PluginManifest, m as PluginPermissions, i as PluginStatus, b as ProviderCapabilities, l as ProviderConfig, a as ProviderConfigRequirements, P as ProviderMetadata, e as ProviderPluginExport, R as RoleplayTemplateConfig, x as RoleplayTemplateMetadata, y as RoleplayTemplatePlugin, z as RoleplayTemplatePluginExport, S as Spacing, u as ThemeMetadata, v as ThemePlugin, w as ThemePluginExport, s as ThemeTokens, T as ToolFormatType, q as Typography } from './index-BH5jVqB9.mjs';
3
3
  export { ApiKeyError, AttachmentError, ConfigurationError, LogContext, LogLevel, ModelNotFoundError, PluginError, PluginLogger, ProviderApiError, RateLimitError, ToolExecutionError, createConsoleLogger, createNoopLogger } from './common/index.mjs';
4
4
  import 'react';
5
5
 
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { AnthropicToolDefinition, AttachmentResults, CacheUsage, FileAttachment, GeneratedImage, GoogleToolDefinition, ImageGenParams, ImageGenProvider, ImageGenResponse, JSONSchemaDefinition, LLMMessage, LLMParams, LLMProvider, LLMResponse, ModelMetadata, ModelWarning, ModelWarningLevel, OpenAIToolDefinition, ResponseFormat, StreamChunk, TokenUsage, ToolCall, ToolCallRequest, ToolFormatOptions, ToolResult, UniversalTool } from './llm/index.js';
2
- export { A as AttachmentSupport, C as CheapModelConfig, p as ColorPalette, r as Effects, t as EmbeddedFont, E as EmbeddingModelInfo, F as FontDefinition, d as IconProps, I as ImageGenerationModelInfo, c as ImageProviderConstraints, o as InstalledPluginInfo, L as LLMProviderPlugin, f as MessageFormatSupport, M as ModelInfo, j as PluginAuthor, g as PluginCapability, h as PluginCategory, k as PluginCompatibility, n as PluginManifest, m as PluginPermissions, i as PluginStatus, b as ProviderCapabilities, l as ProviderConfig, a as ProviderConfigRequirements, P as ProviderMetadata, e as ProviderPluginExport, R as RoleplayTemplateConfig, x as RoleplayTemplateMetadata, y as RoleplayTemplatePlugin, z as RoleplayTemplatePluginExport, S as Spacing, u as ThemeMetadata, v as ThemePlugin, w as ThemePluginExport, s as ThemeTokens, T as ToolFormatType, q as Typography } from './index-GOH-2K-k.js';
2
+ export { A as AttachmentSupport, C as CheapModelConfig, p as ColorPalette, r as Effects, t as EmbeddedFont, E as EmbeddingModelInfo, F as FontDefinition, d as IconProps, I as ImageGenerationModelInfo, c as ImageProviderConstraints, o as InstalledPluginInfo, L as LLMProviderPlugin, f as MessageFormatSupport, M as ModelInfo, j as PluginAuthor, g as PluginCapability, h as PluginCategory, k as PluginCompatibility, n as PluginManifest, m as PluginPermissions, i as PluginStatus, b as ProviderCapabilities, l as ProviderConfig, a as ProviderConfigRequirements, P as ProviderMetadata, e as ProviderPluginExport, R as RoleplayTemplateConfig, x as RoleplayTemplateMetadata, y as RoleplayTemplatePlugin, z as RoleplayTemplatePluginExport, S as Spacing, u as ThemeMetadata, v as ThemePlugin, w as ThemePluginExport, s as ThemeTokens, T as ToolFormatType, q as Typography } from './index-C0tKQeeQ.js';
3
3
  export { ApiKeyError, AttachmentError, ConfigurationError, LogContext, LogLevel, ModelNotFoundError, PluginError, PluginLogger, ProviderApiError, RateLimitError, ToolExecutionError, createConsoleLogger, createNoopLogger } from './common/index.js';
4
4
  import 'react';
5
5
 
@@ -1,3 +1,3 @@
1
- export { A as AttachmentSupport, p as ColorPalette, r as Effects, t as EmbeddedFont, E as EmbeddingModelInfo, F as FontDefinition, d as IconProps, I as ImageGenerationModelInfo, c as ImageProviderConstraints, o as InstalledPluginInfo, L as LLMProviderPlugin, M as ModelInfo, j as PluginAuthor, g as PluginCapability, h as PluginCategory, k as PluginCompatibility, n as PluginManifest, m as PluginPermissions, i as PluginStatus, b as ProviderCapabilities, l as ProviderConfig, a as ProviderConfigRequirements, P as ProviderMetadata, e as ProviderPluginExport, R as RoleplayTemplateConfig, x as RoleplayTemplateMetadata, y as RoleplayTemplatePlugin, z as RoleplayTemplatePluginExport, S as Spacing, u as ThemeMetadata, v as ThemePlugin, w as ThemePluginExport, s as ThemeTokens, q as Typography } from '../index-DkdHzVYa.mjs';
1
+ export { A as AttachmentSupport, p as ColorPalette, r as Effects, t as EmbeddedFont, E as EmbeddingModelInfo, F as FontDefinition, d as IconProps, I as ImageGenerationModelInfo, c as ImageProviderConstraints, o as InstalledPluginInfo, L as LLMProviderPlugin, M as ModelInfo, j as PluginAuthor, g as PluginCapability, h as PluginCategory, k as PluginCompatibility, n as PluginManifest, m as PluginPermissions, i as PluginStatus, b as ProviderCapabilities, l as ProviderConfig, a as ProviderConfigRequirements, P as ProviderMetadata, e as ProviderPluginExport, R as RoleplayTemplateConfig, x as RoleplayTemplateMetadata, y as RoleplayTemplatePlugin, z as RoleplayTemplatePluginExport, S as Spacing, u as ThemeMetadata, v as ThemePlugin, w as ThemePluginExport, s as ThemeTokens, q as Typography } from '../index-BH5jVqB9.mjs';
2
2
  import 'react';
3
3
  import '../llm/index.mjs';
@@ -1,3 +1,3 @@
1
- export { A as AttachmentSupport, p as ColorPalette, r as Effects, t as EmbeddedFont, E as EmbeddingModelInfo, F as FontDefinition, d as IconProps, I as ImageGenerationModelInfo, c as ImageProviderConstraints, o as InstalledPluginInfo, L as LLMProviderPlugin, M as ModelInfo, j as PluginAuthor, g as PluginCapability, h as PluginCategory, k as PluginCompatibility, n as PluginManifest, m as PluginPermissions, i as PluginStatus, b as ProviderCapabilities, l as ProviderConfig, a as ProviderConfigRequirements, P as ProviderMetadata, e as ProviderPluginExport, R as RoleplayTemplateConfig, x as RoleplayTemplateMetadata, y as RoleplayTemplatePlugin, z as RoleplayTemplatePluginExport, S as Spacing, u as ThemeMetadata, v as ThemePlugin, w as ThemePluginExport, s as ThemeTokens, q as Typography } from '../index-GOH-2K-k.js';
1
+ export { A as AttachmentSupport, p as ColorPalette, r as Effects, t as EmbeddedFont, E as EmbeddingModelInfo, F as FontDefinition, d as IconProps, I as ImageGenerationModelInfo, c as ImageProviderConstraints, o as InstalledPluginInfo, L as LLMProviderPlugin, M as ModelInfo, j as PluginAuthor, g as PluginCapability, h as PluginCategory, k as PluginCompatibility, n as PluginManifest, m as PluginPermissions, i as PluginStatus, b as ProviderCapabilities, l as ProviderConfig, a as ProviderConfigRequirements, P as ProviderMetadata, e as ProviderPluginExport, R as RoleplayTemplateConfig, x as RoleplayTemplateMetadata, y as RoleplayTemplatePlugin, z as RoleplayTemplatePluginExport, S as Spacing, u as ThemeMetadata, v as ThemePlugin, w as ThemePluginExport, s as ThemeTokens, q as Typography } from '../index-C0tKQeeQ.js';
2
2
  import 'react';
3
3
  import '../llm/index.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quilltap/plugin-types",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Type definitions for Quilltap plugin development",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",