@quilltap/plugin-types 1.15.0 → 1.15.1
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 +8 -0
- package/dist/{index-XZ8WkWjp.d.ts → index-CyhMLv4V.d.ts} +4 -4
- package/dist/{index-BmwJBg_D.d.mts → index-vNgVyj-N.d.mts} +4 -4
- package/dist/index.d.mts +3 -313
- package/dist/index.d.ts +3 -313
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/plugins/index.d.mts +1 -1
- package/dist/plugins/index.d.ts +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,14 @@ 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.15.1] - 2026-02-23
|
|
9
|
+
|
|
10
|
+
### Removed
|
|
11
|
+
|
|
12
|
+
- **Breaking:** Removed `FILE_BACKEND` / `STORAGE_BACKEND` plugin capability and `STORAGE` plugin category
|
|
13
|
+
- Removed all file-storage plugin types: `FileBackendCapabilities`, `FileBackendMetadata`, `FileMetadata`, `FileStorageBackend`, `FileStorageConfigField`, `FileStorageProviderPlugin`, `FileStoragePluginExport`
|
|
14
|
+
- Removed `FILE_BACKEND` from the `requiresRestart` inference list in `PluginManifest`
|
|
15
|
+
|
|
8
16
|
## [1.14.0] - 2026-02-10
|
|
9
17
|
|
|
10
18
|
### Added
|
|
@@ -459,11 +459,11 @@ interface ProviderPluginExport {
|
|
|
459
459
|
/**
|
|
460
460
|
* Plugin capability types
|
|
461
461
|
*/
|
|
462
|
-
type PluginCapability = 'LLM_PROVIDER' | 'AUTH_PROVIDER' | '
|
|
462
|
+
type PluginCapability = 'LLM_PROVIDER' | 'AUTH_PROVIDER' | 'THEME' | 'ROLEPLAY_TEMPLATE' | 'TOOL_PROVIDER' | 'SEARCH_PROVIDER' | 'UTILITY';
|
|
463
463
|
/**
|
|
464
464
|
* Plugin category
|
|
465
465
|
*/
|
|
466
|
-
type PluginCategory = 'PROVIDER' | 'AUTH' | '
|
|
466
|
+
type PluginCategory = 'PROVIDER' | 'AUTH' | 'UI' | 'TEMPLATE' | 'TOOLS' | 'UTILITY';
|
|
467
467
|
/**
|
|
468
468
|
* Plugin status
|
|
469
469
|
*/
|
|
@@ -636,7 +636,7 @@ interface PluginManifest {
|
|
|
636
636
|
* Whether this plugin requires a server restart to activate.
|
|
637
637
|
*
|
|
638
638
|
* If not specified, this is inferred from capabilities:
|
|
639
|
-
* - AUTH_METHODS, DATABASE_BACKEND,
|
|
639
|
+
* - AUTH_METHODS, DATABASE_BACKEND, UPGRADE_MIGRATION → requires restart
|
|
640
640
|
*
|
|
641
641
|
* Set explicitly to override the inferred value.
|
|
642
642
|
*/
|
|
@@ -1005,7 +1005,7 @@ interface ThemePlugin {
|
|
|
1005
1005
|
* Allows a theme to rename, re-describe, or re-image any of the
|
|
1006
1006
|
* Foundry subsystem pages. Keys are subsystem IDs:
|
|
1007
1007
|
* 'foundry' | 'aurora' | 'forge' | 'salon' | 'commonplace-book' |
|
|
1008
|
-
* 'prospero' | 'dangermouse' | 'calliope' | 'lantern'
|
|
1008
|
+
* 'prospero' | 'dangermouse' | 'calliope' | 'lantern' | 'pascal' | 'saquel'
|
|
1009
1009
|
*/
|
|
1010
1010
|
subsystems?: Partial<Record<string, SubsystemOverrides>>;
|
|
1011
1011
|
/**
|
|
@@ -459,11 +459,11 @@ interface ProviderPluginExport {
|
|
|
459
459
|
/**
|
|
460
460
|
* Plugin capability types
|
|
461
461
|
*/
|
|
462
|
-
type PluginCapability = 'LLM_PROVIDER' | 'AUTH_PROVIDER' | '
|
|
462
|
+
type PluginCapability = 'LLM_PROVIDER' | 'AUTH_PROVIDER' | 'THEME' | 'ROLEPLAY_TEMPLATE' | 'TOOL_PROVIDER' | 'SEARCH_PROVIDER' | 'UTILITY';
|
|
463
463
|
/**
|
|
464
464
|
* Plugin category
|
|
465
465
|
*/
|
|
466
|
-
type PluginCategory = 'PROVIDER' | 'AUTH' | '
|
|
466
|
+
type PluginCategory = 'PROVIDER' | 'AUTH' | 'UI' | 'TEMPLATE' | 'TOOLS' | 'UTILITY';
|
|
467
467
|
/**
|
|
468
468
|
* Plugin status
|
|
469
469
|
*/
|
|
@@ -636,7 +636,7 @@ interface PluginManifest {
|
|
|
636
636
|
* Whether this plugin requires a server restart to activate.
|
|
637
637
|
*
|
|
638
638
|
* If not specified, this is inferred from capabilities:
|
|
639
|
-
* - AUTH_METHODS, DATABASE_BACKEND,
|
|
639
|
+
* - AUTH_METHODS, DATABASE_BACKEND, UPGRADE_MIGRATION → requires restart
|
|
640
640
|
*
|
|
641
641
|
* Set explicitly to override the inferred value.
|
|
642
642
|
*/
|
|
@@ -1005,7 +1005,7 @@ interface ThemePlugin {
|
|
|
1005
1005
|
* Allows a theme to rename, re-describe, or re-image any of the
|
|
1006
1006
|
* Foundry subsystem pages. Keys are subsystem IDs:
|
|
1007
1007
|
* 'foundry' | 'aurora' | 'forge' | 'salon' | 'commonplace-book' |
|
|
1008
|
-
* 'prospero' | 'dangermouse' | 'calliope' | 'lantern'
|
|
1008
|
+
* 'prospero' | 'dangermouse' | 'calliope' | 'lantern' | 'pascal' | 'saquel'
|
|
1009
1009
|
*/
|
|
1010
1010
|
subsystems?: Partial<Record<string, SubsystemOverrides>>;
|
|
1011
1011
|
/**
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { UniversalTool } from './llm/index.mjs';
|
|
2
2
|
export { AnthropicToolDefinition, AttachmentResults, CacheUsage, EmbeddingOptions, EmbeddingProvider, EmbeddingResult, FileAttachment, GeneratedImage, GoogleToolDefinition, ImageGenParams, ImageGenProvider, ImageGenResponse, JSONSchemaDefinition, LLMMessage, LLMParams, LLMProvider, LLMResponse, LocalEmbeddingProvider, LocalEmbeddingProviderState, ModelMetadata, ModelWarning, ModelWarningLevel, OpenAIToolDefinition, ResponseFormat, StreamChunk, TokenUsage, ToolCall, ToolCallRequest, ToolFormatOptions, ToolResult, isLocalEmbeddingProvider } from './llm/index.mjs';
|
|
3
|
-
export { A as AttachmentSupport, C as CheapModelConfig, a as ColorPalette, E as Effects, b as EmbeddedFont, c as EmbeddingModelInfo, F as FontDefinition, I as IconProps, d as ImageGenerationModelInfo, e as ImageProviderConstraints, f as ImageStyleInfo, g as InstalledPluginInfo, L as LLMProviderPlugin, M as MessageFormatSupport, h as ModelInfo, P as PluginAuthor, i as PluginCapability, j as PluginCategory, k as PluginCompatibility, l as PluginIconData, m as PluginManifest, n as PluginPermissions, o as PluginStatus, p as ProviderCapabilities, q as ProviderConfig, r as ProviderConfigRequirements, s as ProviderMetadata, t as ProviderPluginExport, R as RoleplayTemplateConfig, u as RoleplayTemplateMetadata, v as RoleplayTemplatePlugin, w as RoleplayTemplatePluginExport, S as SearchOutput, x as SearchProviderConfig, y as SearchProviderConfigRequirements, z as SearchProviderMetadata, B as SearchProviderPlugin, D as SearchProviderPluginExport, G as SearchResult, H as Spacing, J as SubsystemOverrides, T as ThemeMetadata, K as ThemePlugin, N as ThemePluginExport, O as ThemeTokens, Q as ToolFormatType, U as Typography } from './index-
|
|
4
|
-
import { Readable } from 'stream';
|
|
3
|
+
export { A as AttachmentSupport, C as CheapModelConfig, a as ColorPalette, E as Effects, b as EmbeddedFont, c as EmbeddingModelInfo, F as FontDefinition, I as IconProps, d as ImageGenerationModelInfo, e as ImageProviderConstraints, f as ImageStyleInfo, g as InstalledPluginInfo, L as LLMProviderPlugin, M as MessageFormatSupport, h as ModelInfo, P as PluginAuthor, i as PluginCapability, j as PluginCategory, k as PluginCompatibility, l as PluginIconData, m as PluginManifest, n as PluginPermissions, o as PluginStatus, p as ProviderCapabilities, q as ProviderConfig, r as ProviderConfigRequirements, s as ProviderMetadata, t as ProviderPluginExport, R as RoleplayTemplateConfig, u as RoleplayTemplateMetadata, v as RoleplayTemplatePlugin, w as RoleplayTemplatePluginExport, S as SearchOutput, x as SearchProviderConfig, y as SearchProviderConfigRequirements, z as SearchProviderMetadata, B as SearchProviderPlugin, D as SearchProviderPluginExport, G as SearchResult, H as Spacing, J as SubsystemOverrides, T as ThemeMetadata, K as ThemePlugin, N as ThemePluginExport, O as ThemeTokens, Q as ToolFormatType, U as Typography } from './index-vNgVyj-N.mjs';
|
|
5
4
|
export { ApiKeyError, AttachmentError, ConfigurationError, LogContext, LogLevel, ModelNotFoundError, PluginError, PluginLogger, ProviderApiError, RateLimitError, ToolExecutionError, createConsoleLogger, createNoopLogger } from './common/index.mjs';
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -255,315 +254,6 @@ interface ToolPluginExport {
|
|
|
255
254
|
plugin: ToolPlugin;
|
|
256
255
|
}
|
|
257
256
|
|
|
258
|
-
/**
|
|
259
|
-
* File Storage Plugin types for Quilltap plugin development
|
|
260
|
-
*
|
|
261
|
-
* Defines the interfaces and types needed to create custom file storage
|
|
262
|
-
* backend providers as Quilltap plugins.
|
|
263
|
-
*
|
|
264
|
-
* @module @quilltap/plugin-types/plugins/file-storage
|
|
265
|
-
*/
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* Describes what features a storage backend supports
|
|
269
|
-
*/
|
|
270
|
-
interface FileBackendCapabilities {
|
|
271
|
-
/** Whether the backend supports presigned URLs for direct access */
|
|
272
|
-
presignedUrls: boolean;
|
|
273
|
-
/** Whether the backend supports public URLs (no authentication required) */
|
|
274
|
-
publicUrls: boolean;
|
|
275
|
-
/** Whether the backend supports streaming uploads */
|
|
276
|
-
streamingUpload: boolean;
|
|
277
|
-
/** Whether the backend supports streaming downloads */
|
|
278
|
-
streamingDownload: boolean;
|
|
279
|
-
/** Whether the backend supports copying files between locations */
|
|
280
|
-
copy: boolean;
|
|
281
|
-
/** Whether the backend supports listing files in a prefix/directory */
|
|
282
|
-
list: boolean;
|
|
283
|
-
/** Whether the backend supports retrieving file metadata */
|
|
284
|
-
metadata: boolean;
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Metadata about a file storage backend
|
|
288
|
-
*/
|
|
289
|
-
interface FileBackendMetadata {
|
|
290
|
-
/** Unique identifier for this provider */
|
|
291
|
-
providerId: string;
|
|
292
|
-
/** Human-readable display name for UI */
|
|
293
|
-
displayName: string;
|
|
294
|
-
/** Description of the storage backend */
|
|
295
|
-
description: string;
|
|
296
|
-
/** Capabilities supported by this backend */
|
|
297
|
-
capabilities: FileBackendCapabilities;
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Metadata about a stored file
|
|
301
|
-
*/
|
|
302
|
-
interface FileMetadata {
|
|
303
|
-
/** Size in bytes */
|
|
304
|
-
size: number;
|
|
305
|
-
/** MIME type */
|
|
306
|
-
contentType: string;
|
|
307
|
-
/** Last modified timestamp */
|
|
308
|
-
lastModified: Date;
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Interface for a file storage backend implementation
|
|
312
|
-
*
|
|
313
|
-
* Plugins implementing this interface can provide custom storage backends
|
|
314
|
-
* such as S3, Google Cloud Storage, Azure Blob Storage, etc.
|
|
315
|
-
*/
|
|
316
|
-
interface FileStorageBackend {
|
|
317
|
-
/**
|
|
318
|
-
* Get metadata about this storage backend
|
|
319
|
-
*
|
|
320
|
-
* @returns Backend metadata including capabilities
|
|
321
|
-
*/
|
|
322
|
-
getMetadata(): FileBackendMetadata;
|
|
323
|
-
/**
|
|
324
|
-
* Test the connection to the storage backend
|
|
325
|
-
*
|
|
326
|
-
* Verifies that the backend is properly configured and accessible.
|
|
327
|
-
* This is called during plugin initialization and setup verification.
|
|
328
|
-
*
|
|
329
|
-
* @returns Promise resolving to connection test result
|
|
330
|
-
*/
|
|
331
|
-
testConnection(): Promise<{
|
|
332
|
-
success: boolean;
|
|
333
|
-
message: string;
|
|
334
|
-
latencyMs?: number;
|
|
335
|
-
}>;
|
|
336
|
-
/**
|
|
337
|
-
* Upload a file to storage
|
|
338
|
-
*
|
|
339
|
-
* @param key The storage key/path for the file
|
|
340
|
-
* @param body The file content as Buffer or Readable stream
|
|
341
|
-
* @param contentType MIME type of the file
|
|
342
|
-
* @param metadata Optional custom metadata to store with the file
|
|
343
|
-
*/
|
|
344
|
-
upload(key: string, body: Buffer | Readable, contentType: string, metadata?: Record<string, string>): Promise<void>;
|
|
345
|
-
/**
|
|
346
|
-
* Download a file from storage
|
|
347
|
-
*
|
|
348
|
-
* @param key The storage key/path of the file
|
|
349
|
-
* @returns Promise resolving to the file content as Buffer
|
|
350
|
-
*/
|
|
351
|
-
download(key: string): Promise<Buffer>;
|
|
352
|
-
/**
|
|
353
|
-
* Delete a file from storage
|
|
354
|
-
*
|
|
355
|
-
* @param key The storage key/path of the file
|
|
356
|
-
*/
|
|
357
|
-
delete(key: string): Promise<void>;
|
|
358
|
-
/**
|
|
359
|
-
* Check if a file exists in storage
|
|
360
|
-
*
|
|
361
|
-
* @param key The storage key/path to check
|
|
362
|
-
* @returns Promise resolving to true if file exists, false otherwise
|
|
363
|
-
*/
|
|
364
|
-
exists(key: string): Promise<boolean>;
|
|
365
|
-
/**
|
|
366
|
-
* Get a URL that can be used to access the file through the application proxy
|
|
367
|
-
*
|
|
368
|
-
* This is the primary URL used by Quilltap to serve files to users.
|
|
369
|
-
* It should point back to the Quilltap application, not directly to the
|
|
370
|
-
* storage provider.
|
|
371
|
-
*
|
|
372
|
-
* @param key The storage key/path of the file
|
|
373
|
-
* @returns The proxy URL for accessing the file
|
|
374
|
-
*/
|
|
375
|
-
getProxyUrl(key: string): string;
|
|
376
|
-
/**
|
|
377
|
-
* Copy a file from one location to another
|
|
378
|
-
*
|
|
379
|
-
* Only required if capabilities.copy is true
|
|
380
|
-
*
|
|
381
|
-
* @param sourceKey The source storage key/path
|
|
382
|
-
* @param destinationKey The destination storage key/path
|
|
383
|
-
*/
|
|
384
|
-
copy?(sourceKey: string, destinationKey: string): Promise<void>;
|
|
385
|
-
/**
|
|
386
|
-
* Get metadata about a stored file
|
|
387
|
-
*
|
|
388
|
-
* Only required if capabilities.metadata is true
|
|
389
|
-
*
|
|
390
|
-
* @param key The storage key/path of the file
|
|
391
|
-
* @returns Promise resolving to file metadata or null if file doesn't exist
|
|
392
|
-
*/
|
|
393
|
-
getFileMetadata?(key: string): Promise<FileMetadata | null>;
|
|
394
|
-
/**
|
|
395
|
-
* List files in a prefix/directory
|
|
396
|
-
*
|
|
397
|
-
* Only required if capabilities.list is true
|
|
398
|
-
*
|
|
399
|
-
* @param prefix The prefix or directory to list
|
|
400
|
-
* @param maxKeys Optional maximum number of keys to return
|
|
401
|
-
* @returns Promise resolving to array of keys
|
|
402
|
-
*/
|
|
403
|
-
list?(prefix: string, maxKeys?: number): Promise<string[]>;
|
|
404
|
-
/**
|
|
405
|
-
* Get a presigned URL for direct access to the file
|
|
406
|
-
*
|
|
407
|
-
* The returned URL can be used by clients to access the file directly
|
|
408
|
-
* without going through the Quilltap application, and will expire
|
|
409
|
-
* after the specified time.
|
|
410
|
-
*
|
|
411
|
-
* Only required if capabilities.presignedUrls is true
|
|
412
|
-
*
|
|
413
|
-
* @param key The storage key/path of the file
|
|
414
|
-
* @param expiresIn Expiration time in seconds (default 3600)
|
|
415
|
-
* @returns Promise resolving to presigned URL
|
|
416
|
-
*/
|
|
417
|
-
getPresignedUrl?(key: string, expiresIn?: number): Promise<string>;
|
|
418
|
-
/**
|
|
419
|
-
* Get a presigned URL for uploading a file directly
|
|
420
|
-
*
|
|
421
|
-
* The returned URL can be used by clients to upload a file directly
|
|
422
|
-
* to storage without going through the Quilltap application.
|
|
423
|
-
*
|
|
424
|
-
* Only required if capabilities.presignedUrls is true
|
|
425
|
-
*
|
|
426
|
-
* @param key The storage key/path where the file will be stored
|
|
427
|
-
* @param contentType The MIME type of the file being uploaded
|
|
428
|
-
* @param expiresIn Expiration time in seconds (default 3600)
|
|
429
|
-
* @returns Promise resolving to presigned upload URL
|
|
430
|
-
*/
|
|
431
|
-
getPresignedUploadUrl?(key: string, contentType: string, expiresIn?: number): Promise<string>;
|
|
432
|
-
/**
|
|
433
|
-
* Get a public URL for the file
|
|
434
|
-
*
|
|
435
|
-
* The returned URL is permanent and requires no authentication.
|
|
436
|
-
* Only call this if the file is intended to be publicly accessible.
|
|
437
|
-
*
|
|
438
|
-
* Only required if capabilities.publicUrls is true
|
|
439
|
-
*
|
|
440
|
-
* @param key The storage key/path of the file
|
|
441
|
-
* @returns Promise resolving to public URL
|
|
442
|
-
*/
|
|
443
|
-
getPublicUrl?(key: string): Promise<string>;
|
|
444
|
-
}
|
|
445
|
-
/**
|
|
446
|
-
* Definition of a configuration field for a file storage plugin
|
|
447
|
-
*
|
|
448
|
-
* Used to generate the UI form for configuring the plugin.
|
|
449
|
-
*/
|
|
450
|
-
interface FileStorageConfigField {
|
|
451
|
-
/** Field name (used as key in config object) */
|
|
452
|
-
name: string;
|
|
453
|
-
/** Label displayed in the UI */
|
|
454
|
-
label: string;
|
|
455
|
-
/** Input type for this field */
|
|
456
|
-
type: 'string' | 'number' | 'boolean' | 'secret';
|
|
457
|
-
/** Whether this field is required */
|
|
458
|
-
required: boolean;
|
|
459
|
-
/** Description or help text for the field */
|
|
460
|
-
description?: string;
|
|
461
|
-
/** Default value for the field */
|
|
462
|
-
defaultValue?: string | number | boolean;
|
|
463
|
-
/** Placeholder text for input fields */
|
|
464
|
-
placeholder?: string;
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* File Storage Provider Plugin Interface
|
|
468
|
-
*
|
|
469
|
-
* Plugins implementing this interface can provide custom file storage backends
|
|
470
|
-
* to Quilltap, enabling support for different storage providers.
|
|
471
|
-
*
|
|
472
|
-
* @example
|
|
473
|
-
* ```typescript
|
|
474
|
-
* import type { FileStorageProviderPlugin, FileStorageBackend } from '@quilltap/plugin-types';
|
|
475
|
-
* import { S3Client } from '@aws-sdk/client-s3';
|
|
476
|
-
*
|
|
477
|
-
* const s3Plugin: FileStorageProviderPlugin = {
|
|
478
|
-
* metadata: {
|
|
479
|
-
* backendId: 's3',
|
|
480
|
-
* displayName: 'Amazon S3',
|
|
481
|
-
* description: 'Store files in Amazon S3',
|
|
482
|
-
* },
|
|
483
|
-
* configSchema: [
|
|
484
|
-
* {
|
|
485
|
-
* name: 'accessKeyId',
|
|
486
|
-
* label: 'Access Key ID',
|
|
487
|
-
* type: 'secret',
|
|
488
|
-
* required: true,
|
|
489
|
-
* },
|
|
490
|
-
* // ... more fields
|
|
491
|
-
* ],
|
|
492
|
-
* createBackend: (config) => {
|
|
493
|
-
* return new S3StorageBackend(config);
|
|
494
|
-
* },
|
|
495
|
-
* validateConfig: async (config) => {
|
|
496
|
-
* // Validate configuration
|
|
497
|
-
* return { valid: true };
|
|
498
|
-
* },
|
|
499
|
-
* };
|
|
500
|
-
*
|
|
501
|
-
* export const plugin = s3Plugin;
|
|
502
|
-
* ```
|
|
503
|
-
*/
|
|
504
|
-
interface FileStorageProviderPlugin {
|
|
505
|
-
/**
|
|
506
|
-
* Metadata identifying this plugin
|
|
507
|
-
*/
|
|
508
|
-
metadata: {
|
|
509
|
-
/** Unique identifier for the backend (e.g., 's3', 'gcs', 'azure') */
|
|
510
|
-
backendId: string;
|
|
511
|
-
/** Human-readable display name for UI */
|
|
512
|
-
displayName: string;
|
|
513
|
-
/** Description of what this plugin provides */
|
|
514
|
-
description: string;
|
|
515
|
-
};
|
|
516
|
-
/**
|
|
517
|
-
* Configuration schema for this plugin
|
|
518
|
-
*
|
|
519
|
-
* Defines the fields that users need to configure to use this storage backend.
|
|
520
|
-
* Used to generate the configuration UI form.
|
|
521
|
-
*/
|
|
522
|
-
configSchema: FileStorageConfigField[];
|
|
523
|
-
/**
|
|
524
|
-
* Create a backend instance with the given configuration
|
|
525
|
-
*
|
|
526
|
-
* @param config Configuration object from user input
|
|
527
|
-
* @returns A new FileStorageBackend instance
|
|
528
|
-
*/
|
|
529
|
-
createBackend(config: Record<string, unknown>): FileStorageBackend;
|
|
530
|
-
/**
|
|
531
|
-
* Validate plugin configuration
|
|
532
|
-
*
|
|
533
|
-
* Checks whether the provided configuration is valid for this plugin.
|
|
534
|
-
* Can perform more thorough validation than what's possible with just
|
|
535
|
-
* the config schema (e.g., connecting to the service to verify credentials).
|
|
536
|
-
*
|
|
537
|
-
* @param config Configuration object to validate
|
|
538
|
-
* @returns Promise resolving to validation result
|
|
539
|
-
*/
|
|
540
|
-
validateConfig(config: Record<string, unknown>): Promise<{
|
|
541
|
-
valid: boolean;
|
|
542
|
-
errors?: string[];
|
|
543
|
-
}>;
|
|
544
|
-
}
|
|
545
|
-
/**
|
|
546
|
-
* Standard export type for file storage plugins
|
|
547
|
-
*
|
|
548
|
-
* This is the expected export structure from file storage plugin modules.
|
|
549
|
-
*
|
|
550
|
-
* @example
|
|
551
|
-
* ```typescript
|
|
552
|
-
* // In plugin-s3/index.ts
|
|
553
|
-
* export const plugin: FileStorageProviderPlugin = { ... };
|
|
554
|
-
*
|
|
555
|
-
* // Or with the export type:
|
|
556
|
-
* const pluginExport: FileStoragePluginExport = {
|
|
557
|
-
* plugin: { ... }
|
|
558
|
-
* };
|
|
559
|
-
* export default pluginExport;
|
|
560
|
-
* ```
|
|
561
|
-
*/
|
|
562
|
-
interface FileStoragePluginExport {
|
|
563
|
-
/** The file storage plugin instance */
|
|
564
|
-
plugin: FileStorageProviderPlugin;
|
|
565
|
-
}
|
|
566
|
-
|
|
567
257
|
/**
|
|
568
258
|
* @quilltap/plugin-types
|
|
569
259
|
*
|
|
@@ -581,6 +271,6 @@ interface FileStoragePluginExport {
|
|
|
581
271
|
* Version of the plugin-types package.
|
|
582
272
|
* Can be used at runtime to check compatibility.
|
|
583
273
|
*/
|
|
584
|
-
declare const PLUGIN_TYPES_VERSION = "1.
|
|
274
|
+
declare const PLUGIN_TYPES_VERSION = "1.15.1";
|
|
585
275
|
|
|
586
|
-
export {
|
|
276
|
+
export { PLUGIN_TYPES_VERSION, type ToolExecutionContext, type ToolExecutionResult, type ToolHierarchyInfo, type ToolMetadata, type ToolPlugin, type ToolPluginExport, UniversalTool };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { UniversalTool } from './llm/index.js';
|
|
2
2
|
export { AnthropicToolDefinition, AttachmentResults, CacheUsage, EmbeddingOptions, EmbeddingProvider, EmbeddingResult, FileAttachment, GeneratedImage, GoogleToolDefinition, ImageGenParams, ImageGenProvider, ImageGenResponse, JSONSchemaDefinition, LLMMessage, LLMParams, LLMProvider, LLMResponse, LocalEmbeddingProvider, LocalEmbeddingProviderState, ModelMetadata, ModelWarning, ModelWarningLevel, OpenAIToolDefinition, ResponseFormat, StreamChunk, TokenUsage, ToolCall, ToolCallRequest, ToolFormatOptions, ToolResult, isLocalEmbeddingProvider } from './llm/index.js';
|
|
3
|
-
export { A as AttachmentSupport, C as CheapModelConfig, a as ColorPalette, E as Effects, b as EmbeddedFont, c as EmbeddingModelInfo, F as FontDefinition, I as IconProps, d as ImageGenerationModelInfo, e as ImageProviderConstraints, f as ImageStyleInfo, g as InstalledPluginInfo, L as LLMProviderPlugin, M as MessageFormatSupport, h as ModelInfo, P as PluginAuthor, i as PluginCapability, j as PluginCategory, k as PluginCompatibility, l as PluginIconData, m as PluginManifest, n as PluginPermissions, o as PluginStatus, p as ProviderCapabilities, q as ProviderConfig, r as ProviderConfigRequirements, s as ProviderMetadata, t as ProviderPluginExport, R as RoleplayTemplateConfig, u as RoleplayTemplateMetadata, v as RoleplayTemplatePlugin, w as RoleplayTemplatePluginExport, S as SearchOutput, x as SearchProviderConfig, y as SearchProviderConfigRequirements, z as SearchProviderMetadata, B as SearchProviderPlugin, D as SearchProviderPluginExport, G as SearchResult, H as Spacing, J as SubsystemOverrides, T as ThemeMetadata, K as ThemePlugin, N as ThemePluginExport, O as ThemeTokens, Q as ToolFormatType, U as Typography } from './index-
|
|
4
|
-
import { Readable } from 'stream';
|
|
3
|
+
export { A as AttachmentSupport, C as CheapModelConfig, a as ColorPalette, E as Effects, b as EmbeddedFont, c as EmbeddingModelInfo, F as FontDefinition, I as IconProps, d as ImageGenerationModelInfo, e as ImageProviderConstraints, f as ImageStyleInfo, g as InstalledPluginInfo, L as LLMProviderPlugin, M as MessageFormatSupport, h as ModelInfo, P as PluginAuthor, i as PluginCapability, j as PluginCategory, k as PluginCompatibility, l as PluginIconData, m as PluginManifest, n as PluginPermissions, o as PluginStatus, p as ProviderCapabilities, q as ProviderConfig, r as ProviderConfigRequirements, s as ProviderMetadata, t as ProviderPluginExport, R as RoleplayTemplateConfig, u as RoleplayTemplateMetadata, v as RoleplayTemplatePlugin, w as RoleplayTemplatePluginExport, S as SearchOutput, x as SearchProviderConfig, y as SearchProviderConfigRequirements, z as SearchProviderMetadata, B as SearchProviderPlugin, D as SearchProviderPluginExport, G as SearchResult, H as Spacing, J as SubsystemOverrides, T as ThemeMetadata, K as ThemePlugin, N as ThemePluginExport, O as ThemeTokens, Q as ToolFormatType, U as Typography } from './index-CyhMLv4V.js';
|
|
5
4
|
export { ApiKeyError, AttachmentError, ConfigurationError, LogContext, LogLevel, ModelNotFoundError, PluginError, PluginLogger, ProviderApiError, RateLimitError, ToolExecutionError, createConsoleLogger, createNoopLogger } from './common/index.js';
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -255,315 +254,6 @@ interface ToolPluginExport {
|
|
|
255
254
|
plugin: ToolPlugin;
|
|
256
255
|
}
|
|
257
256
|
|
|
258
|
-
/**
|
|
259
|
-
* File Storage Plugin types for Quilltap plugin development
|
|
260
|
-
*
|
|
261
|
-
* Defines the interfaces and types needed to create custom file storage
|
|
262
|
-
* backend providers as Quilltap plugins.
|
|
263
|
-
*
|
|
264
|
-
* @module @quilltap/plugin-types/plugins/file-storage
|
|
265
|
-
*/
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* Describes what features a storage backend supports
|
|
269
|
-
*/
|
|
270
|
-
interface FileBackendCapabilities {
|
|
271
|
-
/** Whether the backend supports presigned URLs for direct access */
|
|
272
|
-
presignedUrls: boolean;
|
|
273
|
-
/** Whether the backend supports public URLs (no authentication required) */
|
|
274
|
-
publicUrls: boolean;
|
|
275
|
-
/** Whether the backend supports streaming uploads */
|
|
276
|
-
streamingUpload: boolean;
|
|
277
|
-
/** Whether the backend supports streaming downloads */
|
|
278
|
-
streamingDownload: boolean;
|
|
279
|
-
/** Whether the backend supports copying files between locations */
|
|
280
|
-
copy: boolean;
|
|
281
|
-
/** Whether the backend supports listing files in a prefix/directory */
|
|
282
|
-
list: boolean;
|
|
283
|
-
/** Whether the backend supports retrieving file metadata */
|
|
284
|
-
metadata: boolean;
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Metadata about a file storage backend
|
|
288
|
-
*/
|
|
289
|
-
interface FileBackendMetadata {
|
|
290
|
-
/** Unique identifier for this provider */
|
|
291
|
-
providerId: string;
|
|
292
|
-
/** Human-readable display name for UI */
|
|
293
|
-
displayName: string;
|
|
294
|
-
/** Description of the storage backend */
|
|
295
|
-
description: string;
|
|
296
|
-
/** Capabilities supported by this backend */
|
|
297
|
-
capabilities: FileBackendCapabilities;
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Metadata about a stored file
|
|
301
|
-
*/
|
|
302
|
-
interface FileMetadata {
|
|
303
|
-
/** Size in bytes */
|
|
304
|
-
size: number;
|
|
305
|
-
/** MIME type */
|
|
306
|
-
contentType: string;
|
|
307
|
-
/** Last modified timestamp */
|
|
308
|
-
lastModified: Date;
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Interface for a file storage backend implementation
|
|
312
|
-
*
|
|
313
|
-
* Plugins implementing this interface can provide custom storage backends
|
|
314
|
-
* such as S3, Google Cloud Storage, Azure Blob Storage, etc.
|
|
315
|
-
*/
|
|
316
|
-
interface FileStorageBackend {
|
|
317
|
-
/**
|
|
318
|
-
* Get metadata about this storage backend
|
|
319
|
-
*
|
|
320
|
-
* @returns Backend metadata including capabilities
|
|
321
|
-
*/
|
|
322
|
-
getMetadata(): FileBackendMetadata;
|
|
323
|
-
/**
|
|
324
|
-
* Test the connection to the storage backend
|
|
325
|
-
*
|
|
326
|
-
* Verifies that the backend is properly configured and accessible.
|
|
327
|
-
* This is called during plugin initialization and setup verification.
|
|
328
|
-
*
|
|
329
|
-
* @returns Promise resolving to connection test result
|
|
330
|
-
*/
|
|
331
|
-
testConnection(): Promise<{
|
|
332
|
-
success: boolean;
|
|
333
|
-
message: string;
|
|
334
|
-
latencyMs?: number;
|
|
335
|
-
}>;
|
|
336
|
-
/**
|
|
337
|
-
* Upload a file to storage
|
|
338
|
-
*
|
|
339
|
-
* @param key The storage key/path for the file
|
|
340
|
-
* @param body The file content as Buffer or Readable stream
|
|
341
|
-
* @param contentType MIME type of the file
|
|
342
|
-
* @param metadata Optional custom metadata to store with the file
|
|
343
|
-
*/
|
|
344
|
-
upload(key: string, body: Buffer | Readable, contentType: string, metadata?: Record<string, string>): Promise<void>;
|
|
345
|
-
/**
|
|
346
|
-
* Download a file from storage
|
|
347
|
-
*
|
|
348
|
-
* @param key The storage key/path of the file
|
|
349
|
-
* @returns Promise resolving to the file content as Buffer
|
|
350
|
-
*/
|
|
351
|
-
download(key: string): Promise<Buffer>;
|
|
352
|
-
/**
|
|
353
|
-
* Delete a file from storage
|
|
354
|
-
*
|
|
355
|
-
* @param key The storage key/path of the file
|
|
356
|
-
*/
|
|
357
|
-
delete(key: string): Promise<void>;
|
|
358
|
-
/**
|
|
359
|
-
* Check if a file exists in storage
|
|
360
|
-
*
|
|
361
|
-
* @param key The storage key/path to check
|
|
362
|
-
* @returns Promise resolving to true if file exists, false otherwise
|
|
363
|
-
*/
|
|
364
|
-
exists(key: string): Promise<boolean>;
|
|
365
|
-
/**
|
|
366
|
-
* Get a URL that can be used to access the file through the application proxy
|
|
367
|
-
*
|
|
368
|
-
* This is the primary URL used by Quilltap to serve files to users.
|
|
369
|
-
* It should point back to the Quilltap application, not directly to the
|
|
370
|
-
* storage provider.
|
|
371
|
-
*
|
|
372
|
-
* @param key The storage key/path of the file
|
|
373
|
-
* @returns The proxy URL for accessing the file
|
|
374
|
-
*/
|
|
375
|
-
getProxyUrl(key: string): string;
|
|
376
|
-
/**
|
|
377
|
-
* Copy a file from one location to another
|
|
378
|
-
*
|
|
379
|
-
* Only required if capabilities.copy is true
|
|
380
|
-
*
|
|
381
|
-
* @param sourceKey The source storage key/path
|
|
382
|
-
* @param destinationKey The destination storage key/path
|
|
383
|
-
*/
|
|
384
|
-
copy?(sourceKey: string, destinationKey: string): Promise<void>;
|
|
385
|
-
/**
|
|
386
|
-
* Get metadata about a stored file
|
|
387
|
-
*
|
|
388
|
-
* Only required if capabilities.metadata is true
|
|
389
|
-
*
|
|
390
|
-
* @param key The storage key/path of the file
|
|
391
|
-
* @returns Promise resolving to file metadata or null if file doesn't exist
|
|
392
|
-
*/
|
|
393
|
-
getFileMetadata?(key: string): Promise<FileMetadata | null>;
|
|
394
|
-
/**
|
|
395
|
-
* List files in a prefix/directory
|
|
396
|
-
*
|
|
397
|
-
* Only required if capabilities.list is true
|
|
398
|
-
*
|
|
399
|
-
* @param prefix The prefix or directory to list
|
|
400
|
-
* @param maxKeys Optional maximum number of keys to return
|
|
401
|
-
* @returns Promise resolving to array of keys
|
|
402
|
-
*/
|
|
403
|
-
list?(prefix: string, maxKeys?: number): Promise<string[]>;
|
|
404
|
-
/**
|
|
405
|
-
* Get a presigned URL for direct access to the file
|
|
406
|
-
*
|
|
407
|
-
* The returned URL can be used by clients to access the file directly
|
|
408
|
-
* without going through the Quilltap application, and will expire
|
|
409
|
-
* after the specified time.
|
|
410
|
-
*
|
|
411
|
-
* Only required if capabilities.presignedUrls is true
|
|
412
|
-
*
|
|
413
|
-
* @param key The storage key/path of the file
|
|
414
|
-
* @param expiresIn Expiration time in seconds (default 3600)
|
|
415
|
-
* @returns Promise resolving to presigned URL
|
|
416
|
-
*/
|
|
417
|
-
getPresignedUrl?(key: string, expiresIn?: number): Promise<string>;
|
|
418
|
-
/**
|
|
419
|
-
* Get a presigned URL for uploading a file directly
|
|
420
|
-
*
|
|
421
|
-
* The returned URL can be used by clients to upload a file directly
|
|
422
|
-
* to storage without going through the Quilltap application.
|
|
423
|
-
*
|
|
424
|
-
* Only required if capabilities.presignedUrls is true
|
|
425
|
-
*
|
|
426
|
-
* @param key The storage key/path where the file will be stored
|
|
427
|
-
* @param contentType The MIME type of the file being uploaded
|
|
428
|
-
* @param expiresIn Expiration time in seconds (default 3600)
|
|
429
|
-
* @returns Promise resolving to presigned upload URL
|
|
430
|
-
*/
|
|
431
|
-
getPresignedUploadUrl?(key: string, contentType: string, expiresIn?: number): Promise<string>;
|
|
432
|
-
/**
|
|
433
|
-
* Get a public URL for the file
|
|
434
|
-
*
|
|
435
|
-
* The returned URL is permanent and requires no authentication.
|
|
436
|
-
* Only call this if the file is intended to be publicly accessible.
|
|
437
|
-
*
|
|
438
|
-
* Only required if capabilities.publicUrls is true
|
|
439
|
-
*
|
|
440
|
-
* @param key The storage key/path of the file
|
|
441
|
-
* @returns Promise resolving to public URL
|
|
442
|
-
*/
|
|
443
|
-
getPublicUrl?(key: string): Promise<string>;
|
|
444
|
-
}
|
|
445
|
-
/**
|
|
446
|
-
* Definition of a configuration field for a file storage plugin
|
|
447
|
-
*
|
|
448
|
-
* Used to generate the UI form for configuring the plugin.
|
|
449
|
-
*/
|
|
450
|
-
interface FileStorageConfigField {
|
|
451
|
-
/** Field name (used as key in config object) */
|
|
452
|
-
name: string;
|
|
453
|
-
/** Label displayed in the UI */
|
|
454
|
-
label: string;
|
|
455
|
-
/** Input type for this field */
|
|
456
|
-
type: 'string' | 'number' | 'boolean' | 'secret';
|
|
457
|
-
/** Whether this field is required */
|
|
458
|
-
required: boolean;
|
|
459
|
-
/** Description or help text for the field */
|
|
460
|
-
description?: string;
|
|
461
|
-
/** Default value for the field */
|
|
462
|
-
defaultValue?: string | number | boolean;
|
|
463
|
-
/** Placeholder text for input fields */
|
|
464
|
-
placeholder?: string;
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* File Storage Provider Plugin Interface
|
|
468
|
-
*
|
|
469
|
-
* Plugins implementing this interface can provide custom file storage backends
|
|
470
|
-
* to Quilltap, enabling support for different storage providers.
|
|
471
|
-
*
|
|
472
|
-
* @example
|
|
473
|
-
* ```typescript
|
|
474
|
-
* import type { FileStorageProviderPlugin, FileStorageBackend } from '@quilltap/plugin-types';
|
|
475
|
-
* import { S3Client } from '@aws-sdk/client-s3';
|
|
476
|
-
*
|
|
477
|
-
* const s3Plugin: FileStorageProviderPlugin = {
|
|
478
|
-
* metadata: {
|
|
479
|
-
* backendId: 's3',
|
|
480
|
-
* displayName: 'Amazon S3',
|
|
481
|
-
* description: 'Store files in Amazon S3',
|
|
482
|
-
* },
|
|
483
|
-
* configSchema: [
|
|
484
|
-
* {
|
|
485
|
-
* name: 'accessKeyId',
|
|
486
|
-
* label: 'Access Key ID',
|
|
487
|
-
* type: 'secret',
|
|
488
|
-
* required: true,
|
|
489
|
-
* },
|
|
490
|
-
* // ... more fields
|
|
491
|
-
* ],
|
|
492
|
-
* createBackend: (config) => {
|
|
493
|
-
* return new S3StorageBackend(config);
|
|
494
|
-
* },
|
|
495
|
-
* validateConfig: async (config) => {
|
|
496
|
-
* // Validate configuration
|
|
497
|
-
* return { valid: true };
|
|
498
|
-
* },
|
|
499
|
-
* };
|
|
500
|
-
*
|
|
501
|
-
* export const plugin = s3Plugin;
|
|
502
|
-
* ```
|
|
503
|
-
*/
|
|
504
|
-
interface FileStorageProviderPlugin {
|
|
505
|
-
/**
|
|
506
|
-
* Metadata identifying this plugin
|
|
507
|
-
*/
|
|
508
|
-
metadata: {
|
|
509
|
-
/** Unique identifier for the backend (e.g., 's3', 'gcs', 'azure') */
|
|
510
|
-
backendId: string;
|
|
511
|
-
/** Human-readable display name for UI */
|
|
512
|
-
displayName: string;
|
|
513
|
-
/** Description of what this plugin provides */
|
|
514
|
-
description: string;
|
|
515
|
-
};
|
|
516
|
-
/**
|
|
517
|
-
* Configuration schema for this plugin
|
|
518
|
-
*
|
|
519
|
-
* Defines the fields that users need to configure to use this storage backend.
|
|
520
|
-
* Used to generate the configuration UI form.
|
|
521
|
-
*/
|
|
522
|
-
configSchema: FileStorageConfigField[];
|
|
523
|
-
/**
|
|
524
|
-
* Create a backend instance with the given configuration
|
|
525
|
-
*
|
|
526
|
-
* @param config Configuration object from user input
|
|
527
|
-
* @returns A new FileStorageBackend instance
|
|
528
|
-
*/
|
|
529
|
-
createBackend(config: Record<string, unknown>): FileStorageBackend;
|
|
530
|
-
/**
|
|
531
|
-
* Validate plugin configuration
|
|
532
|
-
*
|
|
533
|
-
* Checks whether the provided configuration is valid for this plugin.
|
|
534
|
-
* Can perform more thorough validation than what's possible with just
|
|
535
|
-
* the config schema (e.g., connecting to the service to verify credentials).
|
|
536
|
-
*
|
|
537
|
-
* @param config Configuration object to validate
|
|
538
|
-
* @returns Promise resolving to validation result
|
|
539
|
-
*/
|
|
540
|
-
validateConfig(config: Record<string, unknown>): Promise<{
|
|
541
|
-
valid: boolean;
|
|
542
|
-
errors?: string[];
|
|
543
|
-
}>;
|
|
544
|
-
}
|
|
545
|
-
/**
|
|
546
|
-
* Standard export type for file storage plugins
|
|
547
|
-
*
|
|
548
|
-
* This is the expected export structure from file storage plugin modules.
|
|
549
|
-
*
|
|
550
|
-
* @example
|
|
551
|
-
* ```typescript
|
|
552
|
-
* // In plugin-s3/index.ts
|
|
553
|
-
* export const plugin: FileStorageProviderPlugin = { ... };
|
|
554
|
-
*
|
|
555
|
-
* // Or with the export type:
|
|
556
|
-
* const pluginExport: FileStoragePluginExport = {
|
|
557
|
-
* plugin: { ... }
|
|
558
|
-
* };
|
|
559
|
-
* export default pluginExport;
|
|
560
|
-
* ```
|
|
561
|
-
*/
|
|
562
|
-
interface FileStoragePluginExport {
|
|
563
|
-
/** The file storage plugin instance */
|
|
564
|
-
plugin: FileStorageProviderPlugin;
|
|
565
|
-
}
|
|
566
|
-
|
|
567
257
|
/**
|
|
568
258
|
* @quilltap/plugin-types
|
|
569
259
|
*
|
|
@@ -581,6 +271,6 @@ interface FileStoragePluginExport {
|
|
|
581
271
|
* Version of the plugin-types package.
|
|
582
272
|
* Can be used at runtime to check compatibility.
|
|
583
273
|
*/
|
|
584
|
-
declare const PLUGIN_TYPES_VERSION = "1.
|
|
274
|
+
declare const PLUGIN_TYPES_VERSION = "1.15.1";
|
|
585
275
|
|
|
586
|
-
export {
|
|
276
|
+
export { PLUGIN_TYPES_VERSION, type ToolExecutionContext, type ToolExecutionResult, type ToolHierarchyInfo, type ToolMetadata, type ToolPlugin, type ToolPluginExport, UniversalTool };
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/llm/embeddings.ts","../src/common/errors.ts","../src/common/logger.ts","../src/index.ts"],"names":[],"mappings":";;;AAyLO,SAAS,yBACd,QAAA,EACoC;AACpC,EAAA,OAAO,WAAA,IAAe,QAAA,IAAY,WAAA,IAAe,QAAA,IAAY,UAAA,IAAc,QAAA;AAC7E;;;AClLO,IAAM,WAAA,GAAN,cAA0B,KAAA,CAAM;AAAA,EACrC,WAAA,CACE,OAAA,EACgB,IAAA,EACA,UAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAGhB,IAAA,IAAA,CAAK,IAAA,GAAO,aAAA;AAAA,EACd;AACF;AAOO,IAAM,WAAA,GAAN,cAA0B,WAAA,CAAY;AAAA,EAC3C,WAAA,CAAY,SAAiB,UAAA,EAAqB;AAChD,IAAA,KAAA,CAAM,OAAA,EAAS,iBAAiB,UAAU,CAAA;AAC1C,IAAA,IAAA,CAAK,IAAA,GAAO,aAAA;AAAA,EACd;AACF;AAOO,IAAM,gBAAA,GAAN,cAA+B,WAAA,CAAY;AAAA,EAChD,WAAA,CACE,OAAA,EACgB,UAAA,EACA,QAAA,EAChB,UAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,sBAAsB,UAAU,CAAA;AAJ/B,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAIhB,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AAAA,EACd;AACF;AAOO,IAAM,cAAA,GAAN,cAA6B,gBAAA,CAAiB;AAAA,EAGnD,WAAA,CACE,OAAA,EACgB,UAAA,EAChB,UAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,GAAA,EAAK,MAAA,EAAW,UAAU,CAAA;AAHzB,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAJlB,IAAA,IAAA,CAAyB,IAAA,GAAO,kBAAA;AAQ9B,IAAA,IAAA,CAAK,IAAA,GAAO,gBAAA;AAAA,EACd;AACF;AAOO,IAAM,kBAAA,GAAN,cAAiC,WAAA,CAAY;AAAA,EAClD,WAAA,CAAY,SAAiB,UAAA,EAAqB;AAChD,IAAA,KAAA,CAAM,OAAA,EAAS,uBAAuB,UAAU,CAAA;AAChD,IAAA,IAAA,CAAK,IAAA,GAAO,oBAAA;AAAA,EACd;AACF;AAOO,IAAM,kBAAA,GAAN,cAAiC,WAAA,CAAY;AAAA,EAClD,WAAA,CACE,OAAA,EACgB,OAAA,EAChB,UAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,mBAAmB,UAAU,CAAA;AAH5B,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAIhB,IAAA,IAAA,CAAK,IAAA,GAAO,oBAAA;AAAA,EACd;AACF;AAOO,IAAM,eAAA,GAAN,cAA8B,WAAA,CAAY;AAAA,EAC/C,WAAA,CACE,OAAA,EACgB,YAAA,EAChB,UAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,oBAAoB,UAAU,CAAA;AAH7B,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAIhB,IAAA,IAAA,CAAK,IAAA,GAAO,iBAAA;AAAA,EACd;AACF;AAOO,IAAM,kBAAA,GAAN,cAAiC,WAAA,CAAY;AAAA,EAClD,WAAA,CACE,OAAA,EACgB,QAAA,EAChB,UAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,wBAAwB,UAAU,CAAA;AAHjC,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAIhB,IAAA,IAAA,CAAK,IAAA,GAAO,oBAAA;AAAA,EACd;AACF;;;AClDO,SAAS,mBAAA,CAAoB,MAAA,EAAgB,QAAA,GAAqB,MAAA,EAAsB;AAC7F,EAAA,MAAM,MAAA,GAAqB,CAAC,OAAA,EAAS,MAAA,EAAQ,QAAQ,OAAO,CAAA;AAC5D,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KACjB,MAAA,CAAO,QAAQ,KAAK,CAAA,IAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA;AAElD,EAAA,MAAM,aAAA,GAAgB,CAAC,OAAA,KAAiC;AACtD,IAAA,IAAI,CAAC,SAAS,OAAO,EAAA;AACrB,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,CACnC,MAAA,CAAO,CAAC,CAAC,GAAG,CAAA,KAAM,GAAA,KAAQ,SAAS,CAAA,CACnC,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA,CAAE,CAAA,CACvD,KAAK,GAAG,CAAA;AACX,IAAA,OAAO,OAAA,GAAU,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,GAAK,EAAA;AAAA,EACnC,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,CAAC,OAAA,EAAiB,OAAA,KAA+B;AACtD,MAAA,IAAI,SAAA,CAAU,OAAO,CAAA,EAAG;AACtB,QAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,MAAM,CAAA,EAAA,EAAK,OAAO,CAAA,EAAG,aAAA,CAAc,OAAO,CAAC,CAAA,CAAE,CAAA;AAAA,MACjE;AAAA,IACF,CAAA;AAAA,IAEA,IAAA,EAAM,CAAC,OAAA,EAAiB,OAAA,KAA+B;AACrD,MAAA,IAAI,SAAA,CAAU,MAAM,CAAA,EAAG;AACrB,QAAA,OAAA,CAAQ,IAAA,CAAK,IAAI,MAAM,CAAA,EAAA,EAAK,OAAO,CAAA,EAAG,aAAA,CAAc,OAAO,CAAC,CAAA,CAAE,CAAA;AAAA,MAChE;AAAA,IACF,CAAA;AAAA,IAEA,IAAA,EAAM,CAAC,OAAA,EAAiB,OAAA,KAA+B;AACrD,MAAA,IAAI,SAAA,CAAU,MAAM,CAAA,EAAG;AACrB,QAAA,OAAA,CAAQ,IAAA,CAAK,IAAI,MAAM,CAAA,EAAA,EAAK,OAAO,CAAA,EAAG,aAAA,CAAc,OAAO,CAAC,CAAA,CAAE,CAAA;AAAA,MAChE;AAAA,IACF,CAAA;AAAA,IAEA,KAAA,EAAO,CAAC,OAAA,EAAiB,OAAA,EAAsB,KAAA,KAAwB;AACrE,MAAA,IAAI,SAAA,CAAU,OAAO,CAAA,EAAG;AACtB,QAAA,OAAA,CAAQ,KAAA;AAAA,UACN,IAAI,MAAM,CAAA,EAAA,EAAK,OAAO,CAAA,EAAG,aAAA,CAAc,OAAO,CAAC,CAAA,CAAA;AAAA,UAC/C,KAAA,GAAQ;AAAA,EAAK,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,OAAO,CAAA,CAAA,GAAK;AAAA,SAChD;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AAOO,SAAS,gBAAA,GAAiC;AAC/C,EAAA,MAAM,OAAO,MAAY;AAAA,EAAC,CAAA;AAC1B,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,IAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AACF;;;AC4DO,IAAM,oBAAA,GAAuB","file":"index.js","sourcesContent":["/**\n * Embedding Provider Types for Quilltap plugin development\n *\n * Defines interfaces for embedding providers that can be implemented\n * by plugins to provide text-to-vector embedding functionality.\n *\n * @module @quilltap/plugin-types/llm/embeddings\n */\n\n/**\n * Result of an embedding operation\n */\nexport interface EmbeddingResult {\n /** The embedding vector (array of floating point numbers) */\n embedding: number[];\n /** The model used to generate the embedding */\n model: string;\n /** Number of dimensions in the embedding vector */\n dimensions: number;\n /** Token usage information (if available) */\n usage?: {\n promptTokens: number;\n totalTokens: number;\n cost?: number;\n };\n}\n\n/**\n * Options for embedding generation\n */\nexport interface EmbeddingOptions {\n /** Desired dimensions for the embedding (if model supports variable dimensions) */\n dimensions?: number;\n}\n\n/**\n * Standard embedding provider interface\n *\n * This is the base interface for all embedding providers that use\n * external APIs (OpenAI, Ollama, OpenRouter, etc.)\n */\nexport interface EmbeddingProvider {\n /**\n * Generate an embedding for a single text\n *\n * @param text The text to embed\n * @param model The model to use\n * @param apiKey The API key for authentication\n * @param options Optional configuration\n * @returns The embedding result\n */\n generateEmbedding(\n text: string,\n model: string,\n apiKey: string,\n options?: EmbeddingOptions\n ): Promise<EmbeddingResult>;\n\n /**\n * Generate embeddings for multiple texts in a batch\n *\n * @param texts Array of texts to embed\n * @param model The model to use\n * @param apiKey The API key for authentication\n * @param options Optional configuration\n * @returns Array of embedding results\n */\n generateBatchEmbeddings?(\n texts: string[],\n model: string,\n apiKey: string,\n options?: EmbeddingOptions\n ): Promise<EmbeddingResult[]>;\n\n /**\n * Get available embedding models\n *\n * @param apiKey The API key for authentication\n * @returns Array of model IDs\n */\n getAvailableModels?(apiKey: string): Promise<string[]>;\n\n /**\n * Check if the provider is available and properly configured\n *\n * @param apiKey Optional API key to validate\n * @returns True if the provider is ready to use\n */\n isAvailable?(apiKey?: string): Promise<boolean>;\n}\n\n/**\n * Serializable state for local embedding providers\n *\n * Used by providers like TF-IDF that maintain vocabulary state\n */\nexport interface LocalEmbeddingProviderState {\n /** The vocabulary as an array of [term, index] pairs */\n vocabulary: [string, number][];\n /** The IDF (Inverse Document Frequency) weights */\n idf: number[];\n /** Average document length across the corpus */\n avgDocLength: number;\n /** Size of the vocabulary */\n vocabularySize: number;\n /** Whether bigrams are included in the vocabulary */\n includeBigrams: boolean;\n /** Timestamp when the vocabulary was fitted */\n fittedAt: string;\n}\n\n/**\n * Local embedding provider interface\n *\n * Extended interface for local/offline embedding providers that\n * maintain vocabulary state (like TF-IDF). These providers don't\n * require API keys and can work entirely offline.\n */\nexport interface LocalEmbeddingProvider extends Omit<EmbeddingProvider, 'generateEmbedding' | 'generateBatchEmbeddings'> {\n /**\n * Generate an embedding for a single text\n * Local providers don't need apiKey parameter\n *\n * @param text The text to embed\n * @returns The embedding result\n */\n generateEmbedding(text: string): EmbeddingResult;\n\n /**\n * Generate embeddings for multiple texts in a batch\n *\n * @param texts Array of texts to embed\n * @returns Array of embedding results\n */\n generateBatchEmbeddings(texts: string[]): EmbeddingResult[];\n\n /**\n * Fit the vocabulary on a corpus of documents\n *\n * This method analyzes the corpus to build vocabulary, calculate IDF weights,\n * and other statistics needed for embedding generation.\n *\n * @param documents Array of text documents to analyze\n */\n fitCorpus(documents: string[]): void;\n\n /**\n * Check if the vocabulary has been fitted\n *\n * @returns True if fitCorpus has been called with documents\n */\n isFitted(): boolean;\n\n /**\n * Load state from a serialized representation\n *\n * @param state The serialized provider state\n */\n loadState(state: LocalEmbeddingProviderState): void;\n\n /**\n * Get the current state for serialization\n *\n * @returns The provider state, or null if not fitted\n */\n getState(): LocalEmbeddingProviderState | null;\n\n /**\n * Get the vocabulary size\n *\n * @returns Number of terms in the vocabulary\n */\n getVocabularySize(): number;\n\n /**\n * Get the embedding dimensions\n *\n * @returns Number of dimensions in generated embeddings\n */\n getDimensions(): number;\n}\n\n/**\n * Type guard to check if a provider is a local embedding provider\n */\nexport function isLocalEmbeddingProvider(\n provider: EmbeddingProvider | LocalEmbeddingProvider\n): provider is LocalEmbeddingProvider {\n return 'fitCorpus' in provider && 'loadState' in provider && 'getState' in provider;\n}\n","/**\n * Common error types for Quilltap plugin development\n *\n * @module @quilltap/plugin-types/common/errors\n */\n\n/**\n * Base plugin error\n *\n * All plugin-specific errors should extend this class.\n */\nexport class PluginError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly pluginName?: string\n ) {\n super(message);\n this.name = 'PluginError';\n }\n}\n\n/**\n * API key validation error\n *\n * Thrown when an API key is invalid or has insufficient permissions.\n */\nexport class ApiKeyError extends PluginError {\n constructor(message: string, pluginName?: string) {\n super(message, 'API_KEY_ERROR', pluginName);\n this.name = 'ApiKeyError';\n }\n}\n\n/**\n * Provider API error\n *\n * Thrown when the provider API returns an error.\n */\nexport class ProviderApiError extends PluginError {\n constructor(\n message: string,\n public readonly statusCode?: number,\n public readonly response?: unknown,\n pluginName?: string\n ) {\n super(message, 'PROVIDER_API_ERROR', pluginName);\n this.name = 'ProviderApiError';\n }\n}\n\n/**\n * Rate limit error\n *\n * Thrown when the provider rate limits the request.\n */\nexport class RateLimitError extends ProviderApiError {\n public override readonly code = 'RATE_LIMIT_ERROR';\n\n constructor(\n message: string,\n public readonly retryAfter?: number,\n pluginName?: string\n ) {\n super(message, 429, undefined, pluginName);\n this.name = 'RateLimitError';\n }\n}\n\n/**\n * Configuration error\n *\n * Thrown when plugin configuration is invalid.\n */\nexport class ConfigurationError extends PluginError {\n constructor(message: string, pluginName?: string) {\n super(message, 'CONFIGURATION_ERROR', pluginName);\n this.name = 'ConfigurationError';\n }\n}\n\n/**\n * Model not found error\n *\n * Thrown when a requested model is not available.\n */\nexport class ModelNotFoundError extends PluginError {\n constructor(\n message: string,\n public readonly modelId?: string,\n pluginName?: string\n ) {\n super(message, 'MODEL_NOT_FOUND', pluginName);\n this.name = 'ModelNotFoundError';\n }\n}\n\n/**\n * Attachment error\n *\n * Thrown when there's an issue processing file attachments.\n */\nexport class AttachmentError extends PluginError {\n constructor(\n message: string,\n public readonly attachmentId?: string,\n pluginName?: string\n ) {\n super(message, 'ATTACHMENT_ERROR', pluginName);\n this.name = 'AttachmentError';\n }\n}\n\n/**\n * Tool execution error\n *\n * Thrown when a tool call fails to execute.\n */\nexport class ToolExecutionError extends PluginError {\n constructor(\n message: string,\n public readonly toolName?: string,\n pluginName?: string\n ) {\n super(message, 'TOOL_EXECUTION_ERROR', pluginName);\n this.name = 'ToolExecutionError';\n }\n}\n","/**\n * Logger types for Quilltap plugin development\n *\n * @module @quilltap/plugin-types/common/logger\n */\n\n/**\n * Log level type\n */\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\n/**\n * Log context metadata\n */\nexport interface LogContext {\n /** Context identifier (e.g., module name) */\n context?: string;\n /** Additional metadata */\n [key: string]: unknown;\n}\n\n/**\n * Logger interface that plugins can implement or receive\n *\n * This interface is compatible with Quilltap's built-in logger.\n * Plugins can use this interface to accept a logger from the host\n * application or implement their own logging.\n */\nexport interface PluginLogger {\n /**\n * Log a debug message\n * @param message Message to log\n * @param context Optional context metadata\n */\n debug(message: string, context?: LogContext): void;\n\n /**\n * Log an info message\n * @param message Message to log\n * @param context Optional context metadata\n */\n info(message: string, context?: LogContext): void;\n\n /**\n * Log a warning message\n * @param message Message to log\n * @param context Optional context metadata\n */\n warn(message: string, context?: LogContext): void;\n\n /**\n * Log an error message\n * @param message Message to log\n * @param context Optional context metadata\n * @param error Optional error object\n */\n error(message: string, context?: LogContext, error?: Error): void;\n}\n\n/**\n * Simple console-based logger for standalone plugin development\n *\n * This logger writes to the console and is useful for local\n * plugin development and testing.\n *\n * @param prefix Prefix to add to all log messages\n * @param minLevel Minimum log level to output (default: 'info')\n * @returns A PluginLogger instance\n *\n * @example\n * ```typescript\n * const logger = createConsoleLogger('my-plugin', 'debug');\n * logger.debug('Initializing plugin', { version: '1.0.0' });\n * logger.info('Plugin ready');\n * logger.error('Failed to connect', { endpoint: 'api.example.com' }, new Error('Connection refused'));\n * ```\n */\nexport function createConsoleLogger(prefix: string, minLevel: LogLevel = 'info'): PluginLogger {\n const levels: LogLevel[] = ['debug', 'info', 'warn', 'error'];\n const shouldLog = (level: LogLevel): boolean =>\n levels.indexOf(level) >= levels.indexOf(minLevel);\n\n const formatContext = (context?: LogContext): string => {\n if (!context) return '';\n const entries = Object.entries(context)\n .filter(([key]) => key !== 'context')\n .map(([key, value]) => `${key}=${JSON.stringify(value)}`)\n .join(' ');\n return entries ? ` ${entries}` : '';\n };\n\n return {\n debug: (message: string, context?: LogContext): void => {\n if (shouldLog('debug')) {\n console.debug(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n info: (message: string, context?: LogContext): void => {\n if (shouldLog('info')) {\n console.info(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n warn: (message: string, context?: LogContext): void => {\n if (shouldLog('warn')) {\n console.warn(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n error: (message: string, context?: LogContext, error?: Error): void => {\n if (shouldLog('error')) {\n console.error(\n `[${prefix}] ${message}${formatContext(context)}`,\n error ? `\\n${error.stack || error.message}` : ''\n );\n }\n },\n };\n}\n\n/**\n * No-op logger for production or when logging is disabled\n *\n * @returns A PluginLogger that does nothing\n */\nexport function createNoopLogger(): PluginLogger {\n const noop = (): void => {};\n return {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n };\n}\n","/**\n * @quilltap/plugin-types\n *\n * Type definitions for Quilltap plugin development.\n *\n * This package provides TypeScript types and interfaces for building\n * Quilltap plugins, including LLM providers, authentication providers,\n * and utility plugins.\n *\n * @packageDocumentation\n * @module @quilltap/plugin-types\n */\n\n// ============================================================================\n// LLM Types\n// ============================================================================\n\nexport type {\n // Core message types\n FileAttachment,\n LLMMessage,\n JSONSchemaDefinition,\n ResponseFormat,\n LLMParams,\n\n // Response types\n TokenUsage,\n CacheUsage,\n AttachmentResults,\n LLMResponse,\n StreamChunk,\n\n // Image generation types\n ImageGenParams,\n GeneratedImage,\n ImageGenResponse,\n\n // Model metadata\n ModelWarningLevel,\n ModelWarning,\n ModelMetadata,\n\n // Provider interfaces\n LLMProvider,\n ImageGenProvider,\n} from './llm/base';\n\nexport type {\n // Tool definitions\n OpenAIToolDefinition,\n UniversalTool,\n AnthropicToolDefinition,\n GoogleToolDefinition,\n\n // Tool calls\n ToolCall,\n ToolCallRequest,\n ToolResult,\n ToolFormatOptions,\n} from './llm/tools';\n\nexport type {\n // Embedding types\n EmbeddingResult,\n EmbeddingOptions,\n EmbeddingProvider,\n LocalEmbeddingProviderState,\n LocalEmbeddingProvider,\n} from './llm/embeddings';\n\nexport { isLocalEmbeddingProvider } from './llm/embeddings';\n\n// ============================================================================\n// Plugin Types\n// ============================================================================\n\nexport type {\n // Provider plugin types\n ProviderMetadata,\n ProviderConfigRequirements,\n ProviderCapabilities,\n AttachmentSupport,\n ModelInfo,\n EmbeddingModelInfo,\n ImageGenerationModelInfo,\n ImageStyleInfo,\n ImageProviderConstraints,\n IconProps,\n PluginIconData,\n LLMProviderPlugin,\n ProviderPluginExport,\n // Runtime configuration types\n MessageFormatSupport,\n CheapModelConfig,\n ToolFormatType,\n} from './plugins/provider';\n\nexport type {\n // Manifest types\n PluginCapability,\n PluginCategory,\n PluginStatus,\n PluginAuthor,\n PluginCompatibility,\n ProviderConfig,\n SearchProviderConfig,\n PluginPermissions,\n PluginManifest,\n InstalledPluginInfo,\n} from './plugins/manifest';\n\nexport type {\n // Theme plugin types\n ColorPalette,\n Typography,\n Spacing,\n Effects,\n ThemeTokens,\n FontDefinition,\n EmbeddedFont,\n ThemeMetadata,\n SubsystemOverrides,\n ThemePlugin,\n ThemePluginExport,\n} from './plugins/theme';\n\nexport type {\n // Roleplay template plugin types\n RoleplayTemplateConfig,\n RoleplayTemplateMetadata,\n RoleplayTemplatePlugin,\n RoleplayTemplatePluginExport,\n} from './plugins/roleplay-template';\n\nexport type {\n // Tool plugin types\n ToolMetadata,\n ToolHierarchyInfo,\n ToolExecutionContext,\n ToolExecutionResult,\n ToolPlugin,\n ToolPluginExport,\n} from './plugins/tool';\n\nexport type {\n // File storage plugin types\n FileBackendCapabilities,\n FileBackendMetadata,\n FileMetadata,\n FileStorageBackend,\n FileStorageConfigField,\n FileStorageProviderPlugin,\n FileStoragePluginExport,\n} from './plugins/file-storage';\n\nexport type {\n // Search provider plugin types\n SearchProviderMetadata,\n SearchProviderConfigRequirements,\n SearchResult,\n SearchOutput,\n SearchProviderPlugin,\n SearchProviderPluginExport,\n} from './plugins/search-provider';\n\n// ============================================================================\n// Common Types\n// ============================================================================\n\nexport type { LogLevel, LogContext, PluginLogger } from './common/logger';\n\n// Error classes (these are values, not just types)\nexport {\n PluginError,\n ApiKeyError,\n ProviderApiError,\n RateLimitError,\n ConfigurationError,\n ModelNotFoundError,\n AttachmentError,\n ToolExecutionError,\n} from './common/errors';\n\n// Logger factories\nexport { createConsoleLogger, createNoopLogger } from './common/logger';\n\n// ============================================================================\n// Version\n// ============================================================================\n\n/**\n * Version of the plugin-types package.\n * Can be used at runtime to check compatibility.\n */\nexport const PLUGIN_TYPES_VERSION = '1.14.0';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/llm/embeddings.ts","../src/common/errors.ts","../src/common/logger.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Embedding Provider Types for Quilltap plugin development\n *\n * Defines interfaces for embedding providers that can be implemented\n * by plugins to provide text-to-vector embedding functionality.\n *\n * @module @quilltap/plugin-types/llm/embeddings\n */\n\n/**\n * Result of an embedding operation\n */\nexport interface EmbeddingResult {\n /** The embedding vector (array of floating point numbers) */\n embedding: number[];\n /** The model used to generate the embedding */\n model: string;\n /** Number of dimensions in the embedding vector */\n dimensions: number;\n /** Token usage information (if available) */\n usage?: {\n promptTokens: number;\n totalTokens: number;\n cost?: number;\n };\n}\n\n/**\n * Options for embedding generation\n */\nexport interface EmbeddingOptions {\n /** Desired dimensions for the embedding (if model supports variable dimensions) */\n dimensions?: number;\n}\n\n/**\n * Standard embedding provider interface\n *\n * This is the base interface for all embedding providers that use\n * external APIs (OpenAI, Ollama, OpenRouter, etc.)\n */\nexport interface EmbeddingProvider {\n /**\n * Generate an embedding for a single text\n *\n * @param text The text to embed\n * @param model The model to use\n * @param apiKey The API key for authentication\n * @param options Optional configuration\n * @returns The embedding result\n */\n generateEmbedding(\n text: string,\n model: string,\n apiKey: string,\n options?: EmbeddingOptions\n ): Promise<EmbeddingResult>;\n\n /**\n * Generate embeddings for multiple texts in a batch\n *\n * @param texts Array of texts to embed\n * @param model The model to use\n * @param apiKey The API key for authentication\n * @param options Optional configuration\n * @returns Array of embedding results\n */\n generateBatchEmbeddings?(\n texts: string[],\n model: string,\n apiKey: string,\n options?: EmbeddingOptions\n ): Promise<EmbeddingResult[]>;\n\n /**\n * Get available embedding models\n *\n * @param apiKey The API key for authentication\n * @returns Array of model IDs\n */\n getAvailableModels?(apiKey: string): Promise<string[]>;\n\n /**\n * Check if the provider is available and properly configured\n *\n * @param apiKey Optional API key to validate\n * @returns True if the provider is ready to use\n */\n isAvailable?(apiKey?: string): Promise<boolean>;\n}\n\n/**\n * Serializable state for local embedding providers\n *\n * Used by providers like TF-IDF that maintain vocabulary state\n */\nexport interface LocalEmbeddingProviderState {\n /** The vocabulary as an array of [term, index] pairs */\n vocabulary: [string, number][];\n /** The IDF (Inverse Document Frequency) weights */\n idf: number[];\n /** Average document length across the corpus */\n avgDocLength: number;\n /** Size of the vocabulary */\n vocabularySize: number;\n /** Whether bigrams are included in the vocabulary */\n includeBigrams: boolean;\n /** Timestamp when the vocabulary was fitted */\n fittedAt: string;\n}\n\n/**\n * Local embedding provider interface\n *\n * Extended interface for local/offline embedding providers that\n * maintain vocabulary state (like TF-IDF). These providers don't\n * require API keys and can work entirely offline.\n */\nexport interface LocalEmbeddingProvider extends Omit<EmbeddingProvider, 'generateEmbedding' | 'generateBatchEmbeddings'> {\n /**\n * Generate an embedding for a single text\n * Local providers don't need apiKey parameter\n *\n * @param text The text to embed\n * @returns The embedding result\n */\n generateEmbedding(text: string): EmbeddingResult;\n\n /**\n * Generate embeddings for multiple texts in a batch\n *\n * @param texts Array of texts to embed\n * @returns Array of embedding results\n */\n generateBatchEmbeddings(texts: string[]): EmbeddingResult[];\n\n /**\n * Fit the vocabulary on a corpus of documents\n *\n * This method analyzes the corpus to build vocabulary, calculate IDF weights,\n * and other statistics needed for embedding generation.\n *\n * @param documents Array of text documents to analyze\n */\n fitCorpus(documents: string[]): void;\n\n /**\n * Check if the vocabulary has been fitted\n *\n * @returns True if fitCorpus has been called with documents\n */\n isFitted(): boolean;\n\n /**\n * Load state from a serialized representation\n *\n * @param state The serialized provider state\n */\n loadState(state: LocalEmbeddingProviderState): void;\n\n /**\n * Get the current state for serialization\n *\n * @returns The provider state, or null if not fitted\n */\n getState(): LocalEmbeddingProviderState | null;\n\n /**\n * Get the vocabulary size\n *\n * @returns Number of terms in the vocabulary\n */\n getVocabularySize(): number;\n\n /**\n * Get the embedding dimensions\n *\n * @returns Number of dimensions in generated embeddings\n */\n getDimensions(): number;\n}\n\n/**\n * Type guard to check if a provider is a local embedding provider\n */\nexport function isLocalEmbeddingProvider(\n provider: EmbeddingProvider | LocalEmbeddingProvider\n): provider is LocalEmbeddingProvider {\n return 'fitCorpus' in provider && 'loadState' in provider && 'getState' in provider;\n}\n","/**\n * Common error types for Quilltap plugin development\n *\n * @module @quilltap/plugin-types/common/errors\n */\n\n/**\n * Base plugin error\n *\n * All plugin-specific errors should extend this class.\n */\nexport class PluginError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly pluginName?: string\n ) {\n super(message);\n this.name = 'PluginError';\n }\n}\n\n/**\n * API key validation error\n *\n * Thrown when an API key is invalid or has insufficient permissions.\n */\nexport class ApiKeyError extends PluginError {\n constructor(message: string, pluginName?: string) {\n super(message, 'API_KEY_ERROR', pluginName);\n this.name = 'ApiKeyError';\n }\n}\n\n/**\n * Provider API error\n *\n * Thrown when the provider API returns an error.\n */\nexport class ProviderApiError extends PluginError {\n constructor(\n message: string,\n public readonly statusCode?: number,\n public readonly response?: unknown,\n pluginName?: string\n ) {\n super(message, 'PROVIDER_API_ERROR', pluginName);\n this.name = 'ProviderApiError';\n }\n}\n\n/**\n * Rate limit error\n *\n * Thrown when the provider rate limits the request.\n */\nexport class RateLimitError extends ProviderApiError {\n public override readonly code = 'RATE_LIMIT_ERROR';\n\n constructor(\n message: string,\n public readonly retryAfter?: number,\n pluginName?: string\n ) {\n super(message, 429, undefined, pluginName);\n this.name = 'RateLimitError';\n }\n}\n\n/**\n * Configuration error\n *\n * Thrown when plugin configuration is invalid.\n */\nexport class ConfigurationError extends PluginError {\n constructor(message: string, pluginName?: string) {\n super(message, 'CONFIGURATION_ERROR', pluginName);\n this.name = 'ConfigurationError';\n }\n}\n\n/**\n * Model not found error\n *\n * Thrown when a requested model is not available.\n */\nexport class ModelNotFoundError extends PluginError {\n constructor(\n message: string,\n public readonly modelId?: string,\n pluginName?: string\n ) {\n super(message, 'MODEL_NOT_FOUND', pluginName);\n this.name = 'ModelNotFoundError';\n }\n}\n\n/**\n * Attachment error\n *\n * Thrown when there's an issue processing file attachments.\n */\nexport class AttachmentError extends PluginError {\n constructor(\n message: string,\n public readonly attachmentId?: string,\n pluginName?: string\n ) {\n super(message, 'ATTACHMENT_ERROR', pluginName);\n this.name = 'AttachmentError';\n }\n}\n\n/**\n * Tool execution error\n *\n * Thrown when a tool call fails to execute.\n */\nexport class ToolExecutionError extends PluginError {\n constructor(\n message: string,\n public readonly toolName?: string,\n pluginName?: string\n ) {\n super(message, 'TOOL_EXECUTION_ERROR', pluginName);\n this.name = 'ToolExecutionError';\n }\n}\n","/**\n * Logger types for Quilltap plugin development\n *\n * @module @quilltap/plugin-types/common/logger\n */\n\n/**\n * Log level type\n */\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\n/**\n * Log context metadata\n */\nexport interface LogContext {\n /** Context identifier (e.g., module name) */\n context?: string;\n /** Additional metadata */\n [key: string]: unknown;\n}\n\n/**\n * Logger interface that plugins can implement or receive\n *\n * This interface is compatible with Quilltap's built-in logger.\n * Plugins can use this interface to accept a logger from the host\n * application or implement their own logging.\n */\nexport interface PluginLogger {\n /**\n * Log a debug message\n * @param message Message to log\n * @param context Optional context metadata\n */\n debug(message: string, context?: LogContext): void;\n\n /**\n * Log an info message\n * @param message Message to log\n * @param context Optional context metadata\n */\n info(message: string, context?: LogContext): void;\n\n /**\n * Log a warning message\n * @param message Message to log\n * @param context Optional context metadata\n */\n warn(message: string, context?: LogContext): void;\n\n /**\n * Log an error message\n * @param message Message to log\n * @param context Optional context metadata\n * @param error Optional error object\n */\n error(message: string, context?: LogContext, error?: Error): void;\n}\n\n/**\n * Simple console-based logger for standalone plugin development\n *\n * This logger writes to the console and is useful for local\n * plugin development and testing.\n *\n * @param prefix Prefix to add to all log messages\n * @param minLevel Minimum log level to output (default: 'info')\n * @returns A PluginLogger instance\n *\n * @example\n * ```typescript\n * const logger = createConsoleLogger('my-plugin', 'debug');\n * logger.debug('Initializing plugin', { version: '1.0.0' });\n * logger.info('Plugin ready');\n * logger.error('Failed to connect', { endpoint: 'api.example.com' }, new Error('Connection refused'));\n * ```\n */\nexport function createConsoleLogger(prefix: string, minLevel: LogLevel = 'info'): PluginLogger {\n const levels: LogLevel[] = ['debug', 'info', 'warn', 'error'];\n const shouldLog = (level: LogLevel): boolean =>\n levels.indexOf(level) >= levels.indexOf(minLevel);\n\n const formatContext = (context?: LogContext): string => {\n if (!context) return '';\n const entries = Object.entries(context)\n .filter(([key]) => key !== 'context')\n .map(([key, value]) => `${key}=${JSON.stringify(value)}`)\n .join(' ');\n return entries ? ` ${entries}` : '';\n };\n\n return {\n debug: (message: string, context?: LogContext): void => {\n if (shouldLog('debug')) {\n console.debug(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n info: (message: string, context?: LogContext): void => {\n if (shouldLog('info')) {\n console.info(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n warn: (message: string, context?: LogContext): void => {\n if (shouldLog('warn')) {\n console.warn(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n error: (message: string, context?: LogContext, error?: Error): void => {\n if (shouldLog('error')) {\n console.error(\n `[${prefix}] ${message}${formatContext(context)}`,\n error ? `\\n${error.stack || error.message}` : ''\n );\n }\n },\n };\n}\n\n/**\n * No-op logger for production or when logging is disabled\n *\n * @returns A PluginLogger that does nothing\n */\nexport function createNoopLogger(): PluginLogger {\n const noop = (): void => {};\n return {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n };\n}\n","/**\n * @quilltap/plugin-types\n *\n * Type definitions for Quilltap plugin development.\n *\n * This package provides TypeScript types and interfaces for building\n * Quilltap plugins, including LLM providers, authentication providers,\n * and utility plugins.\n *\n * @packageDocumentation\n * @module @quilltap/plugin-types\n */\n\n// ============================================================================\n// LLM Types\n// ============================================================================\n\nexport type {\n // Core message types\n FileAttachment,\n LLMMessage,\n JSONSchemaDefinition,\n ResponseFormat,\n LLMParams,\n\n // Response types\n TokenUsage,\n CacheUsage,\n AttachmentResults,\n LLMResponse,\n StreamChunk,\n\n // Image generation types\n ImageGenParams,\n GeneratedImage,\n ImageGenResponse,\n\n // Model metadata\n ModelWarningLevel,\n ModelWarning,\n ModelMetadata,\n\n // Provider interfaces\n LLMProvider,\n ImageGenProvider,\n} from './llm/base';\n\nexport type {\n // Tool definitions\n OpenAIToolDefinition,\n UniversalTool,\n AnthropicToolDefinition,\n GoogleToolDefinition,\n\n // Tool calls\n ToolCall,\n ToolCallRequest,\n ToolResult,\n ToolFormatOptions,\n} from './llm/tools';\n\nexport type {\n // Embedding types\n EmbeddingResult,\n EmbeddingOptions,\n EmbeddingProvider,\n LocalEmbeddingProviderState,\n LocalEmbeddingProvider,\n} from './llm/embeddings';\n\nexport { isLocalEmbeddingProvider } from './llm/embeddings';\n\n// ============================================================================\n// Plugin Types\n// ============================================================================\n\nexport type {\n // Provider plugin types\n ProviderMetadata,\n ProviderConfigRequirements,\n ProviderCapabilities,\n AttachmentSupport,\n ModelInfo,\n EmbeddingModelInfo,\n ImageGenerationModelInfo,\n ImageStyleInfo,\n ImageProviderConstraints,\n IconProps,\n PluginIconData,\n LLMProviderPlugin,\n ProviderPluginExport,\n // Runtime configuration types\n MessageFormatSupport,\n CheapModelConfig,\n ToolFormatType,\n} from './plugins/provider';\n\nexport type {\n // Manifest types\n PluginCapability,\n PluginCategory,\n PluginStatus,\n PluginAuthor,\n PluginCompatibility,\n ProviderConfig,\n SearchProviderConfig,\n PluginPermissions,\n PluginManifest,\n InstalledPluginInfo,\n} from './plugins/manifest';\n\nexport type {\n // Theme plugin types\n ColorPalette,\n Typography,\n Spacing,\n Effects,\n ThemeTokens,\n FontDefinition,\n EmbeddedFont,\n ThemeMetadata,\n SubsystemOverrides,\n ThemePlugin,\n ThemePluginExport,\n} from './plugins/theme';\n\nexport type {\n // Roleplay template plugin types\n RoleplayTemplateConfig,\n RoleplayTemplateMetadata,\n RoleplayTemplatePlugin,\n RoleplayTemplatePluginExport,\n} from './plugins/roleplay-template';\n\nexport type {\n // Tool plugin types\n ToolMetadata,\n ToolHierarchyInfo,\n ToolExecutionContext,\n ToolExecutionResult,\n ToolPlugin,\n ToolPluginExport,\n} from './plugins/tool';\n\nexport type {\n // Search provider plugin types\n SearchProviderMetadata,\n SearchProviderConfigRequirements,\n SearchResult,\n SearchOutput,\n SearchProviderPlugin,\n SearchProviderPluginExport,\n} from './plugins/search-provider';\n\n// ============================================================================\n// Common Types\n// ============================================================================\n\nexport type { LogLevel, LogContext, PluginLogger } from './common/logger';\n\n// Error classes (these are values, not just types)\nexport {\n PluginError,\n ApiKeyError,\n ProviderApiError,\n RateLimitError,\n ConfigurationError,\n ModelNotFoundError,\n AttachmentError,\n ToolExecutionError,\n} from './common/errors';\n\n// Logger factories\nexport { createConsoleLogger, createNoopLogger } from './common/logger';\n\n// ============================================================================\n// Version\n// ============================================================================\n\n/**\n * Version of the plugin-types package.\n * Can be used at runtime to check compatibility.\n */\nexport const PLUGIN_TYPES_VERSION = '1.15.1';\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -110,7 +110,7 @@ function createNoopLogger() {
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
// src/index.ts
|
|
113
|
-
var PLUGIN_TYPES_VERSION = "1.
|
|
113
|
+
var PLUGIN_TYPES_VERSION = "1.15.1";
|
|
114
114
|
|
|
115
115
|
export { ApiKeyError, AttachmentError, ConfigurationError, ModelNotFoundError, PLUGIN_TYPES_VERSION, PluginError, ProviderApiError, RateLimitError, ToolExecutionError, createConsoleLogger, createNoopLogger, isLocalEmbeddingProvider };
|
|
116
116
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/llm/embeddings.ts","../src/common/errors.ts","../src/common/logger.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Embedding Provider Types for Quilltap plugin development\n *\n * Defines interfaces for embedding providers that can be implemented\n * by plugins to provide text-to-vector embedding functionality.\n *\n * @module @quilltap/plugin-types/llm/embeddings\n */\n\n/**\n * Result of an embedding operation\n */\nexport interface EmbeddingResult {\n /** The embedding vector (array of floating point numbers) */\n embedding: number[];\n /** The model used to generate the embedding */\n model: string;\n /** Number of dimensions in the embedding vector */\n dimensions: number;\n /** Token usage information (if available) */\n usage?: {\n promptTokens: number;\n totalTokens: number;\n cost?: number;\n };\n}\n\n/**\n * Options for embedding generation\n */\nexport interface EmbeddingOptions {\n /** Desired dimensions for the embedding (if model supports variable dimensions) */\n dimensions?: number;\n}\n\n/**\n * Standard embedding provider interface\n *\n * This is the base interface for all embedding providers that use\n * external APIs (OpenAI, Ollama, OpenRouter, etc.)\n */\nexport interface EmbeddingProvider {\n /**\n * Generate an embedding for a single text\n *\n * @param text The text to embed\n * @param model The model to use\n * @param apiKey The API key for authentication\n * @param options Optional configuration\n * @returns The embedding result\n */\n generateEmbedding(\n text: string,\n model: string,\n apiKey: string,\n options?: EmbeddingOptions\n ): Promise<EmbeddingResult>;\n\n /**\n * Generate embeddings for multiple texts in a batch\n *\n * @param texts Array of texts to embed\n * @param model The model to use\n * @param apiKey The API key for authentication\n * @param options Optional configuration\n * @returns Array of embedding results\n */\n generateBatchEmbeddings?(\n texts: string[],\n model: string,\n apiKey: string,\n options?: EmbeddingOptions\n ): Promise<EmbeddingResult[]>;\n\n /**\n * Get available embedding models\n *\n * @param apiKey The API key for authentication\n * @returns Array of model IDs\n */\n getAvailableModels?(apiKey: string): Promise<string[]>;\n\n /**\n * Check if the provider is available and properly configured\n *\n * @param apiKey Optional API key to validate\n * @returns True if the provider is ready to use\n */\n isAvailable?(apiKey?: string): Promise<boolean>;\n}\n\n/**\n * Serializable state for local embedding providers\n *\n * Used by providers like TF-IDF that maintain vocabulary state\n */\nexport interface LocalEmbeddingProviderState {\n /** The vocabulary as an array of [term, index] pairs */\n vocabulary: [string, number][];\n /** The IDF (Inverse Document Frequency) weights */\n idf: number[];\n /** Average document length across the corpus */\n avgDocLength: number;\n /** Size of the vocabulary */\n vocabularySize: number;\n /** Whether bigrams are included in the vocabulary */\n includeBigrams: boolean;\n /** Timestamp when the vocabulary was fitted */\n fittedAt: string;\n}\n\n/**\n * Local embedding provider interface\n *\n * Extended interface for local/offline embedding providers that\n * maintain vocabulary state (like TF-IDF). These providers don't\n * require API keys and can work entirely offline.\n */\nexport interface LocalEmbeddingProvider extends Omit<EmbeddingProvider, 'generateEmbedding' | 'generateBatchEmbeddings'> {\n /**\n * Generate an embedding for a single text\n * Local providers don't need apiKey parameter\n *\n * @param text The text to embed\n * @returns The embedding result\n */\n generateEmbedding(text: string): EmbeddingResult;\n\n /**\n * Generate embeddings for multiple texts in a batch\n *\n * @param texts Array of texts to embed\n * @returns Array of embedding results\n */\n generateBatchEmbeddings(texts: string[]): EmbeddingResult[];\n\n /**\n * Fit the vocabulary on a corpus of documents\n *\n * This method analyzes the corpus to build vocabulary, calculate IDF weights,\n * and other statistics needed for embedding generation.\n *\n * @param documents Array of text documents to analyze\n */\n fitCorpus(documents: string[]): void;\n\n /**\n * Check if the vocabulary has been fitted\n *\n * @returns True if fitCorpus has been called with documents\n */\n isFitted(): boolean;\n\n /**\n * Load state from a serialized representation\n *\n * @param state The serialized provider state\n */\n loadState(state: LocalEmbeddingProviderState): void;\n\n /**\n * Get the current state for serialization\n *\n * @returns The provider state, or null if not fitted\n */\n getState(): LocalEmbeddingProviderState | null;\n\n /**\n * Get the vocabulary size\n *\n * @returns Number of terms in the vocabulary\n */\n getVocabularySize(): number;\n\n /**\n * Get the embedding dimensions\n *\n * @returns Number of dimensions in generated embeddings\n */\n getDimensions(): number;\n}\n\n/**\n * Type guard to check if a provider is a local embedding provider\n */\nexport function isLocalEmbeddingProvider(\n provider: EmbeddingProvider | LocalEmbeddingProvider\n): provider is LocalEmbeddingProvider {\n return 'fitCorpus' in provider && 'loadState' in provider && 'getState' in provider;\n}\n","/**\n * Common error types for Quilltap plugin development\n *\n * @module @quilltap/plugin-types/common/errors\n */\n\n/**\n * Base plugin error\n *\n * All plugin-specific errors should extend this class.\n */\nexport class PluginError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly pluginName?: string\n ) {\n super(message);\n this.name = 'PluginError';\n }\n}\n\n/**\n * API key validation error\n *\n * Thrown when an API key is invalid or has insufficient permissions.\n */\nexport class ApiKeyError extends PluginError {\n constructor(message: string, pluginName?: string) {\n super(message, 'API_KEY_ERROR', pluginName);\n this.name = 'ApiKeyError';\n }\n}\n\n/**\n * Provider API error\n *\n * Thrown when the provider API returns an error.\n */\nexport class ProviderApiError extends PluginError {\n constructor(\n message: string,\n public readonly statusCode?: number,\n public readonly response?: unknown,\n pluginName?: string\n ) {\n super(message, 'PROVIDER_API_ERROR', pluginName);\n this.name = 'ProviderApiError';\n }\n}\n\n/**\n * Rate limit error\n *\n * Thrown when the provider rate limits the request.\n */\nexport class RateLimitError extends ProviderApiError {\n public override readonly code = 'RATE_LIMIT_ERROR';\n\n constructor(\n message: string,\n public readonly retryAfter?: number,\n pluginName?: string\n ) {\n super(message, 429, undefined, pluginName);\n this.name = 'RateLimitError';\n }\n}\n\n/**\n * Configuration error\n *\n * Thrown when plugin configuration is invalid.\n */\nexport class ConfigurationError extends PluginError {\n constructor(message: string, pluginName?: string) {\n super(message, 'CONFIGURATION_ERROR', pluginName);\n this.name = 'ConfigurationError';\n }\n}\n\n/**\n * Model not found error\n *\n * Thrown when a requested model is not available.\n */\nexport class ModelNotFoundError extends PluginError {\n constructor(\n message: string,\n public readonly modelId?: string,\n pluginName?: string\n ) {\n super(message, 'MODEL_NOT_FOUND', pluginName);\n this.name = 'ModelNotFoundError';\n }\n}\n\n/**\n * Attachment error\n *\n * Thrown when there's an issue processing file attachments.\n */\nexport class AttachmentError extends PluginError {\n constructor(\n message: string,\n public readonly attachmentId?: string,\n pluginName?: string\n ) {\n super(message, 'ATTACHMENT_ERROR', pluginName);\n this.name = 'AttachmentError';\n }\n}\n\n/**\n * Tool execution error\n *\n * Thrown when a tool call fails to execute.\n */\nexport class ToolExecutionError extends PluginError {\n constructor(\n message: string,\n public readonly toolName?: string,\n pluginName?: string\n ) {\n super(message, 'TOOL_EXECUTION_ERROR', pluginName);\n this.name = 'ToolExecutionError';\n }\n}\n","/**\n * Logger types for Quilltap plugin development\n *\n * @module @quilltap/plugin-types/common/logger\n */\n\n/**\n * Log level type\n */\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\n/**\n * Log context metadata\n */\nexport interface LogContext {\n /** Context identifier (e.g., module name) */\n context?: string;\n /** Additional metadata */\n [key: string]: unknown;\n}\n\n/**\n * Logger interface that plugins can implement or receive\n *\n * This interface is compatible with Quilltap's built-in logger.\n * Plugins can use this interface to accept a logger from the host\n * application or implement their own logging.\n */\nexport interface PluginLogger {\n /**\n * Log a debug message\n * @param message Message to log\n * @param context Optional context metadata\n */\n debug(message: string, context?: LogContext): void;\n\n /**\n * Log an info message\n * @param message Message to log\n * @param context Optional context metadata\n */\n info(message: string, context?: LogContext): void;\n\n /**\n * Log a warning message\n * @param message Message to log\n * @param context Optional context metadata\n */\n warn(message: string, context?: LogContext): void;\n\n /**\n * Log an error message\n * @param message Message to log\n * @param context Optional context metadata\n * @param error Optional error object\n */\n error(message: string, context?: LogContext, error?: Error): void;\n}\n\n/**\n * Simple console-based logger for standalone plugin development\n *\n * This logger writes to the console and is useful for local\n * plugin development and testing.\n *\n * @param prefix Prefix to add to all log messages\n * @param minLevel Minimum log level to output (default: 'info')\n * @returns A PluginLogger instance\n *\n * @example\n * ```typescript\n * const logger = createConsoleLogger('my-plugin', 'debug');\n * logger.debug('Initializing plugin', { version: '1.0.0' });\n * logger.info('Plugin ready');\n * logger.error('Failed to connect', { endpoint: 'api.example.com' }, new Error('Connection refused'));\n * ```\n */\nexport function createConsoleLogger(prefix: string, minLevel: LogLevel = 'info'): PluginLogger {\n const levels: LogLevel[] = ['debug', 'info', 'warn', 'error'];\n const shouldLog = (level: LogLevel): boolean =>\n levels.indexOf(level) >= levels.indexOf(minLevel);\n\n const formatContext = (context?: LogContext): string => {\n if (!context) return '';\n const entries = Object.entries(context)\n .filter(([key]) => key !== 'context')\n .map(([key, value]) => `${key}=${JSON.stringify(value)}`)\n .join(' ');\n return entries ? ` ${entries}` : '';\n };\n\n return {\n debug: (message: string, context?: LogContext): void => {\n if (shouldLog('debug')) {\n console.debug(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n info: (message: string, context?: LogContext): void => {\n if (shouldLog('info')) {\n console.info(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n warn: (message: string, context?: LogContext): void => {\n if (shouldLog('warn')) {\n console.warn(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n error: (message: string, context?: LogContext, error?: Error): void => {\n if (shouldLog('error')) {\n console.error(\n `[${prefix}] ${message}${formatContext(context)}`,\n error ? `\\n${error.stack || error.message}` : ''\n );\n }\n },\n };\n}\n\n/**\n * No-op logger for production or when logging is disabled\n *\n * @returns A PluginLogger that does nothing\n */\nexport function createNoopLogger(): PluginLogger {\n const noop = (): void => {};\n return {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n };\n}\n","/**\n * @quilltap/plugin-types\n *\n * Type definitions for Quilltap plugin development.\n *\n * This package provides TypeScript types and interfaces for building\n * Quilltap plugins, including LLM providers, authentication providers,\n * and utility plugins.\n *\n * @packageDocumentation\n * @module @quilltap/plugin-types\n */\n\n// ============================================================================\n// LLM Types\n// ============================================================================\n\nexport type {\n // Core message types\n FileAttachment,\n LLMMessage,\n JSONSchemaDefinition,\n ResponseFormat,\n LLMParams,\n\n // Response types\n TokenUsage,\n CacheUsage,\n AttachmentResults,\n LLMResponse,\n StreamChunk,\n\n // Image generation types\n ImageGenParams,\n GeneratedImage,\n ImageGenResponse,\n\n // Model metadata\n ModelWarningLevel,\n ModelWarning,\n ModelMetadata,\n\n // Provider interfaces\n LLMProvider,\n ImageGenProvider,\n} from './llm/base';\n\nexport type {\n // Tool definitions\n OpenAIToolDefinition,\n UniversalTool,\n AnthropicToolDefinition,\n GoogleToolDefinition,\n\n // Tool calls\n ToolCall,\n ToolCallRequest,\n ToolResult,\n ToolFormatOptions,\n} from './llm/tools';\n\nexport type {\n // Embedding types\n EmbeddingResult,\n EmbeddingOptions,\n EmbeddingProvider,\n LocalEmbeddingProviderState,\n LocalEmbeddingProvider,\n} from './llm/embeddings';\n\nexport { isLocalEmbeddingProvider } from './llm/embeddings';\n\n// ============================================================================\n// Plugin Types\n// ============================================================================\n\nexport type {\n // Provider plugin types\n ProviderMetadata,\n ProviderConfigRequirements,\n ProviderCapabilities,\n AttachmentSupport,\n ModelInfo,\n EmbeddingModelInfo,\n ImageGenerationModelInfo,\n ImageStyleInfo,\n ImageProviderConstraints,\n IconProps,\n PluginIconData,\n LLMProviderPlugin,\n ProviderPluginExport,\n // Runtime configuration types\n MessageFormatSupport,\n CheapModelConfig,\n ToolFormatType,\n} from './plugins/provider';\n\nexport type {\n // Manifest types\n PluginCapability,\n PluginCategory,\n PluginStatus,\n PluginAuthor,\n PluginCompatibility,\n ProviderConfig,\n SearchProviderConfig,\n PluginPermissions,\n PluginManifest,\n InstalledPluginInfo,\n} from './plugins/manifest';\n\nexport type {\n // Theme plugin types\n ColorPalette,\n Typography,\n Spacing,\n Effects,\n ThemeTokens,\n FontDefinition,\n EmbeddedFont,\n ThemeMetadata,\n SubsystemOverrides,\n ThemePlugin,\n ThemePluginExport,\n} from './plugins/theme';\n\nexport type {\n // Roleplay template plugin types\n RoleplayTemplateConfig,\n RoleplayTemplateMetadata,\n RoleplayTemplatePlugin,\n RoleplayTemplatePluginExport,\n} from './plugins/roleplay-template';\n\nexport type {\n // Tool plugin types\n ToolMetadata,\n ToolHierarchyInfo,\n ToolExecutionContext,\n ToolExecutionResult,\n ToolPlugin,\n ToolPluginExport,\n} from './plugins/tool';\n\nexport type {\n // File storage plugin types\n FileBackendCapabilities,\n FileBackendMetadata,\n FileMetadata,\n FileStorageBackend,\n FileStorageConfigField,\n FileStorageProviderPlugin,\n FileStoragePluginExport,\n} from './plugins/file-storage';\n\nexport type {\n // Search provider plugin types\n SearchProviderMetadata,\n SearchProviderConfigRequirements,\n SearchResult,\n SearchOutput,\n SearchProviderPlugin,\n SearchProviderPluginExport,\n} from './plugins/search-provider';\n\n// ============================================================================\n// Common Types\n// ============================================================================\n\nexport type { LogLevel, LogContext, PluginLogger } from './common/logger';\n\n// Error classes (these are values, not just types)\nexport {\n PluginError,\n ApiKeyError,\n ProviderApiError,\n RateLimitError,\n ConfigurationError,\n ModelNotFoundError,\n AttachmentError,\n ToolExecutionError,\n} from './common/errors';\n\n// Logger factories\nexport { createConsoleLogger, createNoopLogger } from './common/logger';\n\n// ============================================================================\n// Version\n// ============================================================================\n\n/**\n * Version of the plugin-types package.\n * Can be used at runtime to check compatibility.\n */\nexport const PLUGIN_TYPES_VERSION = '1.14.0';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/llm/embeddings.ts","../src/common/errors.ts","../src/common/logger.ts","../src/index.ts"],"names":[],"mappings":";AAyLO,SAAS,yBACd,QAAA,EACoC;AACpC,EAAA,OAAO,WAAA,IAAe,QAAA,IAAY,WAAA,IAAe,QAAA,IAAY,UAAA,IAAc,QAAA;AAC7E;;;AClLO,IAAM,WAAA,GAAN,cAA0B,KAAA,CAAM;AAAA,EACrC,WAAA,CACE,OAAA,EACgB,IAAA,EACA,UAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAGhB,IAAA,IAAA,CAAK,IAAA,GAAO,aAAA;AAAA,EACd;AACF;AAOO,IAAM,WAAA,GAAN,cAA0B,WAAA,CAAY;AAAA,EAC3C,WAAA,CAAY,SAAiB,UAAA,EAAqB;AAChD,IAAA,KAAA,CAAM,OAAA,EAAS,iBAAiB,UAAU,CAAA;AAC1C,IAAA,IAAA,CAAK,IAAA,GAAO,aAAA;AAAA,EACd;AACF;AAOO,IAAM,gBAAA,GAAN,cAA+B,WAAA,CAAY;AAAA,EAChD,WAAA,CACE,OAAA,EACgB,UAAA,EACA,QAAA,EAChB,UAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,sBAAsB,UAAU,CAAA;AAJ/B,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAIhB,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AAAA,EACd;AACF;AAOO,IAAM,cAAA,GAAN,cAA6B,gBAAA,CAAiB;AAAA,EAGnD,WAAA,CACE,OAAA,EACgB,UAAA,EAChB,UAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,GAAA,EAAK,MAAA,EAAW,UAAU,CAAA;AAHzB,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAJlB,IAAA,IAAA,CAAyB,IAAA,GAAO,kBAAA;AAQ9B,IAAA,IAAA,CAAK,IAAA,GAAO,gBAAA;AAAA,EACd;AACF;AAOO,IAAM,kBAAA,GAAN,cAAiC,WAAA,CAAY;AAAA,EAClD,WAAA,CAAY,SAAiB,UAAA,EAAqB;AAChD,IAAA,KAAA,CAAM,OAAA,EAAS,uBAAuB,UAAU,CAAA;AAChD,IAAA,IAAA,CAAK,IAAA,GAAO,oBAAA;AAAA,EACd;AACF;AAOO,IAAM,kBAAA,GAAN,cAAiC,WAAA,CAAY;AAAA,EAClD,WAAA,CACE,OAAA,EACgB,OAAA,EAChB,UAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,mBAAmB,UAAU,CAAA;AAH5B,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAIhB,IAAA,IAAA,CAAK,IAAA,GAAO,oBAAA;AAAA,EACd;AACF;AAOO,IAAM,eAAA,GAAN,cAA8B,WAAA,CAAY;AAAA,EAC/C,WAAA,CACE,OAAA,EACgB,YAAA,EAChB,UAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,oBAAoB,UAAU,CAAA;AAH7B,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAIhB,IAAA,IAAA,CAAK,IAAA,GAAO,iBAAA;AAAA,EACd;AACF;AAOO,IAAM,kBAAA,GAAN,cAAiC,WAAA,CAAY;AAAA,EAClD,WAAA,CACE,OAAA,EACgB,QAAA,EAChB,UAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAA,EAAS,wBAAwB,UAAU,CAAA;AAHjC,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAIhB,IAAA,IAAA,CAAK,IAAA,GAAO,oBAAA;AAAA,EACd;AACF;;;AClDO,SAAS,mBAAA,CAAoB,MAAA,EAAgB,QAAA,GAAqB,MAAA,EAAsB;AAC7F,EAAA,MAAM,MAAA,GAAqB,CAAC,OAAA,EAAS,MAAA,EAAQ,QAAQ,OAAO,CAAA;AAC5D,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KACjB,MAAA,CAAO,QAAQ,KAAK,CAAA,IAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA;AAElD,EAAA,MAAM,aAAA,GAAgB,CAAC,OAAA,KAAiC;AACtD,IAAA,IAAI,CAAC,SAAS,OAAO,EAAA;AACrB,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,CACnC,MAAA,CAAO,CAAC,CAAC,GAAG,CAAA,KAAM,GAAA,KAAQ,SAAS,CAAA,CACnC,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA,CAAE,CAAA,CACvD,KAAK,GAAG,CAAA;AACX,IAAA,OAAO,OAAA,GAAU,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,GAAK,EAAA;AAAA,EACnC,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,CAAC,OAAA,EAAiB,OAAA,KAA+B;AACtD,MAAA,IAAI,SAAA,CAAU,OAAO,CAAA,EAAG;AACtB,QAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,MAAM,CAAA,EAAA,EAAK,OAAO,CAAA,EAAG,aAAA,CAAc,OAAO,CAAC,CAAA,CAAE,CAAA;AAAA,MACjE;AAAA,IACF,CAAA;AAAA,IAEA,IAAA,EAAM,CAAC,OAAA,EAAiB,OAAA,KAA+B;AACrD,MAAA,IAAI,SAAA,CAAU,MAAM,CAAA,EAAG;AACrB,QAAA,OAAA,CAAQ,IAAA,CAAK,IAAI,MAAM,CAAA,EAAA,EAAK,OAAO,CAAA,EAAG,aAAA,CAAc,OAAO,CAAC,CAAA,CAAE,CAAA;AAAA,MAChE;AAAA,IACF,CAAA;AAAA,IAEA,IAAA,EAAM,CAAC,OAAA,EAAiB,OAAA,KAA+B;AACrD,MAAA,IAAI,SAAA,CAAU,MAAM,CAAA,EAAG;AACrB,QAAA,OAAA,CAAQ,IAAA,CAAK,IAAI,MAAM,CAAA,EAAA,EAAK,OAAO,CAAA,EAAG,aAAA,CAAc,OAAO,CAAC,CAAA,CAAE,CAAA;AAAA,MAChE;AAAA,IACF,CAAA;AAAA,IAEA,KAAA,EAAO,CAAC,OAAA,EAAiB,OAAA,EAAsB,KAAA,KAAwB;AACrE,MAAA,IAAI,SAAA,CAAU,OAAO,CAAA,EAAG;AACtB,QAAA,OAAA,CAAQ,KAAA;AAAA,UACN,IAAI,MAAM,CAAA,EAAA,EAAK,OAAO,CAAA,EAAG,aAAA,CAAc,OAAO,CAAC,CAAA,CAAA;AAAA,UAC/C,KAAA,GAAQ;AAAA,EAAK,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,OAAO,CAAA,CAAA,GAAK;AAAA,SAChD;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AAOO,SAAS,gBAAA,GAAiC;AAC/C,EAAA,MAAM,OAAO,MAAY;AAAA,EAAC,CAAA;AAC1B,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,IAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AACF;;;ACiDO,IAAM,oBAAA,GAAuB","file":"index.mjs","sourcesContent":["/**\n * Embedding Provider Types for Quilltap plugin development\n *\n * Defines interfaces for embedding providers that can be implemented\n * by plugins to provide text-to-vector embedding functionality.\n *\n * @module @quilltap/plugin-types/llm/embeddings\n */\n\n/**\n * Result of an embedding operation\n */\nexport interface EmbeddingResult {\n /** The embedding vector (array of floating point numbers) */\n embedding: number[];\n /** The model used to generate the embedding */\n model: string;\n /** Number of dimensions in the embedding vector */\n dimensions: number;\n /** Token usage information (if available) */\n usage?: {\n promptTokens: number;\n totalTokens: number;\n cost?: number;\n };\n}\n\n/**\n * Options for embedding generation\n */\nexport interface EmbeddingOptions {\n /** Desired dimensions for the embedding (if model supports variable dimensions) */\n dimensions?: number;\n}\n\n/**\n * Standard embedding provider interface\n *\n * This is the base interface for all embedding providers that use\n * external APIs (OpenAI, Ollama, OpenRouter, etc.)\n */\nexport interface EmbeddingProvider {\n /**\n * Generate an embedding for a single text\n *\n * @param text The text to embed\n * @param model The model to use\n * @param apiKey The API key for authentication\n * @param options Optional configuration\n * @returns The embedding result\n */\n generateEmbedding(\n text: string,\n model: string,\n apiKey: string,\n options?: EmbeddingOptions\n ): Promise<EmbeddingResult>;\n\n /**\n * Generate embeddings for multiple texts in a batch\n *\n * @param texts Array of texts to embed\n * @param model The model to use\n * @param apiKey The API key for authentication\n * @param options Optional configuration\n * @returns Array of embedding results\n */\n generateBatchEmbeddings?(\n texts: string[],\n model: string,\n apiKey: string,\n options?: EmbeddingOptions\n ): Promise<EmbeddingResult[]>;\n\n /**\n * Get available embedding models\n *\n * @param apiKey The API key for authentication\n * @returns Array of model IDs\n */\n getAvailableModels?(apiKey: string): Promise<string[]>;\n\n /**\n * Check if the provider is available and properly configured\n *\n * @param apiKey Optional API key to validate\n * @returns True if the provider is ready to use\n */\n isAvailable?(apiKey?: string): Promise<boolean>;\n}\n\n/**\n * Serializable state for local embedding providers\n *\n * Used by providers like TF-IDF that maintain vocabulary state\n */\nexport interface LocalEmbeddingProviderState {\n /** The vocabulary as an array of [term, index] pairs */\n vocabulary: [string, number][];\n /** The IDF (Inverse Document Frequency) weights */\n idf: number[];\n /** Average document length across the corpus */\n avgDocLength: number;\n /** Size of the vocabulary */\n vocabularySize: number;\n /** Whether bigrams are included in the vocabulary */\n includeBigrams: boolean;\n /** Timestamp when the vocabulary was fitted */\n fittedAt: string;\n}\n\n/**\n * Local embedding provider interface\n *\n * Extended interface for local/offline embedding providers that\n * maintain vocabulary state (like TF-IDF). These providers don't\n * require API keys and can work entirely offline.\n */\nexport interface LocalEmbeddingProvider extends Omit<EmbeddingProvider, 'generateEmbedding' | 'generateBatchEmbeddings'> {\n /**\n * Generate an embedding for a single text\n * Local providers don't need apiKey parameter\n *\n * @param text The text to embed\n * @returns The embedding result\n */\n generateEmbedding(text: string): EmbeddingResult;\n\n /**\n * Generate embeddings for multiple texts in a batch\n *\n * @param texts Array of texts to embed\n * @returns Array of embedding results\n */\n generateBatchEmbeddings(texts: string[]): EmbeddingResult[];\n\n /**\n * Fit the vocabulary on a corpus of documents\n *\n * This method analyzes the corpus to build vocabulary, calculate IDF weights,\n * and other statistics needed for embedding generation.\n *\n * @param documents Array of text documents to analyze\n */\n fitCorpus(documents: string[]): void;\n\n /**\n * Check if the vocabulary has been fitted\n *\n * @returns True if fitCorpus has been called with documents\n */\n isFitted(): boolean;\n\n /**\n * Load state from a serialized representation\n *\n * @param state The serialized provider state\n */\n loadState(state: LocalEmbeddingProviderState): void;\n\n /**\n * Get the current state for serialization\n *\n * @returns The provider state, or null if not fitted\n */\n getState(): LocalEmbeddingProviderState | null;\n\n /**\n * Get the vocabulary size\n *\n * @returns Number of terms in the vocabulary\n */\n getVocabularySize(): number;\n\n /**\n * Get the embedding dimensions\n *\n * @returns Number of dimensions in generated embeddings\n */\n getDimensions(): number;\n}\n\n/**\n * Type guard to check if a provider is a local embedding provider\n */\nexport function isLocalEmbeddingProvider(\n provider: EmbeddingProvider | LocalEmbeddingProvider\n): provider is LocalEmbeddingProvider {\n return 'fitCorpus' in provider && 'loadState' in provider && 'getState' in provider;\n}\n","/**\n * Common error types for Quilltap plugin development\n *\n * @module @quilltap/plugin-types/common/errors\n */\n\n/**\n * Base plugin error\n *\n * All plugin-specific errors should extend this class.\n */\nexport class PluginError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly pluginName?: string\n ) {\n super(message);\n this.name = 'PluginError';\n }\n}\n\n/**\n * API key validation error\n *\n * Thrown when an API key is invalid or has insufficient permissions.\n */\nexport class ApiKeyError extends PluginError {\n constructor(message: string, pluginName?: string) {\n super(message, 'API_KEY_ERROR', pluginName);\n this.name = 'ApiKeyError';\n }\n}\n\n/**\n * Provider API error\n *\n * Thrown when the provider API returns an error.\n */\nexport class ProviderApiError extends PluginError {\n constructor(\n message: string,\n public readonly statusCode?: number,\n public readonly response?: unknown,\n pluginName?: string\n ) {\n super(message, 'PROVIDER_API_ERROR', pluginName);\n this.name = 'ProviderApiError';\n }\n}\n\n/**\n * Rate limit error\n *\n * Thrown when the provider rate limits the request.\n */\nexport class RateLimitError extends ProviderApiError {\n public override readonly code = 'RATE_LIMIT_ERROR';\n\n constructor(\n message: string,\n public readonly retryAfter?: number,\n pluginName?: string\n ) {\n super(message, 429, undefined, pluginName);\n this.name = 'RateLimitError';\n }\n}\n\n/**\n * Configuration error\n *\n * Thrown when plugin configuration is invalid.\n */\nexport class ConfigurationError extends PluginError {\n constructor(message: string, pluginName?: string) {\n super(message, 'CONFIGURATION_ERROR', pluginName);\n this.name = 'ConfigurationError';\n }\n}\n\n/**\n * Model not found error\n *\n * Thrown when a requested model is not available.\n */\nexport class ModelNotFoundError extends PluginError {\n constructor(\n message: string,\n public readonly modelId?: string,\n pluginName?: string\n ) {\n super(message, 'MODEL_NOT_FOUND', pluginName);\n this.name = 'ModelNotFoundError';\n }\n}\n\n/**\n * Attachment error\n *\n * Thrown when there's an issue processing file attachments.\n */\nexport class AttachmentError extends PluginError {\n constructor(\n message: string,\n public readonly attachmentId?: string,\n pluginName?: string\n ) {\n super(message, 'ATTACHMENT_ERROR', pluginName);\n this.name = 'AttachmentError';\n }\n}\n\n/**\n * Tool execution error\n *\n * Thrown when a tool call fails to execute.\n */\nexport class ToolExecutionError extends PluginError {\n constructor(\n message: string,\n public readonly toolName?: string,\n pluginName?: string\n ) {\n super(message, 'TOOL_EXECUTION_ERROR', pluginName);\n this.name = 'ToolExecutionError';\n }\n}\n","/**\n * Logger types for Quilltap plugin development\n *\n * @module @quilltap/plugin-types/common/logger\n */\n\n/**\n * Log level type\n */\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\n/**\n * Log context metadata\n */\nexport interface LogContext {\n /** Context identifier (e.g., module name) */\n context?: string;\n /** Additional metadata */\n [key: string]: unknown;\n}\n\n/**\n * Logger interface that plugins can implement or receive\n *\n * This interface is compatible with Quilltap's built-in logger.\n * Plugins can use this interface to accept a logger from the host\n * application or implement their own logging.\n */\nexport interface PluginLogger {\n /**\n * Log a debug message\n * @param message Message to log\n * @param context Optional context metadata\n */\n debug(message: string, context?: LogContext): void;\n\n /**\n * Log an info message\n * @param message Message to log\n * @param context Optional context metadata\n */\n info(message: string, context?: LogContext): void;\n\n /**\n * Log a warning message\n * @param message Message to log\n * @param context Optional context metadata\n */\n warn(message: string, context?: LogContext): void;\n\n /**\n * Log an error message\n * @param message Message to log\n * @param context Optional context metadata\n * @param error Optional error object\n */\n error(message: string, context?: LogContext, error?: Error): void;\n}\n\n/**\n * Simple console-based logger for standalone plugin development\n *\n * This logger writes to the console and is useful for local\n * plugin development and testing.\n *\n * @param prefix Prefix to add to all log messages\n * @param minLevel Minimum log level to output (default: 'info')\n * @returns A PluginLogger instance\n *\n * @example\n * ```typescript\n * const logger = createConsoleLogger('my-plugin', 'debug');\n * logger.debug('Initializing plugin', { version: '1.0.0' });\n * logger.info('Plugin ready');\n * logger.error('Failed to connect', { endpoint: 'api.example.com' }, new Error('Connection refused'));\n * ```\n */\nexport function createConsoleLogger(prefix: string, minLevel: LogLevel = 'info'): PluginLogger {\n const levels: LogLevel[] = ['debug', 'info', 'warn', 'error'];\n const shouldLog = (level: LogLevel): boolean =>\n levels.indexOf(level) >= levels.indexOf(minLevel);\n\n const formatContext = (context?: LogContext): string => {\n if (!context) return '';\n const entries = Object.entries(context)\n .filter(([key]) => key !== 'context')\n .map(([key, value]) => `${key}=${JSON.stringify(value)}`)\n .join(' ');\n return entries ? ` ${entries}` : '';\n };\n\n return {\n debug: (message: string, context?: LogContext): void => {\n if (shouldLog('debug')) {\n console.debug(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n info: (message: string, context?: LogContext): void => {\n if (shouldLog('info')) {\n console.info(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n warn: (message: string, context?: LogContext): void => {\n if (shouldLog('warn')) {\n console.warn(`[${prefix}] ${message}${formatContext(context)}`);\n }\n },\n\n error: (message: string, context?: LogContext, error?: Error): void => {\n if (shouldLog('error')) {\n console.error(\n `[${prefix}] ${message}${formatContext(context)}`,\n error ? `\\n${error.stack || error.message}` : ''\n );\n }\n },\n };\n}\n\n/**\n * No-op logger for production or when logging is disabled\n *\n * @returns A PluginLogger that does nothing\n */\nexport function createNoopLogger(): PluginLogger {\n const noop = (): void => {};\n return {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n };\n}\n","/**\n * @quilltap/plugin-types\n *\n * Type definitions for Quilltap plugin development.\n *\n * This package provides TypeScript types and interfaces for building\n * Quilltap plugins, including LLM providers, authentication providers,\n * and utility plugins.\n *\n * @packageDocumentation\n * @module @quilltap/plugin-types\n */\n\n// ============================================================================\n// LLM Types\n// ============================================================================\n\nexport type {\n // Core message types\n FileAttachment,\n LLMMessage,\n JSONSchemaDefinition,\n ResponseFormat,\n LLMParams,\n\n // Response types\n TokenUsage,\n CacheUsage,\n AttachmentResults,\n LLMResponse,\n StreamChunk,\n\n // Image generation types\n ImageGenParams,\n GeneratedImage,\n ImageGenResponse,\n\n // Model metadata\n ModelWarningLevel,\n ModelWarning,\n ModelMetadata,\n\n // Provider interfaces\n LLMProvider,\n ImageGenProvider,\n} from './llm/base';\n\nexport type {\n // Tool definitions\n OpenAIToolDefinition,\n UniversalTool,\n AnthropicToolDefinition,\n GoogleToolDefinition,\n\n // Tool calls\n ToolCall,\n ToolCallRequest,\n ToolResult,\n ToolFormatOptions,\n} from './llm/tools';\n\nexport type {\n // Embedding types\n EmbeddingResult,\n EmbeddingOptions,\n EmbeddingProvider,\n LocalEmbeddingProviderState,\n LocalEmbeddingProvider,\n} from './llm/embeddings';\n\nexport { isLocalEmbeddingProvider } from './llm/embeddings';\n\n// ============================================================================\n// Plugin Types\n// ============================================================================\n\nexport type {\n // Provider plugin types\n ProviderMetadata,\n ProviderConfigRequirements,\n ProviderCapabilities,\n AttachmentSupport,\n ModelInfo,\n EmbeddingModelInfo,\n ImageGenerationModelInfo,\n ImageStyleInfo,\n ImageProviderConstraints,\n IconProps,\n PluginIconData,\n LLMProviderPlugin,\n ProviderPluginExport,\n // Runtime configuration types\n MessageFormatSupport,\n CheapModelConfig,\n ToolFormatType,\n} from './plugins/provider';\n\nexport type {\n // Manifest types\n PluginCapability,\n PluginCategory,\n PluginStatus,\n PluginAuthor,\n PluginCompatibility,\n ProviderConfig,\n SearchProviderConfig,\n PluginPermissions,\n PluginManifest,\n InstalledPluginInfo,\n} from './plugins/manifest';\n\nexport type {\n // Theme plugin types\n ColorPalette,\n Typography,\n Spacing,\n Effects,\n ThemeTokens,\n FontDefinition,\n EmbeddedFont,\n ThemeMetadata,\n SubsystemOverrides,\n ThemePlugin,\n ThemePluginExport,\n} from './plugins/theme';\n\nexport type {\n // Roleplay template plugin types\n RoleplayTemplateConfig,\n RoleplayTemplateMetadata,\n RoleplayTemplatePlugin,\n RoleplayTemplatePluginExport,\n} from './plugins/roleplay-template';\n\nexport type {\n // Tool plugin types\n ToolMetadata,\n ToolHierarchyInfo,\n ToolExecutionContext,\n ToolExecutionResult,\n ToolPlugin,\n ToolPluginExport,\n} from './plugins/tool';\n\nexport type {\n // Search provider plugin types\n SearchProviderMetadata,\n SearchProviderConfigRequirements,\n SearchResult,\n SearchOutput,\n SearchProviderPlugin,\n SearchProviderPluginExport,\n} from './plugins/search-provider';\n\n// ============================================================================\n// Common Types\n// ============================================================================\n\nexport type { LogLevel, LogContext, PluginLogger } from './common/logger';\n\n// Error classes (these are values, not just types)\nexport {\n PluginError,\n ApiKeyError,\n ProviderApiError,\n RateLimitError,\n ConfigurationError,\n ModelNotFoundError,\n AttachmentError,\n ToolExecutionError,\n} from './common/errors';\n\n// Logger factories\nexport { createConsoleLogger, createNoopLogger } from './common/logger';\n\n// ============================================================================\n// Version\n// ============================================================================\n\n/**\n * Version of the plugin-types package.\n * Can be used at runtime to check compatibility.\n */\nexport const PLUGIN_TYPES_VERSION = '1.15.1';\n"]}
|
package/dist/plugins/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { V as AnnotationButton, A as AttachmentSupport, a as ColorPalette, W as DialogueDetection, E as Effects, b as EmbeddedFont, c as EmbeddingModelInfo, F as FontDefinition, I as IconProps, d as ImageGenerationModelInfo, e as ImageProviderConstraints, g as InstalledPluginInfo, L as LLMProviderPlugin, h as ModelInfo, P as PluginAuthor, i as PluginCapability, j as PluginCategory, k as PluginCompatibility, m as PluginManifest, n as PluginPermissions, o as PluginStatus, p as ProviderCapabilities, q as ProviderConfig, r as ProviderConfigRequirements, s as ProviderMetadata, t as ProviderPluginExport, X as RenderingPattern, R as RoleplayTemplateConfig, u as RoleplayTemplateMetadata, v as RoleplayTemplatePlugin, w as RoleplayTemplatePluginExport, S as SearchOutput, x as SearchProviderConfig, y as SearchProviderConfigRequirements, z as SearchProviderMetadata, B as SearchProviderPlugin, D as SearchProviderPluginExport, G as SearchResult, H as Spacing, T as ThemeMetadata, K as ThemePlugin, N as ThemePluginExport, O as ThemeTokens, U as Typography } from '../index-
|
|
1
|
+
export { V as AnnotationButton, A as AttachmentSupport, a as ColorPalette, W as DialogueDetection, E as Effects, b as EmbeddedFont, c as EmbeddingModelInfo, F as FontDefinition, I as IconProps, d as ImageGenerationModelInfo, e as ImageProviderConstraints, g as InstalledPluginInfo, L as LLMProviderPlugin, h as ModelInfo, P as PluginAuthor, i as PluginCapability, j as PluginCategory, k as PluginCompatibility, m as PluginManifest, n as PluginPermissions, o as PluginStatus, p as ProviderCapabilities, q as ProviderConfig, r as ProviderConfigRequirements, s as ProviderMetadata, t as ProviderPluginExport, X as RenderingPattern, R as RoleplayTemplateConfig, u as RoleplayTemplateMetadata, v as RoleplayTemplatePlugin, w as RoleplayTemplatePluginExport, S as SearchOutput, x as SearchProviderConfig, y as SearchProviderConfigRequirements, z as SearchProviderMetadata, B as SearchProviderPlugin, D as SearchProviderPluginExport, G as SearchResult, H as Spacing, T as ThemeMetadata, K as ThemePlugin, N as ThemePluginExport, O as ThemeTokens, U as Typography } from '../index-vNgVyj-N.mjs';
|
|
2
2
|
import '../llm/index.mjs';
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { V as AnnotationButton, A as AttachmentSupport, a as ColorPalette, W as DialogueDetection, E as Effects, b as EmbeddedFont, c as EmbeddingModelInfo, F as FontDefinition, I as IconProps, d as ImageGenerationModelInfo, e as ImageProviderConstraints, g as InstalledPluginInfo, L as LLMProviderPlugin, h as ModelInfo, P as PluginAuthor, i as PluginCapability, j as PluginCategory, k as PluginCompatibility, m as PluginManifest, n as PluginPermissions, o as PluginStatus, p as ProviderCapabilities, q as ProviderConfig, r as ProviderConfigRequirements, s as ProviderMetadata, t as ProviderPluginExport, X as RenderingPattern, R as RoleplayTemplateConfig, u as RoleplayTemplateMetadata, v as RoleplayTemplatePlugin, w as RoleplayTemplatePluginExport, S as SearchOutput, x as SearchProviderConfig, y as SearchProviderConfigRequirements, z as SearchProviderMetadata, B as SearchProviderPlugin, D as SearchProviderPluginExport, G as SearchResult, H as Spacing, T as ThemeMetadata, K as ThemePlugin, N as ThemePluginExport, O as ThemeTokens, U as Typography } from '../index-
|
|
1
|
+
export { V as AnnotationButton, A as AttachmentSupport, a as ColorPalette, W as DialogueDetection, E as Effects, b as EmbeddedFont, c as EmbeddingModelInfo, F as FontDefinition, I as IconProps, d as ImageGenerationModelInfo, e as ImageProviderConstraints, g as InstalledPluginInfo, L as LLMProviderPlugin, h as ModelInfo, P as PluginAuthor, i as PluginCapability, j as PluginCategory, k as PluginCompatibility, m as PluginManifest, n as PluginPermissions, o as PluginStatus, p as ProviderCapabilities, q as ProviderConfig, r as ProviderConfigRequirements, s as ProviderMetadata, t as ProviderPluginExport, X as RenderingPattern, R as RoleplayTemplateConfig, u as RoleplayTemplateMetadata, v as RoleplayTemplatePlugin, w as RoleplayTemplatePluginExport, S as SearchOutput, x as SearchProviderConfig, y as SearchProviderConfigRequirements, z as SearchProviderMetadata, B as SearchProviderPlugin, D as SearchProviderPluginExport, G as SearchResult, H as Spacing, T as ThemeMetadata, K as ThemePlugin, N as ThemePluginExport, O as ThemeTokens, U as Typography } from '../index-CyhMLv4V.js';
|
|
2
2
|
import '../llm/index.js';
|