lumiverse-spindle-types 0.6.21 → 0.6.23

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/dist/api.d.ts CHANGED
@@ -2973,6 +2973,12 @@ export type WorkerToHost = {
2973
2973
  } | {
2974
2974
  type: "unsubscribe_event";
2975
2975
  event: string;
2976
+ } | {
2977
+ type: "register_frontend_runtime_capability";
2978
+ capability: import("./frontend-capabilities.js").SpindleFrontendRuntimeCapability;
2979
+ } | {
2980
+ type: "unregister_frontend_runtime_capability";
2981
+ capability: import("./frontend-capabilities.js").SpindleFrontendRuntimeCapability;
2976
2982
  } | {
2977
2983
  type: "register_macro";
2978
2984
  definition: MacroDefinitionDTO;
@@ -568,10 +568,15 @@ export type SpindleCloseButtonHandle = SpindleMountedComponent<SpindleCloseButto
568
568
  * ```
569
569
  */
570
570
  /** Handle returned by {@link SpindleComponentsHelper.mountHostSurface}. */
571
+ export type SpindleHostSurfaceJsonValue = null | boolean | number | string | readonly SpindleHostSurfaceJsonValue[] | {
572
+ readonly [key: string]: SpindleHostSurfaceJsonValue;
573
+ };
574
+ export type SpindleHostSurfaceProps = Record<string, SpindleHostSurfaceJsonValue>;
575
+ export type SpindleHostSurfaceEventHandler = (payload: SpindleHostSurfaceJsonValue) => void;
571
576
  export interface SpindleHostSurfaceHandle {
572
- update(props?: Record<string, unknown>): void;
577
+ update(props: SpindleHostSurfaceProps): void;
573
578
  destroy(): void;
574
- on(event: string, handler: (payload: unknown) => void): () => void;
579
+ on(event: string, handler: SpindleHostSurfaceEventHandler): () => void;
575
580
  }
576
581
  export interface SpindleComponentsHelper {
577
582
  mountTextInput(target: SpindleComponentTarget, options?: SpindleTextInputOptions): SpindleTextInputHandle;
@@ -592,5 +597,5 @@ export interface SpindleComponentsHelper {
592
597
  mountCloseButton(target: SpindleComponentTarget, options?: SpindleCloseButtonOptions): SpindleCloseButtonHandle;
593
598
  mountLoomBlockEditor(target: SpindleComponentTarget, options: SpindleLoomBlockEditorOptions): SpindleLoomBlockEditorHandle;
594
599
  /** Mount a host-owned named surface into extension-owned DOM. */
595
- mountHostSurface(target: SpindleComponentTarget, surfaceId: string, props?: Record<string, unknown>): SpindleHostSurfaceHandle;
600
+ mountHostSurface(target: SpindleComponentTarget, surfaceId: string, props?: SpindleHostSurfaceProps): SpindleHostSurfaceHandle;
596
601
  }
package/dist/dom.d.ts CHANGED
@@ -772,14 +772,17 @@ export interface SpindleDisplayResolverRegistry {
772
772
  }): void;
773
773
  }
774
774
  export interface SpindleSettingsAPI {
775
- get(key: string): Promise<unknown> | unknown;
776
- set(key: string, value: unknown): Promise<void> | void;
777
- remove(key: string): Promise<void> | void;
778
- watch(key: string, listener: (value: unknown) => void): () => void;
779
- core: {
780
- get(key: string): Promise<unknown> | unknown;
781
- watch(key: string, listener: (value: unknown) => void): () => void;
782
- list(): Promise<readonly string[]> | readonly string[];
775
+ get<T>(key: string): Promise<T | undefined>;
776
+ set<T>(key: string, value: T): Promise<void>;
777
+ remove(key: string): Promise<void>;
778
+ watch<T>(key: string, listener: (value: T | undefined) => void): () => void;
779
+ readonly core: {
780
+ get<T>(key: string): T | undefined;
781
+ watch<T>(key: string, listener: (value: T) => void): () => void;
782
+ list(): Array<{
783
+ key: string;
784
+ permission: string | null;
785
+ }>;
783
786
  isReady(): boolean;
784
787
  };
785
788
  }
@@ -787,38 +790,39 @@ export interface SpindleSettingsTabSection {
787
790
  readonly key: string;
788
791
  readonly titleKey: string;
789
792
  readonly titleFallback: string;
790
- readonly keywords?: readonly string[];
793
+ readonly keywords: readonly string[];
791
794
  }
792
795
  export interface SpindleSettingsTabOptions {
793
- /** Unique tab identifier. A shared tab id may belong to core or to another extension. */
794
- id: string;
795
- /** Tab title shown in settings navigation. */
796
- title: string;
796
+ /** A shared tab id may belong to core or to another extension. */
797
+ readonly id: string;
798
+ /** Metadata is ignored when a core tab owns this id. */
799
+ readonly title?: string;
797
800
  /** Short label for compact layouts. */
798
- shortName?: string;
801
+ readonly shortName?: string;
799
802
  /** Inline SVG string for the tab icon. */
800
- iconSvg?: string;
803
+ readonly iconSvg?: string;
801
804
  /** Description for search and command palette. */
802
- description?: string;
805
+ readonly description?: string;
803
806
  /** Keywords for search indexing. */
804
- keywords?: readonly string[];
807
+ readonly keywords?: readonly string[];
805
808
  /** Sub-sections within the settings tab for search indexing and navigation. */
806
- sections?: readonly SpindleSettingsTabSection[];
809
+ readonly sections?: readonly SpindleSettingsTabSection[];
807
810
  /**
808
811
  * Relative tab position: 'top', 'bottom', 'after-display', 'before-chat',
809
812
  * 'after-<tabId>', 'before-<tabId>', or any specific tab identifier.
810
813
  */
811
- position?: 'top' | 'bottom' | `after-${string}` | `before-${string}` | string;
814
+ readonly position?: string;
812
815
  /** Body order among registrants sharing a tab. Defaults to 100. */
813
- order?: number;
814
- /** Optional render callback for mounting tab content into root. */
815
- render?: (root: HTMLElement) => void | (() => void);
816
+ readonly order?: number;
816
817
  }
817
818
  export interface SpindleSettingsTabHandle {
818
- readonly id: string;
819
+ readonly registrationId: string;
820
+ readonly tabId: string;
819
821
  readonly root: HTMLElement;
820
- update(options?: Partial<SpindleSettingsTabOptions>): void;
822
+ setTitle(title: string): void;
823
+ activate(): void;
821
824
  destroy(): void;
825
+ onActivate(callback: () => void): () => void;
822
826
  }
823
827
  export interface SpindleStateSelectors {
824
828
  get<T = unknown>(selector: string): T;
@@ -837,16 +841,39 @@ export interface SpindleGeometryAPI {
837
841
  layoutElementRect(element: Element): DOMRect;
838
842
  createResizeController(element: Element, listener: (rect: DOMRect) => void): SpindleResizeController;
839
843
  }
844
+ export type SpindleHostSurfaceKind = "drawer_tab" | "settings_tab" | "command" | "route" | "modal" | "input_bar_action" | "ext_command";
845
+ export interface SpindleHostSurfaceRef {
846
+ kind: SpindleHostSurfaceKind;
847
+ id: string;
848
+ }
849
+ export type SpindleHostActionJsonValue = null | boolean | number | string | SpindleHostActionJsonValue[] | {
850
+ [key: string]: SpindleHostActionJsonValue;
851
+ };
852
+ export type SpindleHostActionParams = Record<string, SpindleHostActionJsonValue>;
840
853
  export interface SpindleHostSurfaceInfo {
854
+ kind: SpindleHostSurfaceKind;
841
855
  id: string;
842
- title?: string;
843
- capabilities?: readonly string[];
856
+ label: string;
857
+ description?: string;
858
+ keywords?: string[];
859
+ iconName?: string;
860
+ iconSvg?: string;
861
+ scope?: "global" | "chat" | "chat-idle" | "landing" | "character";
862
+ role?: "admin" | "owner";
863
+ owner?: string;
864
+ invocable?: boolean;
865
+ }
866
+ export interface SpindleHostSurfaceTarget {
867
+ kind: string;
868
+ id: string;
869
+ parentId?: string;
844
870
  }
871
+ export type SpindleHostSurfaceTargetHandler = (target: SpindleHostSurfaceTarget) => void;
845
872
  export interface SpindleHostSurfaceAPI {
846
- list(): readonly SpindleHostSurfaceInfo[] | Promise<readonly SpindleHostSurfaceInfo[]>;
847
- subscribe(listener: (surfaces: readonly SpindleHostSurfaceInfo[]) => void): () => void;
848
- invoke(surfaceId: string, method: string, params?: unknown): Promise<unknown>;
849
- registerDeepLinkTarget(target: string, handler: (params: Record<string, string>) => void): () => void;
873
+ list(kinds?: readonly SpindleHostSurfaceKind[]): SpindleHostSurfaceInfo[];
874
+ subscribe(listener: (surfaces: SpindleHostSurfaceInfo[]) => void): () => void;
875
+ invoke(ref: SpindleHostSurfaceRef, params?: SpindleHostActionParams): void | Promise<void>;
876
+ registerDeepLinkTarget(kind: string, id: string, handler: SpindleHostSurfaceTargetHandler): () => void;
850
877
  }
851
878
  export interface SpindleComponentOverrideOptions {
852
879
  componentId: string;
@@ -1205,7 +1232,7 @@ export interface SpindleFrontendContext {
1205
1232
  };
1206
1233
  /** Take over display-time content resolution in the browser. */
1207
1234
  display?: SpindleDisplayResolverRegistry;
1208
- manifest: import("./manifest").SpindleManifest;
1235
+ manifest: import("./manifest.js").SpindleManifest;
1209
1236
  settings?: SpindleSettingsAPI;
1210
1237
  registerComponentOverride?(options: SpindleComponentOverrideOptions): SpindleComponentOverrideHandle;
1211
1238
  registerDomDecorator?(options: SpindleDomDecoratorOptions): SpindleDomDecoratorHandle;
@@ -1,4 +1,5 @@
1
1
  import type { SpindlePermission } from "./permissions.js";
2
+ import type { SpindleFrontendRuntimeCapability } from "./frontend-capabilities.js";
2
3
  /** Extension info as returned by the backend API */
3
4
  export interface ExtensionInfo {
4
5
  id: string;
@@ -16,6 +17,8 @@ export interface ExtensionInfo {
16
17
  updated_at: number;
17
18
  has_frontend: boolean;
18
19
  has_backend: boolean;
20
+ /** Capabilities declared by the currently running backend worker. */
21
+ frontend_runtime_capabilities?: SpindleFrontendRuntimeCapability[];
19
22
  status: "running" | "stopped" | "error";
20
23
  metadata: Record<string, unknown>;
21
24
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Backend-declared capabilities that require the host to coordinate frontend
3
+ * extension startup before rendering dependent UI.
4
+ */
5
+ export declare const ALL_FRONTEND_RUNTIME_CAPABILITIES: readonly ["message_tag_interceptor"];
6
+ export type SpindleFrontendRuntimeCapability = (typeof ALL_FRONTEND_RUNTIME_CAPABILITIES)[number];
7
+ export declare function isValidFrontendRuntimeCapability(capability: string): capability is SpindleFrontendRuntimeCapability;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Backend-declared capabilities that require the host to coordinate frontend
3
+ * extension startup before rendering dependent UI.
4
+ */
5
+ export const ALL_FRONTEND_RUNTIME_CAPABILITIES = [
6
+ "message_tag_interceptor",
7
+ ];
8
+ export function isValidFrontendRuntimeCapability(capability) {
9
+ return ALL_FRONTEND_RUNTIME_CAPABILITIES.includes(capability);
10
+ }
package/dist/host.js CHANGED
@@ -9,6 +9,7 @@ export const SPINDLE_HOST_CAPABILITIES = Object.freeze({
9
9
  "connection-dispatch-resolution-v1": 1,
10
10
  "text-editor-close-v1": 1,
11
11
  "frontend-extensibility-v2": 1,
12
+ "frontend-runtime-capabilities-v1": 1,
12
13
  });
13
14
  /** Structured error code returned when host compatibility validation fails. */
14
15
  export const SPINDLE_COMPATIBILITY_ERROR_CODE = "SPINDLE_COMPATIBILITY_ERROR";
package/dist/index.d.ts CHANGED
@@ -9,11 +9,13 @@ export { ALL_PERMISSIONS, isValidPermission } from "./permissions.js";
9
9
  export type { SpindleCapability as SpindleCapabilityType } from "./capabilities.js";
10
10
  export { ALL_CAPABILITIES, isValidCapability } from "./capabilities.js";
11
11
  export { SpindleEvent, CoreEventType } from "./events.js";
12
+ export type { SpindleFrontendRuntimeCapability } from "./frontend-capabilities.js";
13
+ export { ALL_FRONTEND_RUNTIME_CAPABILITIES, isValidFrontendRuntimeCapability, } from "./frontend-capabilities.js";
12
14
  export type { LlmMessagePartDTO, LlmMessageDTO, LlmThinkingBlockDTO, SpindleUserRoleDTO, InterceptorGenerationType, InterceptorMatchScalar, InterceptorMatchDTO, InterceptorRegistrationMatchOptions, InterceptorRegistrationOptions, InterceptorContextDTO, InterceptorDisposer, InterceptorHandler, DeferredGuidanceDTO, InterceptorBreakdownEntryDTO, FinalResponseDTO, InterceptorResultDTO, MacroDefinitionDTO, MacroInvocationContextDTO, MacroResolveOptionsDTO, MacroResolveResultDTO, ToolRegistrationDTO, ToolSchemaDTO, ToolCallDTO, ToolDefinitionDTO, GenerationUsageDTO, GenerationResponseDTO, GenerationDispatchSourceDTO, ConnectionDispatchDescriptorDTO, GenerationRequestDTO, GenerationReasoningOverrideDTO, ReasoningEffortDTO, ReasoningSettingsDTO, ThinkingDisplayDTO, ConnectionReasoningBindingsDTO, ChatAppendGenerationOptionsDTO, ChatAppendMessageOptionsDTO, StreamChunkDTO, RequestInitDTO, ConnectionProfileDTO, PermissionDeniedDetail, PermissionChangedDetail, CharacterDTO, CharacterCreateDTO, CharacterAvatarUploadDTO, CharacterUpdateDTO, ChatDTO, ChatUpdateDTO, ChatSwitchedPayloadDTO, ChatChangedPayloadDTO, ChatForkedPayloadDTO, PromptVariableOptionDTO, PromptVariableDefDTO, PromptVariableTypeDTO, PromptVariableValueDTO, PromptVariableValuesDTO, PromptBlockRoleDTO, PromptBlockPositionDTO, PromptBlockCategoryModeDTO, PromptBlockPlacementDTO, PromptBlockPlacementBindingDTO, PromptBlockDTO, PromptBlockSnapshotDTO, PromptBlockCreateDTO, PromptBlockUpdateDTO, PromptBlockCategoryGroupDTO, HostResponseErrorDTO, UserPresetDTO, UserPresetCreateDTO, UserPresetUpdateDTO, WorldBookDTO, WorldBookCreateDTO, WorldBookUpdateDTO, WorldBookEntryDTO, WorldBookEntryCreateDTO, WorldBookEntryUpdateDTO, RegexPlacementDTO, RegexScopeDTO, RegexTargetDTO, RegexMacroModeDTO, RegexScriptDTO, RegexScriptCreateDTO, RegexScriptUpdateDTO, RegexScriptListOptionsDTO, RegexScriptActiveOptionsDTO, WorldInfoInterceptorEntryDTO, WorldInfoInterceptorMessageDTO, WorldInfoActivationSettingsDTO, WorldInfoActivationOverridesDTO, WorldInfoInterceptorRoleDTO, WorldInfoInterceptorPlacementDTO, WorldInfoInterceptorCtxDTO, WorldInfoInterceptorMutationDTO, WorldInfoInterceptorResultDTO, DatabankScopeDTO, DatabankDocumentStatusDTO, DatabankDTO, DatabankCreateDTO, DatabankUpdateDTO, DatabankDocumentDTO, DatabankDocumentCreateDTO, DatabankDocumentUpdateDTO, PersonaDTO, GlobalAddonDTO, GlobalAddonUpdateDTO, LumiaItemDTO, LoomItemCategoryDTO, LoomItemDTO, LoomToolDTO, LumiaDlcPackDTO, LumiaDlcCatalogDTO, PersonaCreateDTO, PersonaUpdateDTO, ActivatedWorldInfoEntryDTO, WorldBookSourceDTO, WorldInfoActivatedEventDTO, DryRunRequestDTO, DryRunResultDTO, AssembleRequestDTO, AssembleResultDTO, BoundPrefillAttachmentDTO, BoundAssembleRequestDTO, BoundAssemblySuccessDTO, BoundAssemblyFailureDTO, BoundAssemblyOutcomeDTO, QuietTrackedRequestDTO, QuietDispatchReceiptDTO, QuietTrackedResultDTO, AssemblyBreakdownEntryDTO, ActivationStatsDTO, MemoryStatsDTO, DryRunTokenCountDTO, ChatMemoryChunkDTO, ChatMemoryResultDTO, ImageGenConnectionDTO, ImageGenParameterSchemaDTO, ImageGenProviderDTO, ImageGenRequestDTO, ImageGenResultDTO, ImageGenStreamRequestDTO, ImageGenStreamStatusDTO, ImageGenStreamPreviewDTO, ImageGenStreamDoneDTO, ImageGenStreamEventDTO, ImageGetOptionsDTO, ImageDTO, ImageListOptionsDTO, ImageSpecificityDTO, ImageVideoCodecDTO, ImageUploadDTO, ImageUploadFromDataUrlOptionsDTO, MediaSourceDTO, MediaAudioFormatDTO, MediaVideoFormatDTO, MediaVideoCodecDTO, MediaAudioCodecDTO, MediaFitModeDTO, MediaTransformResultDTO, MediaConvertAudioRequestDTO, MediaConvertVideoRequestDTO, MediaTranscodeVideoRequestDTO, MediaRemoveAudioFromVideoRequestDTO, MediaAddAudioToVideoRequestDTO, MediaCreateVideoFromImageAndAudioRequestDTO, ThemeOverrideDTO, ThemeInfoDTO, ThemePaletteConfigDTO, ThemeVariablesConfigDTO, ColorExtractionResult, ColorRGB, ColorHSL, SpindleModalItemDTO, SpindleCommandDTO, SpindleCommandContextDTO, SpindleUIDrawerTabDTO, SpindleUISettingsTabDTO, FrontendProcessStateDTO, FrontendProcessExitReasonDTO, FrontendProcessSpawnOptionsDTO, FrontendProcessListOptionsDTO, FrontendProcessInfoDTO, FrontendProcessLifecycleEventDTO, FrontendProcessStopOptionsDTO, BackendProcessStateDTO, BackendProcessExitReasonDTO, BackendProcessSpawnOptionsDTO, BackendProcessListOptionsDTO, BackendProcessInfoDTO, BackendProcessLifecycleEventDTO, BackendProcessStopOptionsDTO, GenerationStartedPayloadDTO, StreamTokenPayloadDTO, GenerationEndedPayloadDTO, GenerationStoppedPayloadDTO, GenerationObserver, ChatMessageDTO, MessageSwipeAction, MessageSwipedPayloadDTO, SwipeEditedPayloadDTO, ToolInvocationPayloadDTO, TokenModelSourceDTO, TokenCountOptionsDTO, TokenCountResultDTO, SpindleUploadDTO, SharedRpcRequestContextDTO, SharedRpcEndpointPolicyDTO, MacroInterceptorPhase, MacroInterceptorCharacterEnvDTO, MacroInterceptorChatEnvDTO, MacroInterceptorEnvDTO, MacroInterceptorCtxDTO, MacroInterceptorResultDTO, MacroInterceptorRichResultDTO, MessageContentProcessorOrigin, MessageContentProcessorCtxDTO, MessageContentProcessorResultDTO, WebSearchProviderDTO, WebSearchSettingsDTO, WebSearchResultDTO, WebSearchDocumentDTO, WebSearchRequestDTO, WebSearchResponseDTO, WorkerToHost, HostToWorker, ProviderKind, ProviderDescriptor, ProviderBrokerSpec, ProviderKeyDTO, WorkerToHostProviderMessage, HostToWorkerProviderMessage, ProviderRuntimeMessage, BrokerRequest, BrokerResponse, ProviderManager, } from "./api.js";
13
15
  export { PERMISSION_DENIED_PREFIX } from "./api.js";
14
16
  export type { ToolRegistration, JSONSchema } from "./tools.js";
15
- export type { SpindleMessageElement, SpindleTextEditorOptions, SpindleTextEditorResult, SpindleDOMHelper, SpindleMountPoint, SpindleUploadFile, SpindleMessageTagIntercept, SpindleMessageTagInterceptorOptions, SpindleMessageWidgetOptions, PermissionRequestOptions, SpindleFrontendContext, SpindleFrontendContextV2, SpindleSettingsAPI, SpindleSettingsTabOptions, SpindleSettingsTabSection, SpindleSettingsTabHandle, SpindleStateSelectors, SpindleResizeController, SpindleGeometryAPI, SpindleHostSurfaceInfo, SpindleHostSurfaceAPI, SpindleComponentOverrideOptions, SpindleComponentOverrideHandle, SpindleDomDecoratorOptions, SpindleDomDecoratorHandle, SpindleMessageActionOptions, SpindleMessageActionHandle, SpindleFrontendWorldBooksAPI, SpindleFrontendTokensAPI, SpindleFrontendConnectionsAPI, SpindleFrontendChatsAPI, SpindleFrontendMessagesAPI, SpindleRecentChatsQuery, SpindleRecentChat, SpindleGroupedRecentChat, SpindleRecentChatsPage, SpindleFrontendModule, SpindleFrontendTeardown, SpindleGuideDefinition, SpindleDrawerTabOptions, SpindleDrawerTabHandle, SpindleCharacterEditorTabOptions, SpindleCharacterEditorTabHandle, SpindleCharacterEditorState, SpindleCharacterEditorSaveOptions, SpindleCharacterEditorHelper, SpindlePresetEditorTabOptions, SpindlePresetEditorTabHandle, SpindlePresetEditorToolbarItemOptions, SpindlePresetEditorToolbarItemHandle, SpindlePresetEditorDraft, SpindlePresetEditorState, SpindlePresetEditorSaveOptions, SpindlePresetEditorHelper, SpindlePresetEditorBuiltinTabId, SpindlePresetEditorExtensionState, SpindlePresetEditorScopedHelper, SpindleFloatWidgetOptions, SpindleFloatWidgetHandle, SpindleDockEdge, SpindleDockPanelOptions, SpindleDockPanelHandle, SpindleAppMountOptions, SpindleAppMountHandle, SpindleInputBarActionOptions, SpindleInputBarActionHandle, SpindleSandboxFrameOptions, SpindleSandboxFrameHandle, SpindleSandboxMediaResource, SpindleSandboxAudioOptions, SpindleSandboxAudioHandle, SpindleSandboxAPI, SpindleContextMenuOptions, SpindleContextMenuItemDef, SpindleContextMenuResult, SpindleModalOptions, SpindleModalHandle, SpindleConfirmVariant, SpindleConfirmOptions, SpindleConfirmResult, SpindleUIDomActionEventType, SpindleUIKeyboardState, SpindleUIDrawerState, SpindleUISettingsState, SpindleUIDomActionDetail, SpindleUIDomActionBindingOptions, SpindleUIEventsHelper, SpindleFrontendProcessContext, SpindleFrontendProcessRegistry, SpindleDisplayResolver, SpindleDisplayResolverRegistry, SpindleDisplayContext, SpindleDisplayBodyArgs, SpindleDisplayTemplatesArgs, SpindleDisplayScriptsArgs, SpindleDisplayResolveResult, SpindleDisplayTemplatesResult, SpindleTabLocation, } from "./dom.js";
16
- export type { SpindleMountedComponent, SpindleComponentTarget, SpindleConnectionKind, SpindleConnectionRef, SpindleTextInputOptions, SpindleTextInputHandle, SpindleTextAreaOptions, SpindleTextAreaHandle, SpindleNumericInputOptions, SpindleNumericInputHandle, SpindleNumberStepperOptions, SpindleNumberStepperHandle, SpindleRangeSliderFormat, SpindleRangeSliderOptions, SpindleRangeSliderHandle, SpindleCheckboxOptions, SpindleCheckboxHandle, SpindleSwitchOptions, SpindleSwitchHandle, SpindleSelectOption, SpindleSelectOptionLeading, SpindleSelectOptionsBase, SpindleSelectOptions, SpindleSelectHandle, SpindleMultiSelectOptions, SpindleMultiSelectHandle, SpindleModelComboboxOptions, SpindleModelComboboxHandle, SpindleFolderDropdownOptions, SpindleFolderDropdownHandle, SpindleBadgeColor, SpindleBadgeOptions, SpindleBadgeHandle, SpindleSpinnerOptions, SpindleSpinnerHandle, SpindleCollapsibleSectionOptions, SpindleCollapsibleSectionHandle, SpindlePaginationOptions, SpindlePaginationHandle, SpindleCloseButtonOptions, SpindleCloseButtonHandle, SpindleLoomBlockEditorValue, SpindleLoomBlockEditorOptions, SpindleLoomBlockEditorHandle, SpindleComponentsHelper, SpindleHostSurfaceHandle, } from "./components.js";
17
+ export type { SpindleMessageElement, SpindleTextEditorOptions, SpindleTextEditorResult, SpindleDOMHelper, SpindleMountPoint, SpindleUploadFile, SpindleMessageTagIntercept, SpindleMessageTagInterceptorOptions, SpindleMessageWidgetOptions, PermissionRequestOptions, SpindleFrontendContext, SpindleFrontendContextV2, SpindleSettingsAPI, SpindleSettingsTabOptions, SpindleSettingsTabSection, SpindleSettingsTabHandle, SpindleStateSelectors, SpindleResizeController, SpindleGeometryAPI, SpindleHostSurfaceKind, SpindleHostSurfaceRef, SpindleHostActionJsonValue, SpindleHostActionParams, SpindleHostSurfaceInfo, SpindleHostSurfaceTarget, SpindleHostSurfaceTargetHandler, SpindleHostSurfaceAPI, SpindleComponentOverrideOptions, SpindleComponentOverrideHandle, SpindleDomDecoratorOptions, SpindleDomDecoratorHandle, SpindleMessageActionOptions, SpindleMessageActionHandle, SpindleFrontendWorldBooksAPI, SpindleFrontendTokensAPI, SpindleFrontendConnectionsAPI, SpindleFrontendChatsAPI, SpindleFrontendMessagesAPI, SpindleRecentChatsQuery, SpindleRecentChat, SpindleGroupedRecentChat, SpindleRecentChatsPage, SpindleFrontendModule, SpindleFrontendTeardown, SpindleGuideDefinition, SpindleDrawerTabOptions, SpindleDrawerTabHandle, SpindleCharacterEditorTabOptions, SpindleCharacterEditorTabHandle, SpindleCharacterEditorState, SpindleCharacterEditorSaveOptions, SpindleCharacterEditorHelper, SpindlePresetEditorTabOptions, SpindlePresetEditorTabHandle, SpindlePresetEditorToolbarItemOptions, SpindlePresetEditorToolbarItemHandle, SpindlePresetEditorDraft, SpindlePresetEditorState, SpindlePresetEditorSaveOptions, SpindlePresetEditorHelper, SpindlePresetEditorBuiltinTabId, SpindlePresetEditorExtensionState, SpindlePresetEditorScopedHelper, SpindleFloatWidgetOptions, SpindleFloatWidgetHandle, SpindleDockEdge, SpindleDockPanelOptions, SpindleDockPanelHandle, SpindleAppMountOptions, SpindleAppMountHandle, SpindleInputBarActionOptions, SpindleInputBarActionHandle, SpindleSandboxFrameOptions, SpindleSandboxFrameHandle, SpindleSandboxMediaResource, SpindleSandboxAudioOptions, SpindleSandboxAudioHandle, SpindleSandboxAPI, SpindleContextMenuOptions, SpindleContextMenuItemDef, SpindleContextMenuResult, SpindleModalOptions, SpindleModalHandle, SpindleConfirmVariant, SpindleConfirmOptions, SpindleConfirmResult, SpindleUIDomActionEventType, SpindleUIKeyboardState, SpindleUIDrawerState, SpindleUISettingsState, SpindleUIDomActionDetail, SpindleUIDomActionBindingOptions, SpindleUIEventsHelper, SpindleFrontendProcessContext, SpindleFrontendProcessRegistry, SpindleDisplayResolver, SpindleDisplayResolverRegistry, SpindleDisplayContext, SpindleDisplayBodyArgs, SpindleDisplayTemplatesArgs, SpindleDisplayScriptsArgs, SpindleDisplayResolveResult, SpindleDisplayTemplatesResult, SpindleTabLocation, } from "./dom.js";
18
+ export type { SpindleMountedComponent, SpindleComponentTarget, SpindleConnectionKind, SpindleConnectionRef, SpindleTextInputOptions, SpindleTextInputHandle, SpindleTextAreaOptions, SpindleTextAreaHandle, SpindleNumericInputOptions, SpindleNumericInputHandle, SpindleNumberStepperOptions, SpindleNumberStepperHandle, SpindleRangeSliderFormat, SpindleRangeSliderOptions, SpindleRangeSliderHandle, SpindleCheckboxOptions, SpindleCheckboxHandle, SpindleSwitchOptions, SpindleSwitchHandle, SpindleSelectOption, SpindleSelectOptionLeading, SpindleSelectOptionsBase, SpindleSelectOptions, SpindleSelectHandle, SpindleMultiSelectOptions, SpindleMultiSelectHandle, SpindleModelComboboxOptions, SpindleModelComboboxHandle, SpindleFolderDropdownOptions, SpindleFolderDropdownHandle, SpindleBadgeColor, SpindleBadgeOptions, SpindleBadgeHandle, SpindleSpinnerOptions, SpindleSpinnerHandle, SpindleCollapsibleSectionOptions, SpindleCollapsibleSectionHandle, SpindlePaginationOptions, SpindlePaginationHandle, SpindleCloseButtonOptions, SpindleCloseButtonHandle, SpindleLoomBlockEditorValue, SpindleLoomBlockEditorOptions, SpindleLoomBlockEditorHandle, SpindleComponentsHelper, SpindleHostSurfaceJsonValue, SpindleHostSurfaceProps, SpindleHostSurfaceEventHandler, SpindleHostSurfaceHandle, } from "./components.js";
17
19
  export type { ExtensionInfo } from "./extension-info.js";
18
20
  export type { EntityTypeDTO, EntityStatusDTO, MentionRoleDTO, RelationTypeDTO, RelationStatusDTO, EmotionalTagDTO, NarrativeFlagDTO, ContradictionFlagDTO, FactExtractionStatusDTO, EntityConfidenceDTO, SalienceSourceDTO, ChatLinkTypeDTO, SalienceBreakdownDTO, MemoryEntityDTO, MemoryEntityUpsertDTO, MemoryEntityStatusUpdateDTO, MemoryMentionDTO, MemoryRelationDTO, MemoryRelationUpsertDTO, StatusChangeDTO, MemorySalienceDTO, MemoryConsolidationDTO, CortexQueryDTO, CortexMemoryComponentsDTO, CortexMemoryDTO, EntitySnapshotRelationshipDTO, EntitySnapshotDTO, RelationEdgeDTO, CortexStatsDTO, CortexResultDTO, VaultDTO, VaultChunkDTO, VaultEntityDTO, VaultRelationDTO, VaultCreateDTO, VaultWithContentsDTO, VaultReindexResultDTO, ChatLinkDTO, ChatLinkAttachDTO, VaultCortexDataDTO, InterlinkCortexDataDTO, LinkedCortexResultDTO, MemoryCortexConfigDTO, CortexUsageStatsDTO, CortexIngestionTimingsDTO, CortexIngestionStatusDTO, CortexIngestionTelemetryDTO, ChatChunkDTO, ChatMemoryWarmupResultDTO, } from "./memories.js";
19
21
  export type { SpindleAPI, SpindleGenerateAPI, SpindleConnectionsAPI, SpindlePromptRegex, FrontendProcessHandle, BackendProcessHandle, SpindleBackendProcessContext, SpindleBackendProcessModule, SpindleEmbeddingDriver, SpindleTtsEngine, SpindleSttEngine, SpindleSidecarEndpoint, } from "./spindle-api.js";
package/dist/index.js CHANGED
@@ -4,5 +4,6 @@ export { SPINDLE_THEME_AUTHORING_HOST_CAPABILITIES } from "./theme.js";
4
4
  export { ALL_PERMISSIONS, isValidPermission } from "./permissions.js";
5
5
  export { ALL_CAPABILITIES, isValidCapability } from "./capabilities.js";
6
6
  export { SpindleEvent, CoreEventType } from "./events.js";
7
+ export { ALL_FRONTEND_RUNTIME_CAPABILITIES, isValidFrontendRuntimeCapability, } from "./frontend-capabilities.js";
7
8
  export { PERMISSION_DENIED_PREFIX } from "./api.js";
8
9
  export { SIDECAR_DEFAULTS, COUNCIL_SIDECAR_DEFAULTS, COUNCIL_TOOLS_DEFAULTS, COUNCIL_SETTINGS_DEFAULTS, } from "./council.js";
@@ -49,8 +49,8 @@ export interface SpindleStorageSeedFile {
49
49
  /** If true, fail install/import/update when source path is missing */
50
50
  required?: boolean;
51
51
  }
52
- export type SpindlePermission = import("./permissions").SpindlePermission;
53
- export type SpindleCapability = import("./capabilities").SpindleCapability;
52
+ export type SpindlePermission = import("./permissions.js").SpindlePermission;
53
+ export type SpindleCapability = import("./capabilities.js").SpindleCapability;
54
54
  /** Regex for validating extension identifiers */
55
55
  export declare const IDENTIFIER_PATTERN: RegExp;
56
56
  export declare function validateIdentifier(id: string): boolean;
@@ -134,6 +134,14 @@ export interface SpindleConnectionsAPI {
134
134
  export interface SpindleAPI {
135
135
  /** Immutable host compatibility descriptor for this extension runtime. */
136
136
  readonly host: SpindleHostDescriptorV1;
137
+ /**
138
+ * Declare frontend behavior that the host must account for before dependent
139
+ * UI is revealed. The returned disposer removes the declaration. Repeated
140
+ * declarations of the same capability are reference-counted by the worker.
141
+ */
142
+ frontendCapabilities: {
143
+ declare(capability: import("./frontend-capabilities.js").SpindleFrontendRuntimeCapability): () => void;
144
+ };
137
145
  /**
138
146
  * Subscribe to permission grant/revoke changes for this extension only.
139
147
  * This is delivered directly by the worker host and does not subscribe to
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lumiverse-spindle-types",
3
- "version": "0.6.21",
3
+ "version": "0.6.23",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "keywords": [