@aparte/core 0.19.2 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +6 -1
  2. package/dist/client/aparte-client.d.ts +76 -97
  3. package/dist/client/aparte-client.d.ts.map +1 -1
  4. package/dist/client/stream-adapter.d.ts +7 -13
  5. package/dist/client/stream-adapter.d.ts.map +1 -1
  6. package/dist/client/wire-history.d.ts +4 -5
  7. package/dist/client/wire-history.d.ts.map +1 -1
  8. package/dist/components/bubble/aparte-chat-bubble.d.ts +89 -58
  9. package/dist/components/bubble/aparte-chat-bubble.d.ts.map +1 -1
  10. package/dist/components/bubble/bubble-sync.d.ts +1 -1
  11. package/dist/components/chat/aparte-chat.d.ts +15 -13
  12. package/dist/components/chat/aparte-chat.d.ts.map +1 -1
  13. package/dist/components/chat/glide-gate.d.ts +13 -0
  14. package/dist/components/chat/glide-gate.d.ts.map +1 -0
  15. package/dist/components/composer/aparte-composer-action.d.ts +3 -3
  16. package/dist/components/composer/aparte-composer-add-attachment.d.ts +2 -2
  17. package/dist/components/composer/aparte-composer-cancel.d.ts +1 -1
  18. package/dist/components/composer/aparte-composer-input.d.ts +4 -7
  19. package/dist/components/composer/aparte-composer-input.d.ts.map +1 -1
  20. package/dist/components/composer/aparte-composer-send.d.ts +9 -11
  21. package/dist/components/composer/aparte-composer-send.d.ts.map +1 -1
  22. package/dist/components/composer/aparte-composer.d.ts +50 -80
  23. package/dist/components/composer/aparte-composer.d.ts.map +1 -1
  24. package/dist/components/context/aparte-context.d.ts +13 -7
  25. package/dist/components/context/aparte-context.d.ts.map +1 -1
  26. package/dist/components/conversation-list/aparte-conversation-list.d.ts +25 -13
  27. package/dist/components/conversation-list/aparte-conversation-list.d.ts.map +1 -1
  28. package/dist/components/elicitation/aparte-elicitation.d.ts +15 -22
  29. package/dist/components/elicitation/aparte-elicitation.d.ts.map +1 -1
  30. package/dist/components/scroll-rail/aparte-scroll-rail.d.ts +10 -11
  31. package/dist/components/scroll-rail/aparte-scroll-rail.d.ts.map +1 -1
  32. package/dist/components/sidebar/aparte-sidebar.d.ts +16 -3
  33. package/dist/components/sidebar/aparte-sidebar.d.ts.map +1 -1
  34. package/dist/components/split/aparte-split.d.ts +12 -3
  35. package/dist/components/split/aparte-split.d.ts.map +1 -1
  36. package/dist/components/status/aparte-chat-status.d.ts +5 -3
  37. package/dist/components/status/aparte-chat-status.d.ts.map +1 -1
  38. package/dist/components/suggestions/aparte-suggestions.d.ts +6 -9
  39. package/dist/components/suggestions/aparte-suggestions.d.ts.map +1 -1
  40. package/dist/components/viewport/aparte-chat-viewport.d.ts +76 -69
  41. package/dist/components/viewport/aparte-chat-viewport.d.ts.map +1 -1
  42. package/dist/config/aparte-config.d.ts +169 -141
  43. package/dist/config/aparte-config.d.ts.map +1 -1
  44. package/dist/config/icon-provider.d.ts +19 -2
  45. package/dist/config/icon-provider.d.ts.map +1 -1
  46. package/dist/config/index.d.ts +1 -1
  47. package/dist/config/index.d.ts.map +1 -1
  48. package/dist/config/locale.d.ts +61 -89
  49. package/dist/config/locale.d.ts.map +1 -1
  50. package/dist/config/sanitize.d.ts.map +1 -1
  51. package/dist/conversations/conversation-controller.d.ts +18 -3
  52. package/dist/conversations/conversation-controller.d.ts.map +1 -1
  53. package/dist/conversations/conversation-manager.d.ts +6 -6
  54. package/dist/conversations/conversation-manager.d.ts.map +1 -1
  55. package/dist/conversations/index.d.ts +1 -1
  56. package/dist/conversations/index.d.ts.map +1 -1
  57. package/dist/custom-elements.json +5656 -4759
  58. package/dist/{dialog-triggers-CEazY76J.js → dialog-triggers-3Rk7PuZa.js} +555 -375
  59. package/dist/dialog-triggers-3Rk7PuZa.js.map +1 -0
  60. package/dist/elicitation/approval-panel.d.ts.map +1 -1
  61. package/dist/elicitation/index.d.ts +6 -1
  62. package/dist/elicitation/index.d.ts.map +1 -1
  63. package/dist/elicitation/panel.d.ts +11 -21
  64. package/dist/elicitation/panel.d.ts.map +1 -1
  65. package/dist/elicitation/types.d.ts +19 -27
  66. package/dist/elicitation/types.d.ts.map +1 -1
  67. package/dist/generated/element-attributes.d.ts +16 -10
  68. package/dist/generated/element-attributes.d.ts.map +1 -1
  69. package/dist/host/aparte-chat-host.d.ts +17 -32
  70. package/dist/host/aparte-chat-host.d.ts.map +1 -1
  71. package/dist/icons/extended.d.ts +1 -2
  72. package/dist/icons/extended.d.ts.map +1 -1
  73. package/dist/icons.d.ts +6 -8
  74. package/dist/icons.d.ts.map +1 -1
  75. package/dist/icons.js.map +1 -1
  76. package/dist/index.css +1 -1
  77. package/dist/index.d.ts +13 -10
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +775 -337
  80. package/dist/index.js.map +1 -1
  81. package/dist/index.node.d.ts +7 -4
  82. package/dist/index.node.d.ts.map +1 -1
  83. package/dist/index.node.js +2 -2
  84. package/dist/index.node.js.map +1 -1
  85. package/dist/interop/dialog-triggers.d.ts +2 -2
  86. package/dist/interop/element-props.d.ts +16 -27
  87. package/dist/interop/element-props.d.ts.map +1 -1
  88. package/dist/parsers/aparte-stream-parser.d.ts.map +1 -1
  89. package/dist/primitives/icon/aparte-icon.d.ts.map +1 -1
  90. package/dist/primitives/select/aparte-option.d.ts +3 -2
  91. package/dist/primitives/select/aparte-option.d.ts.map +1 -1
  92. package/dist/primitives/select/aparte-select.d.ts +24 -21
  93. package/dist/primitives/select/aparte-select.d.ts.map +1 -1
  94. package/dist/renderers/markdown-stream.d.ts.map +1 -1
  95. package/dist/renderers/segment-renderers.d.ts +11 -17
  96. package/dist/renderers/segment-renderers.d.ts.map +1 -1
  97. package/dist/renderers/segments/code.d.ts.map +1 -1
  98. package/dist/renderers/segments/error.d.ts.map +1 -1
  99. package/dist/renderers/segments/text.d.ts.map +1 -1
  100. package/dist/renderers/segments/thinking.d.ts.map +1 -1
  101. package/dist/renderers/segments/tool-call.d.ts.map +1 -1
  102. package/dist/runtime/message-repository.d.ts +8 -15
  103. package/dist/runtime/message-repository.d.ts.map +1 -1
  104. package/dist/transport/agent-handler.d.ts +2 -0
  105. package/dist/transport/agent-handler.d.ts.map +1 -1
  106. package/dist/transport/backend-handler.d.ts +4 -6
  107. package/dist/transport/backend-handler.d.ts.map +1 -1
  108. package/dist/transport/backend-transport.d.ts +15 -1
  109. package/dist/transport/backend-transport.d.ts.map +1 -1
  110. package/dist/transport/types.d.ts +7 -10
  111. package/dist/transport/types.d.ts.map +1 -1
  112. package/dist/types/chat.d.ts +10 -18
  113. package/dist/types/chat.d.ts.map +1 -1
  114. package/dist/types/element-attributes.d.ts +6 -12
  115. package/dist/types/element-attributes.d.ts.map +1 -1
  116. package/dist/types/element-map.d.ts +6 -19
  117. package/dist/types/element-map.d.ts.map +1 -1
  118. package/dist/types/event-map.d.ts +11 -17
  119. package/dist/types/event-map.d.ts.map +1 -1
  120. package/dist/types/events.d.ts +5 -14
  121. package/dist/types/events.d.ts.map +1 -1
  122. package/dist/types/imperative-api.d.ts +3 -1
  123. package/dist/types/imperative-api.d.ts.map +1 -1
  124. package/dist/types/index.d.ts +4 -4
  125. package/dist/types/index.d.ts.map +1 -1
  126. package/dist/types/model-provider.d.ts +7 -9
  127. package/dist/types/model-provider.d.ts.map +1 -1
  128. package/dist/types/segments.d.ts +29 -13
  129. package/dist/types/segments.d.ts.map +1 -1
  130. package/dist/types/tools.d.ts +21 -23
  131. package/dist/types/tools.d.ts.map +1 -1
  132. package/dist/utils/copy-text.d.ts +1 -2
  133. package/dist/utils/copy-text.d.ts.map +1 -1
  134. package/dist/utils/css-escape.d.ts +1 -1
  135. package/dist/utils/escape.d.ts +4 -19
  136. package/dist/utils/escape.d.ts.map +1 -1
  137. package/dist/utils/files-to-attachments.d.ts +2 -2
  138. package/dist/utils/fold-text.d.ts +13 -0
  139. package/dist/utils/fold-text.d.ts.map +1 -0
  140. package/dist/utils/is-awaiting-reply.d.ts +2 -5
  141. package/dist/utils/is-awaiting-reply.d.ts.map +1 -1
  142. package/dist/utils/presence.d.ts +5 -5
  143. package/dist/utils/segments.d.ts +54 -78
  144. package/dist/utils/segments.d.ts.map +1 -1
  145. package/dist/utils/tool-input.d.ts +1 -1
  146. package/dist/utils/tool-input.d.ts.map +1 -1
  147. package/dist/utils/transcript.d.ts +2 -2
  148. package/dist/utils/uuid.d.ts +0 -11
  149. package/dist/utils/uuid.d.ts.map +1 -1
  150. package/package.json +30 -4
  151. package/dist/dialog-triggers-CEazY76J.js.map +0 -1
@@ -7,7 +7,7 @@
7
7
  * "Invisible but Flexible": Works out-of-the-box with sensible defaults,
8
8
  * but allows complete customization via dependency injection.
9
9
  */
10
- import { AparteIconProvider, AparteIconName } from './icon-provider.js';
10
+ import { AparteIconProvider, AparteCoreIconName } from './icon-provider.js';
11
11
  import { AparteAvatarProvider } from './avatar-provider.js';
12
12
  import { AparteLocale, AparteLocaleExtensions } from './locale.js';
13
13
  import { AparteAction, AparteActionZone } from './action-provider.js';
@@ -19,7 +19,7 @@ import type { AparteSiblingNavRenderer } from './sibling-nav-renderer.js';
19
19
  import type { AparteBubbleShellRenderer } from './bubble-shell-renderer.js';
20
20
  import type { AparteAIProvider, AparteAIModel, AparteModelConfig } from '../types/model-provider.js';
21
21
  import type { AparteTransport } from '../transport/index.js';
22
- import type { AparteTool, AparteToolHandler, AparteToolRenderer, AparteToolSummary, AparteToolCall, AparteApprovalPolicy, AparteApprovalRuling } from '../types/tools.js';
22
+ import type { AparteTool, AparteToolHandler, AparteToolRenderer, AparteToolSummary, AparteToolInputFormatter, AparteToolCall, AparteApprovalPolicy, AparteApprovalRuling } from '../types/tools.js';
23
23
  import type { AparteSegmentDefaults } from '../types/segments.js';
24
24
  import type { AparteStreamBlock } from '../types/stream-blocks.js';
25
25
  import type { AparteBubbleActionsConfig, AparteBubbleActionName, AparteHostHandlersConfig } from '../types/models.js';
@@ -36,9 +36,8 @@ export type AparteLocaleProvider = AparteLocale;
36
36
  * A bare key, or the same `{ apiKey, endpoint }` record the transport reads
37
37
  * (`readAuth`) and `fetchModels` accepts. The record is not a nicety: a consumer
38
38
  * who points a preset at their own host — a corporate proxy, a self-hosted vLLM,
39
- * an LM Studio box — configures it as `endpoint`, and while this channel could
40
- * only carry a string, `refreshProviderModels` sent `GET {vendor default}/models`
41
- * with the key that host had been given.
39
+ * an LM Studio box — configures it as `endpoint`, and `refreshProviderModels` needs
40
+ * that endpoint to fetch the model list from that host rather than the vendor's.
42
41
  */
43
42
  export type AparteKeyProvider = (providerId: string) => string | Record<string, string> | undefined | null | Promise<string | Record<string, string> | undefined | null>;
44
43
  /**
@@ -100,6 +99,25 @@ export interface AparteStreamingMarkdownRenderer {
100
99
  * is registered the chat falls back to the one-shot `AparteMarkdownProvider`.
101
100
  */
102
101
  export type AparteStreamingMarkdownProvider = (target: HTMLElement) => AparteStreamingMarkdownRenderer;
102
+ export declare function renderingVersionOf(cfg: AparteConfig): number;
103
+ /**
104
+ * Everything a chat is configured with: the providers and the selected model, the
105
+ * transport and the keys, the tools, the renderers and render hooks, the Markdown and
106
+ * highlight providers, the locale, the icons, the avatars, the actions.
107
+ *
108
+ * {@link aparteGlobalConfig} is the one every chat on the page reads. A chat that needs a
109
+ * configuration of its own takes a `new AparteConfig()` attached to its element or to an
110
+ * ancestor with {@link attachConfig}; the framework wrappers take it as their `config` prop.
111
+ *
112
+ * A change to what is drawn — providers, the model, the locale, icons, avatars, actions,
113
+ * renderers — reaches the components already on the page: {@link AparteConfig.subscribe | subscribe()} listeners are
114
+ * called, and `aparte-config-change` is dispatched on `window` with the instance that changed.
115
+ * The Markdown, streaming-Markdown and highlight providers are among them: a message drawn
116
+ * before they were set is drawn again with them (one still streaming, once it ends). The
117
+ * sanitizer, segment defaults, tools, tool renderers and summaries apply to what is drawn
118
+ * after they are set, so set them before the chat renders; the transport, the keys and the
119
+ * system prompt apply from the next request.
120
+ */
103
121
  export declare class AparteConfig {
104
122
  private _markdownProvider?;
105
123
  private _streamingMarkdownProvider?;
@@ -127,15 +145,13 @@ export declare class AparteConfig {
127
145
  /**
128
146
  * What `refreshProviderModels()` last brought back, per provider.
129
147
  *
130
- * Without it, `getCurrentModel()` read `provider.getModels()` only — the
131
- * SYNCHRONOUS, hand-declared list, which every preset of
132
- * `@aparte/provider-openai-compat` leaves empty because a compat endpoint's
133
- * list is fetched at runtime. So the current model resolved to `undefined`
134
- * for the documented primary path, and everything that reads a capability off
135
- * it silently got nothing: `AparteClient._toolsForCurrentModel()` gates tools
136
- * on `capabilities.includes('function_calling')`, so NO tool was ever sent to
137
- * the model. A registered tool, an approval gate, `<aparte-elicitation>` — all
138
- * dead, with the model answering, correctly, that it had been given no tools.
148
+ * `getCurrentModel()` reads it beside `provider.getModels()`, the SYNCHRONOUS,
149
+ * hand-declared list, which every preset of `@aparte/provider-openai-compat`
150
+ * leaves empty because a compat endpoint's list is fetched at runtime. Without
151
+ * the fetched list the current model resolves to `undefined`, and its declared
152
+ * capabilities are unknown: `AparteClient._toolsForCurrentModel()` still sends the
153
+ * tools then, and it is the fetched list that lets a model which declares no
154
+ * `function_calling` be honoured.
139
155
  */
140
156
  private _fetchedModels;
141
157
  private _modelConfig;
@@ -159,21 +175,20 @@ export declare class AparteConfig {
159
175
  *
160
176
  * One request reaches the presenter at a time — not because a presenter could not
161
177
  * cope, but because the COMPOSER cannot: it has one panel slot, and a second
162
- * request used to clobber the first's DOM. The previous protection lived in the
163
- * default presenter, which answered the second request `cancel` on the spot; that
164
- * is a refusal invented for a question nobody was ever shown, the same class of
165
- * lie as telling the model a stopped turn was refused. WAITING is the honest
166
- * behaviour.
178
+ * request would clobber the first's DOM. A second request WAITS: answering it
179
+ * `cancel` on the spot would be a refusal invented for a question nobody was ever
180
+ * shown.
167
181
  *
168
182
  * Here rather than in the presenter because this is the only place that sees
169
- * EVERY request whatever raised it — a tool handler, an app's own button, and
170
- * (soon) the tool-approval gate. A custom presenter registered by a consumer gets
171
- * the same protection for free, which it previously had none of.
183
+ * EVERY request whatever raised it — a tool handler, an app's own button, the
184
+ * tool-approval gate. A custom presenter registered by a consumer gets the same
185
+ * protection for free.
172
186
  */
173
187
  private _elicitationQueue;
174
188
  private _tools;
175
189
  private _toolRenderers;
176
190
  private _toolSummaries;
191
+ private _toolInputFormatters;
177
192
  /** Tagged blocks the stream parser recognises in the prose — see {@link registerStreamBlock}. */
178
193
  private _streamBlocks;
179
194
  private _segmentDefaults;
@@ -264,7 +279,7 @@ export declare class AparteConfig {
264
279
  * @param sanitizer A sanitizer function (e.g. a DOMPurify wrapper) for
265
280
  * hardened coverage, or `null` to DISABLE sanitization. Disabling exposes
266
281
  * you to XSS from LLM-authored content — only do so for content you fully
267
- * trust and have already sanitized upstream.
282
+ * trust and have already sanitized upstream. `null` prints a console warning, once.
268
283
  * @example aparteGlobalConfig.setHtmlSanitizer((html) => DOMPurify.sanitize(html));
269
284
  */
270
285
  setHtmlSanitizer(sanitizer: AparteSanitizer | null): void;
@@ -294,22 +309,33 @@ export declare class AparteConfig {
294
309
  */
295
310
  resolveSystemPrompt(): string | null;
296
311
  /**
297
- * Set a custom Icon provider (e.g., Lucide, FontAwesome, Material)
312
+ * Set a custom Icon provider (e.g., Lucide, FontAwesome, Material). It replaces the
313
+ * whole set, icons added with `registerIcons` included; a name it leaves out keeps
314
+ * core's drawing.
298
315
  * @param provider Object implementing AparteIconProvider interface
299
316
  */
300
317
  setIconProvider(provider: AparteIconProvider): void;
318
+ /**
319
+ * Add icons to the set, or redraw some of it, keeping the others. A name core does not
320
+ * draw is welcome: an action's `icon`, `<aparte-composer-action icon>` and
321
+ * `<aparte-icon name>` then find it. To type such a name, merge it into
322
+ * `AparteIconProvider`: `declare module '@aparte/core' { interface AparteIconProvider { share?: () => string } }`.
323
+ *
324
+ * @example
325
+ * aparteGlobalConfig.registerIcons({ share: () => '<svg class="aparte-icon" viewBox="0 0 24 24">…</svg>' });
326
+ * aparteGlobalConfig.registerAction({ id: 'share', icon: 'share', label: 'Share', zones: ['bubble'] });
327
+ */
328
+ registerIcons(icons: Record<string, () => string>): void;
301
329
  /**
302
330
  * The icon set as a **complete** provider: every name resolves, falling back
303
331
  * to `APARTE_DEFAULT_ICON_FALLBACKS` for anything the registered provider doesn't
304
332
  * implement. Callers (bubble action bar, composer controls) can therefore
305
333
  * invoke `icons.copy()` unconditionally.
306
334
  *
307
- * It used to hand back the registered provider verbatim, so a provider that
308
- * implemented a subset — which `getIcon()` has always supported, and which
309
- * the type now states — crashed every other icon with
310
- * "icons.retry is not a function".
335
+ * A registered provider may implement only a subset of the names; the missing ones
336
+ * fall back, so `icons.retry()` never throws "is not a function".
311
337
  */
312
- getIconProvider(): Required<AparteIconProvider>;
338
+ getIconProvider(): Required<Pick<AparteIconProvider, AparteCoreIconName>> & AparteIconProvider;
313
339
  /**
314
340
  * Set a custom avatar renderer. Lets framework consumers (Angular,
315
341
  * React, Vue, …) mount live components in place of the default
@@ -398,35 +424,28 @@ export declare class AparteConfig {
398
424
  */
399
425
  extendLocale(translations: Partial<AparteLocale> & AparteLocaleExtensions): void;
400
426
  /**
401
- * Get icon HTML string by name
402
- * Falls back to textual representation if no provider is set
427
+ * An icon's markup by name: the registered drawing, else core's. A name neither holds
428
+ * returns `undefined` — core's names always resolve, and a name merged into
429
+ * `AparteIconProvider` stays possibly `undefined`: only the configs it was registered on
430
+ * draw it.
403
431
  */
404
- getIcon(name: AparteIconName): string;
432
+ getIcon(name: AparteCoreIconName): string;
433
+ getIcon(name: string): string | undefined;
405
434
  /**
406
435
  * Set a custom Key provider (e.g., AparteVault override)
407
436
  */
408
437
  setKeyProvider(provider: AparteKeyProvider): void;
409
438
  /**
410
- * Add a key source, without replacing the one `setKeyProvider` holds. Returns a
411
- * teardown.
412
- *
413
- * This is how `AparteClient({ keyResolver })` — the channel the docs teach as
414
- * primary — reaches everything that needs a key rather than the chat alone. It
415
- * used to reach the chat ONLY, so the model selector, whose one data path is
416
- * `refreshProviderModels`, showed an empty list on every cloud provider while
417
- * the chat worked: `fetchModels` returns `[]` without a key, so there was
418
- * nothing to see and nothing said.
419
- *
420
- * The direction matters (decision #9): the client registers a source ON the
421
- * config, so the capability is never hostage to the client — a page that only
422
- * ever calls `setKeyProvider` is unchanged, and a page that constructs no
423
- * client at all still lists models.
424
- *
425
- * Every call is its own source, even when the same function is handed in
426
- * twice: two panes sharing one module-level resolver are two mounts, and the
427
- * first one to unmount must not take the second one's key with it. A `Set`
428
- * keyed by the function itself made them one entry, which either teardown
429
- * removed.
439
+ * Add a key source beside the one {@link AparteConfig.setKeyProvider | setKeyProvider()}
440
+ * holds, and return the function that removes it. The sources are asked in the order they
441
+ * were added, then `setKeyProvider`'s, and the first answer wins. `AparteClient`'s
442
+ * `keyResolver` is registered this way, so the model selector can list a cloud provider's
443
+ * models too. Each call is a source of its own, even with the same function.
444
+ * @example
445
+ * const release = aparteGlobalConfig.registerKeyProvider((providerId) =>
446
+ * providerId === 'openrouter' ? localStorage.getItem('openrouter-key') : undefined);
447
+ * // when what owns the key goes away:
448
+ * release();
430
449
  */
431
450
  registerKeyProvider(provider: AparteKeyProvider): () => void;
432
451
  /**
@@ -447,13 +466,20 @@ export declare class AparteConfig {
447
466
  */
448
467
  getKey(providerId: string): Promise<string | Record<string, string> | undefined>;
449
468
  /**
450
- * Refresh models for a specific provider
451
- * Orchestrates: Key Retrieval -> Fetch -> Return
452
- * This keeps UI components unaware of keys.
469
+ * Fetch a provider's models, with the key and endpoint its key sources answer, so a
470
+ * component that lists models never handles a key. The list is kept, and
471
+ * `getCurrentModel()` reads the selected model's capabilities from it. Answers `[]` for an
472
+ * unknown provider, one with no `fetchModels`, or a fetch that fails (with a console warning).
453
473
  */
454
474
  refreshProviderModels(providerId: string): Promise<AparteAIModel[]>;
455
475
  /**
456
- * Register one or more AI providers (e.g., OpenRouter, Gemini, Anthropic)
476
+ * Register one or more AI providers (e.g., OpenRouter, Gemini, Anthropic).
477
+ *
478
+ * When this leaves exactly one provider registered, offering exactly one model it knows
479
+ * without a request (a scripted or an in-browser provider), and no model is selected,
480
+ * that model is selected. A provider that lists its models over the network selects
481
+ * nothing: name one with {@link AparteConfig.setModelConfig | setModelConfig()}, or let the
482
+ * person pick in `<aparte-model-selector>`.
457
483
  * @param providers AparteAIProvider implementations
458
484
  * @example
459
485
  * aparteGlobalConfig.registerAIProvider(OpenRouterProvider);
@@ -485,11 +511,14 @@ export declare class AparteConfig {
485
511
  /**
486
512
  * Register a model preference provider for agnostic persistence.
487
513
  * The host app decides how/where to store the selected provider & model.
514
+ * `load` answers `{ provider, model }` — the names {@link AparteModelPreference} reads —
515
+ * and {@link AparteConfig.restoreModelPreference | restoreModelPreference()} applies it.
488
516
  * @example
489
517
  * aparteGlobalConfig.setModelPreferenceProvider({
490
- * save: (p, m) => localStorage.setItem('model', JSON.stringify({p, m})),
491
- * load: () => JSON.parse(localStorage.getItem('model') ?? 'null')
518
+ * save: (provider, model) => localStorage.setItem('model', JSON.stringify({ provider, model })),
519
+ * load: () => JSON.parse(localStorage.getItem('model') ?? 'null'),
492
520
  * });
521
+ * aparteGlobalConfig.restoreModelPreference();
493
522
  */
494
523
  setModelPreferenceProvider(provider: AparteModelPreferenceProvider): void;
495
524
  /**
@@ -524,13 +553,15 @@ export declare class AparteConfig {
524
553
  */
525
554
  ruleOnToolCall(call: AparteToolCall): AparteApprovalRuling;
526
555
  /**
527
- * Restore previously saved model preference via the registered provider.
556
+ * Restore the saved model preference via the registered provider.
528
557
  * Should be called once at app startup, before any component mounts.
529
- * No-op if no provider is registered or nothing was saved.
558
+ * No-op if no provider is registered or nothing was saved. The saved selection is
559
+ * applied without being saved again.
530
560
  */
531
561
  restoreModelPreference(): AparteModelPreference | null;
532
562
  /**
533
- * Set model selection configuration
563
+ * Select the default provider and model, merged over the current selection. With a
564
+ * model-preference provider registered and both set, the selection is saved through it.
534
565
  */
535
566
  setModelConfig(config: AparteModelConfig): void;
536
567
  /**
@@ -548,34 +579,20 @@ export declare class AparteConfig {
548
579
  * the chat can actually send. Used by the composer's `require-model` gate.
549
580
  */
550
581
  hasSelectedModel(): boolean;
551
- /**
552
- * Opt-in UX: when enabled, `<aparte-composer>` blocks sending and greys out
553
- * until {@link hasSelectedModel} is true (e.g. while the model selector is
554
- * still fetching its list). Off by default so single-model / backend setups
555
- * that never select a model are unaffected.
556
- */
557
582
  /**
558
583
  * Elicitation policy: whether a choice offers a free-text "Other…" escape.
559
584
  *
560
- * This is the HOST's decision, not the model's. `ask_user` used to carry an
561
- * `allow_other` field in the schema it hands the model, which meant the model
562
- * decided your UX — and a small model fills a field it does not understand: one
563
- * sent two questions with `allow_other: true` and no options at all, so the
564
- * panel rendered a radio list whose only entry was "Other…", twice.
565
- *
566
- * Every serious implementation of this pattern makes the escape hatch a property
567
- * of the surface rather than of the request. Default `true`, which is what the
568
- * panel did before, so nothing a user sees changes — only who gets to say so.
569
- * A direct `requestUserInput` caller can still set `allowOther` per field; that
570
- * is the app talking, and it wins.
585
+ * This is the HOST's decision, not the model's: the `ask_user` schema handed to the
586
+ * model carries no `allow_other` field, because a small model fills a field it does
587
+ * not understand (a question with `allow_other: true` and no options renders a radio
588
+ * list whose only entry is "Other…"). Default `true`. A direct `requestUserInput`
589
+ * caller can still set `allowOther` per field; that is the app talking, and it wins.
571
590
  *
572
591
  * `layout` decides how a form of SEVERAL questions is presented.
573
592
  * `'stepped'` (default) asks them one at a time with a chip per question;
574
- * `'stacked'` puts them all in the panel at once. Stacked was the only shape,
575
- * inherited unexamined from MCP elicitation — which describes a FORM for
576
- * collecting structured data, not two different questions asked mid-conversation.
577
- * No product asks a person two questions by stacking them in one box; it is kept
578
- * as an option because the form case is real, not because it was the right default.
593
+ * `'stacked'` puts them all in the panel at once — the shape of an MCP elicitation
594
+ * FORM collecting structured data, which is why it stays an option, but not the
595
+ * right default for two different questions asked mid-conversation.
579
596
  *
580
597
  * `answerOnClick` decides how a question asked ON ITS OWN with a single choice — an
581
598
  * `enum` without `multiple` or a `default`, a `boolean` without a `default` — is
@@ -608,6 +625,12 @@ export declare class AparteConfig {
608
625
  setElicitationFieldRenderer(fn: AparteElicitationFieldRenderer | null): void;
609
626
  /** The custom field renderer, if one is registered. */
610
627
  getElicitationFieldRenderer(): AparteElicitationFieldRenderer | undefined;
628
+ /**
629
+ * Opt-in UX: when enabled, `<aparte-composer>` blocks sending and greys out
630
+ * until {@link hasSelectedModel} is true (e.g. while the model selector is
631
+ * still fetching its list). Off by default so single-model / backend setups
632
+ * that never select a model are unaffected.
633
+ */
611
634
  setRequireModelSelection(required: boolean): void;
612
635
  /** Whether the composer should gate on model selection (see {@link setRequireModelSelection}). */
613
636
  getRequireModelSelection(): boolean;
@@ -618,7 +641,8 @@ export declare class AparteConfig {
618
641
  */
619
642
  getCurrentModel(): AparteAIModel | undefined;
620
643
  /**
621
- * Get translated string by key
644
+ * The locale's string for `key`, or the default (English) locale's when the locale
645
+ * leaves it out; `''` for a key neither declares.
622
646
  */
623
647
  t(key: keyof AparteLocale): string;
624
648
  /**
@@ -636,7 +660,7 @@ export declare class AparteConfig {
636
660
  renderMarkdown(raw: string): string;
637
661
  /**
638
662
  * Highlight code block
639
- * Fallback: Returns raw code wrapped in <pre><code>
663
+ * Fallback: Returns raw code wrapped in `<pre><code>`
640
664
  * Supports Promise if provider is async/streaming
641
665
  */
642
666
  highlightCode(code: string, lang: string): Promise<string>;
@@ -652,18 +676,11 @@ export declare class AparteConfig {
652
676
  /** Get all registered tool definitions (to pass in AparteChatRequest) */
653
677
  getTools(): AparteTool[];
654
678
  /**
655
- * The registered tools' own `systemPrompt`s, joined, or `null` if none set one.
656
- *
657
- * `AparteTool.systemPrompt` has always been documented as "injected automatically when
658
- * this tool is registered", on the type and in the tools guide — and nothing read it.
659
- * A field that is documented and dead is worse than one that does not exist: a caller
660
- * writes it, sees the tool work (the model has the schema either way), and never learns
661
- * that the sentence explaining WHEN to reach for it was dropped. `@aparte/plugin-ask-user`
662
- * sets one, so a shipped plugin was losing its instructions.
663
- *
664
- * Registration order, blank line between, because two tools' instructions are two
665
- * paragraphs and not one run-on sentence. The app's own template stays a separate
666
- * message — see `resolveSystemPrompt`, which is about the app and not about the tools.
679
+ * The registered tools' own `systemPrompt`s, in registration order with a blank line
680
+ * between, or `null` if none sets one. `AparteClient` sends them with every request, as a
681
+ * system message after the app's own ({@link AparteConfig.resolveSystemPrompt | resolveSystemPrompt()});
682
+ * a request you assemble yourself should send them the same way, or the model loses the
683
+ * tools' instructions.
667
684
  */
668
685
  resolveToolSystemPrompts(): string | null;
669
686
  /** Get the handler for a tool by name */
@@ -697,8 +714,8 @@ export declare class AparteConfig {
697
714
  * is a string, so a consumer's own segment type is covered by the same call.
698
715
  *
699
716
  * The problem it solves: a consumer streaming a reply does not CONSTRUCT its
700
- * segments — the parser does — so there was no hook at all for "reasoning blocks
701
- * open in my app". Per-segment fields only reach segments you build yourself.
717
+ * segments — the parser does — so a per-segment field cannot express "reasoning
718
+ * blocks open in my app": per-segment fields only reach segments you build yourself.
702
719
  *
703
720
  * Applied where identity is stamped (`utils/segments.ts`), so it covers every
704
721
  * path a segment can arrive by — the parser, `addSegment`, and the segments
@@ -729,8 +746,8 @@ export declare class AparteConfig {
729
746
  * Say what a call targets, in the default row, after the tool's name.
730
747
  *
731
748
  * The default row names the tool and keeps its arguments behind a disclosure, so a
732
- * reader saw that a file was read, not which one. Replacing the row with
733
- * `registerToolRenderer` for that one line meant re-implementing its six states,
749
+ * reader sees that a file was read, not which one. Replacing the row with
750
+ * `registerToolRenderer` for that one line would mean re-implementing its six states,
734
751
  * the spinner, the disclosure and the relabel contract. This keeps all of them and
735
752
  * adds the line. A tool with its own renderer draws its own row, so its summary is
736
753
  * never read.
@@ -750,6 +767,21 @@ export declare class AparteConfig {
750
767
  unregisterToolSummary(toolName: string): void;
751
768
  /** Get the summary for a specific tool name. Returns undefined if none registered. */
752
769
  getToolSummary(toolName: string): AparteToolSummary | undefined;
770
+ /**
771
+ * Show a tool's arguments as a person reads them, in the approval panel and in the
772
+ * default tool row's disclosure — one formatter for both. Without one, both show the
773
+ * JSON the model sent.
774
+ *
775
+ * @example
776
+ * // Approve "write_file notes.md (2 KB)" rather than a JSON object.
777
+ * aparteGlobalConfig.registerToolInputFormatter('write_file', (input) =>
778
+ * `${String(input['path'] ?? '')} (${Math.ceil(String(input['content'] ?? '').length / 1024)} KB)`);
779
+ */
780
+ registerToolInputFormatter(toolName: string, formatter: AparteToolInputFormatter): void;
781
+ /** Unregister a tool's input formatter. */
782
+ unregisterToolInputFormatter(toolName: string): void;
783
+ /** Get the input formatter for a tool name. Returns undefined if none registered. */
784
+ getToolInputFormatter(toolName: string): AparteToolInputFormatter | undefined;
753
785
  /**
754
786
  * Teach the stream parser a tagged block: `<tag attr="…">…</tag>` in the model's
755
787
  * prose becomes the segment `toSegment` builds, streamed delta by delta.
@@ -787,6 +819,12 @@ export declare class AparteConfig {
787
819
  * confirmation, a text field, a form) and resolves with the user's answer.
788
820
  * The `<aparte-elicitation>` Web Component registers itself here; an app can
789
821
  * override with its own framework-native presenter. Pass `null` to clear.
822
+ *
823
+ * Several can be registered, one per chat: `owner` is an element of the chat the
824
+ * presenter belongs to (`<aparte-elicitation>` passes itself). A request whose `target`
825
+ * is inside that chat reaches its presenter; a request with no `target`, or from a chat
826
+ * with no presenter of its own, reaches the most recently registered one. Registering a
827
+ * presenter again makes it the most recent.
790
828
  */
791
829
  setElicitationPresenter(presenter: AparteElicitationPresenter | null, owner?: HTMLElement): void;
792
830
  /**
@@ -810,39 +848,25 @@ export declare class AparteConfig {
810
848
  * the same chat is the right one — found by comparing chat boundaries rather than by
811
849
  * `contains`, because the presenter is a sibling of the transcript, not an ancestor
812
850
  * of it. With no target, no match, or no boundary to compare, the top of the stack
813
- * is the answer, which is exactly the old single-slot behaviour.
851
+ * is the answer.
814
852
  */
815
853
  private _presenterFor;
816
854
  /**
817
- * Ask the user for typed input mid-run and await their response. This is the
818
- * generic primitive behind `ask_user` and tool approval — the KIND of
819
- * question is the schema, not a bespoke tool.
820
- *
821
- * **Resolves** `accept` with the value, or `decline` when the user declines.
822
- *
823
- * **Rejects** — it does not resolve — when the request ends without an answer, with
824
- * an {@link AparteElicitationAbortError} whose `name` is `'AbortError'` and whose
825
- * `reason` is `'aborted'` (the turn was stopped, the signal fired, or another request
826
- * took the question away) or `'no-presenter'` (nothing was mounted to ask it). So
827
- * `await` it inside a `try`, or attach a `.catch()`.
855
+ * Ask the person for typed input in the middle of a run, and wait for the answer. The
856
+ * primitive behind `ask_user` and tool approval: the kind of question is its schema.
828
857
  *
829
- * That is a change, and this block described the old behaviour for a whole release:
830
- * "resolves `cancel` when the turn is cancelled", and "with NO presenter registered it
831
- * resolves `cancel` rather than hanging". Both were false the moment `cancel` was
832
- * removed — and the second is the one that bites, because a developer who reads
833
- * "rather than hanging" writes no `.catch()` and gets an unhandled rejection. It ships
834
- * in the `.d.ts` and in the custom-elements manifest, which is the API surface the
835
- * docs site renders, so it was the most-read wrong sentence in the library.
858
+ * **Resolves** `accept` with the value, or `decline` when the person declines.
836
859
  *
837
- * A value was removed rather than renamed on purpose: `cancel` was easy to handle as
838
- * though it were an answer, and the approval gate did exactly that — it read a stopped
839
- * turn as the user refusing a tool they were never shown.
860
+ * **Rejects**, with no answer, with an {@link AparteElicitationAbortError} (its `name` is
861
+ * `'AbortError'`) whose `reason` is `'aborted'` — the turn was stopped, the signal fired,
862
+ * or another request took the question away — or `'no-presenter'`, when nothing is mounted
863
+ * to ask it (with a console warning, once). `await` it in a `try`, or attach a `.catch()`.
840
864
  *
841
- * With no presenter it rejects `'no-presenter'` and warns once, because a request
842
- * nobody could see is a setup mistake only the developer can fix. The default
843
- * presenter is `<aparte-elicitation>`, which registers itself from its
844
- * `connectedCallback` — so it has to be IN THE DOM. A docs page of ours claimed it
845
- * "installs itself — nothing to register", which is how that was found.
865
+ * The question goes to the presenter of the chat that holds `request.target` (see
866
+ * {@link AparteConfig.setElicitationPresenter | setElicitationPresenter()});
867
+ * `<aparte-elicitation>` is the default one, and registers itself once it is in the DOM.
868
+ * A chat shows one question at a time: a second request in the same chat waits until the
869
+ * first is answered or ends, and requests with no `target` share one queue.
846
870
  */
847
871
  requestUserInput(request: AparteElicitationRequest): Promise<AparteElicitationResult>;
848
872
  /**
@@ -850,36 +874,40 @@ export declare class AparteConfig {
850
874
  *
851
875
  * The wait exists so a second question cannot take the panel away from the one on
852
876
  * screen — a property of ONE panel, and `_present` routes by target, so a chat is
853
- * the right unit. It used to be one queue for the whole config: two chats on the
854
- * global config shared it, and an approval waiting for an answer in the first (which
855
- * is all an approval does) held the second's question behind it for ever, with
856
- * nothing on screen to answer. Requests that name no chat keep sharing the `null`
857
- * queue, because they all reach the same presenter — the top of the stack.
877
+ * the right unit. One queue for the whole config would let an approval waiting in
878
+ * the first chat hold the second chat's question behind it for ever. Requests that
879
+ * name no chat share the `null` queue, because they all reach the same presenter —
880
+ * the top of the stack.
858
881
  */
859
882
  private _elicitationQueueKey;
860
883
  /** Hand ONE request to the presenter. Called only from the queue. */
861
884
  private _present;
862
885
  /**
863
- * Reset ALL configuration back to defaults — providers, registries, model
864
- * selection and bubble actions. Previously left `_aiProviders` / `_tools` /
865
- * `_toolRenderers` / `_modelConfig` behind, which leaked across SPA
866
- * navigations (registries only ever grew). Now a full reset.
886
+ * Put the configuration back to its defaults: the providers and the selected model,
887
+ * the tools with their renderers and summaries, the renderers and render hooks, the
888
+ * Markdown and highlight providers, the sanitizer, the system prompt, the locale, icons,
889
+ * avatars, actions and host handlers, the conversation manager, the question presenters
890
+ * and their queue. Three things stay: the transport, the key sources added with
891
+ * {@link AparteConfig.registerKeyProvider | registerKeyProvider()} (an `AparteClient`'s
892
+ * `keyResolver` among them), and the {@link AparteConfig.subscribe | subscribe()} listeners.
867
893
  */
868
894
  reset(): void;
869
895
  private _defaultMarkdownRenderer;
870
896
  private _defaultHighlightRenderer;
871
897
  }
872
898
  /**
873
- * Global configuration singleton for Aparte.
874
- * Use this to register providers and configure behavior.
899
+ * The page-wide configuration: every chat reads it unless an ancestor carries an instance of
900
+ * its own ({@link attachConfig}). There is one per window, kept on `window`, so two copies of
901
+ * the package on one page share it; off the browser (a server render, a test) each import
902
+ * creates its own.
875
903
  */
876
904
  export declare const aparteGlobalConfig: AparteConfig;
877
905
  /**
878
906
  * Detail payload for `aparte-config-change`, dispatched on `window` whenever any
879
907
  * provider, locale, action or model setting changes.
880
908
  *
881
- * Five core components listen for it — the widest listener footprint of any event
882
- * that had no declared type. `config` is what makes per-instance config work: a
909
+ * Every core component that draws config-derived text or chrome listens for it. `config` is
910
+ * what makes per-instance config work: a
883
911
  * component resolving to a different instance compares it and skips the rebuild
884
912
  * instead of every chat on the page reacting to every config's change.
885
913
  *
@@ -1 +1 @@
1
- {"version":3,"file":"aparte-config.d.ts","sourceRoot":"","sources":["../../src/config/aparte-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAiC,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAyB,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACrG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EACR,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EACpF,oBAAoB,EAAE,oBAAoB,EAC7C,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAK7H,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAC7D,MAAM,MAAM,uBAAuB,GAC7B,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,GACxC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,MAAM,MAAM,8BAA8B,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1E,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAChD;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,MAAM,KAC7C,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI,GAClD,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,6BAA6B;;;;;;CAMhC,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B;;CAE/B,CAAC;AAEX,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC1C,0DAA0D;IAC1D,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,+FAA+F;IAC/F,IAAI,EAAE,MAAM,qBAAqB,GAAG,IAAI,CAAC;CAC5C;AAED;;;;;GAKG;AACH,MAAM,WAAW,+BAA+B;IAC5C,qFAAqF;IACrF,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oDAAoD;IACpD,GAAG,IAAI,IAAI,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,+BAA+B,CAAC;AAKvG,qBAAa,YAAY;IACrB,OAAO,CAAC,iBAAiB,CAAC,CAAyB;IACnD,OAAO,CAAC,0BAA0B,CAAC,CAAkC;IACrE,OAAO,CAAC,kBAAkB,CAAC,CAA0B;IAIrD,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,yBAAyB,CAAC,CAAiC;IACnE,OAAO,CAAC,eAAe,CAAC,CAAuB;IAC/C,OAAO,CAAC,cAAc,CAAC,CAAsB;IAC7C,OAAO,CAAC,mBAAmB,CAAC,CAA2B;IACvD,OAAO,CAAC,mBAAmB,CAAC,CAA2B;IACvD,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IACzD,OAAO,CAAC,aAAa,CAAC,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAC,CAAuB;IAC/C,OAAO,CAAC,YAAY,CAAC,CAAoB;IACzC;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAA8B;IAGhD,OAAO,CAAC,YAAY,CAA4C;IAChE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,cAAc,CAA2C;IACjE,OAAO,CAAC,YAAY,CAAyB;IAC7C,mFAAmF;IACnF,OAAO,CAAC,sBAAsB,CAAS;IACvC,oGAAoG;IACpG,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,kBAAkB,CAAoC;IAC9D,0GAA0G;IAC1G,OAAO,CAAC,yBAAyB,CAAQ;IACzC,OAAO,CAAC,yBAAyB,CAAC,CAA6C;IAE/E,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,wBAAwB,CAAC,CAAgC;IAEjE,OAAO,CAAC,eAAe,CAAqC;IAG5D,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IAsBzD,OAAO,CAAC,sBAAsB,CAAsE;IACpG,mFAAmF;IACnF,OAAO,CAAC,kBAAkB,CAAS;IACnC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,iBAAiB,CAAgD;IAGzE,OAAO,CAAC,MAAM,CAA4E;IAC1F,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,cAAc,CAA6C;IACnE,iGAAiG;IACjG,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,gBAAgB,CAAiD;IAGzE,OAAO,CAAC,aAAa,CAAiE;IAItF,OAAO,CAAC,oBAAoB,CAAmE;IAM/F;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAW1C,0EAA0E;IAC1E,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,EAAE;IAMlD,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMlC;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,MAAM,EAAE,yBAAyB,GAAG,IAAI;IAKzD;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI;IAKvD,2EAA2E;IAM3E,eAAe,IAAI,QAAQ,CAAC,wBAAwB,CAAC;IAMrD,wGAAwG;IACxG,gBAAgB,IAAI;QAChB,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,IAAI,EAAE,OAAO,CAAC;QACd,IAAI,CAAC,EAAE,sBAAsB,EAAE,CAAC;QAChC,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;KACxC;IAYD;;OAEG;IACH,mBAAmB,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI;IAIrD;;;;;;;;;;OAUG;IACH,4BAA4B,CAAC,EAAE,EAAE,+BAA+B,GAAG,IAAI;IAIvE;;;;OAIG;IACH,+BAA+B,CAAC,MAAM,EAAE,WAAW,GAAG,+BAA+B,GAAG,IAAI;IAI5F;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,uBAAuB,GAAG,IAAI;IAIvD;;;;OAIG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAkBzD;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIlC;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAInD,yEAAyE;IACzE,uBAAuB,IAAI,MAAM,GAAG,SAAS;IAI7C;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,EAAE,8BAA8B,GAAG,IAAI;IAIrE;;;OAGG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAOpC;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IASnD;;;;;;;;;;OAUG;IACH,eAAe,IAAI,QAAQ,CAAC,kBAAkB,CAAC;IAU/C;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI;IAM9D,+DAA+D;IAC/D,iBAAiB,IAAI,oBAAoB,GAAG,IAAI;IAIhD;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI;IAK9D,+DAA+D;IAC/D,iBAAiB,IAAI,oBAAoB,GAAG,IAAI;IAIhD;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI;IAK5D,8DAA8D;IAC9D,gBAAgB,IAAI,mBAAmB,GAAG,IAAI;IAI9C;;;;;;OAMG;IACH,qBAAqB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,GAAG,IAAI;IAKtE,mEAAmE;IACnE,qBAAqB,IAAI,wBAAwB,GAAG,IAAI;IAIxD;;;;;OAKG;IACH,qBAAqB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,GAAG,IAAI;IAKtE,oEAAoE;IACpE,qBAAqB,IAAI,wBAAwB,GAAG,IAAI;IAIxD;;;;;;OAMG;IACH,sBAAsB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI;IAKxE,qEAAqE;IACrE,sBAAsB,IAAI,yBAAyB,GAAG,IAAI;IAI1D;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,sBAAsB,GAAG,IAAI;IAO9D;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAKnB;;;;;;;;;;;;OAYG;IACH,SAAS,IAAI,YAAY,GAAG,sBAAsB;IAIlD;;;;OAIG;IACH,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,sBAAsB,GAAG,IAAI;IAKhF;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAMrC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIjD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAM5D;;;;;;;;;;;;;;;OAeG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAWtF;;;;OAIG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAyBzE;;;;;;OAMG;IACH,kBAAkB,CAAC,GAAG,SAAS,EAAE,gBAAgB,EAAE,GAAG,IAAI;IA2B1D;;OAEG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAOtC;;;OAGG;IACH,cAAc,IAAI,gBAAgB,EAAE;IAUpC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIvD;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAI9C,mEAAmE;IACnE,YAAY,IAAI,eAAe;IAI/B;;;;;;;;OAQG;IACH,0BAA0B,CAAC,QAAQ,EAAE,6BAA6B,GAAG,IAAI;IAIzE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI;IAO5D,iDAAiD;IACjD,iBAAiB,IAAI,oBAAoB,GAAG,IAAI;IAIhD;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,oBAAoB;IAO1D;;;;OAIG;IACH,sBAAsB,IAAI,qBAAqB,GAAG,IAAI;IAYtD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAW/C;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAK3C,OAAO,CAAC,OAAO;IAmBf;;OAEG;IACH,cAAc,IAAI,iBAAiB;IAInC;;;OAGG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;;;;OAKG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,qBAAqB,CAAC,OAAO,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAOvH,kEAAkE;IAClE,qBAAqB,IAAI;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE;IAIvG;;;;;;OAMG;IACH,2BAA2B,CAAC,EAAE,EAAE,8BAA8B,GAAG,IAAI,GAAG,IAAI;IAK5E,uDAAuD;IACvD,2BAA2B,IAAI,8BAA8B,GAAG,SAAS;IAIzE,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAMjD,kGAAkG;IAClG,wBAAwB,IAAI,OAAO;IAInC;;;;OAIG;IACH,eAAe,IAAI,aAAa,GAAG,SAAS;IA6B5C;;OAEG;IACH,CAAC,CAAC,GAAG,EAAE,MAAM,YAAY,GAAG,MAAM;IAOlC;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAwBnC;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBhE;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIhE,gCAAgC;IAChC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,yEAAyE;IACzE,QAAQ,IAAI,UAAU,EAAE;IAIxB;;;;;;;;;;;;;OAaG;IACH,wBAAwB,IAAI,MAAM,GAAG,IAAI;IAOzC,yCAAyC;IACzC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAI1E;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAMvE,wDAAwD;IACxD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAInE,oCAAoC;IACpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,qCAAqC;IACrC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI9C,uFAAuF;IACvF,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIjE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIvE,qCAAqC;IACrC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7C,sFAAsF;IACtF,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI/D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAKnD,yCAAyC;IACzC,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxC,4DAA4D;IAC5D,eAAe,IAAI,iBAAiB,EAAE;IAQtC;;;OAGG;IACH,sBAAsB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAIhE,8EAA8E;IAC9E,sBAAsB,IAAI,yBAAyB,GAAG,SAAS;IAQ/D;;;;;OAKG;IACH,uBAAuB,CAAC,SAAS,EAAE,0BAA0B,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI;IAYhG;;;;;;;OAOG;IACH,0BAA0B,CAAC,SAAS,EAAE,0BAA0B,GAAG,IAAI;IAIvE;;;OAGG;IACH,uBAAuB,IAAI,0BAA0B,GAAG,SAAS;IAIjE;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAyBrF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IAI5B,qEAAqE;IACrE,OAAO,CAAC,QAAQ;IA8BhB;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAkDb,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,yBAAyB;CAIpC;AAoCD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,cAAoB,CAAC;AAKpD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,6BAA6B;IAC1C,mFAAmF;IACnF,MAAM,EAAE,YAAY,CAAC;IACrB,iDAAiD;IACjD,WAAW,EAAE,iBAAiB,CAAC;CAClC"}
1
+ {"version":3,"file":"aparte-config.d.ts","sourceRoot":"","sources":["../../src/config/aparte-config.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,18 @@
1
+ /**
2
+ * Icon Provider Interface
3
+ *
4
+ * Defines the contract for icon plugins.
5
+ * Returns HTML strings: SVG, <i> tags, emojis, or any valid HTML.
6
+ *
7
+ * @example
8
+ * // Register an icon provider (e.g. a FontAwesome bridge)
9
+ * aparteGlobalConfig.setIconProvider({
10
+ * copy: () => '<i class="fas fa-copy"></i>',
11
+ * check: () => '<i class="fas fa-check"></i>',
12
+ * // ...
13
+ * });
14
+ */
15
+ import { APARTE_ICON_GLYPHS } from '../icons/glyphs.js';
1
16
  export interface AparteIconProvider {
2
17
  /** Copy button icon */
3
18
  copy?: () => string;
@@ -62,8 +77,10 @@ export interface AparteIconProvider {
62
77
  /** Paused — the tool row's state while a person is asked to decide */
63
78
  pause?: () => string;
64
79
  }
65
- /** Icon names available in the provider */
80
+ /** Icon names available in the provider — core's, and any merged into `AparteIconProvider`. */
66
81
  export type AparteIconName = keyof AparteIconProvider;
82
+ /** The names core draws itself. A name merged into `AparteIconProvider` is not one of them. */
83
+ export type AparteCoreIconName = keyof typeof APARTE_ICON_GLYPHS;
67
84
  /**
68
85
  * The default drawing for every name, assembled from `icons/glyphs.ts`.
69
86
  *
@@ -73,5 +90,5 @@ export type AparteIconName = keyof AparteIconProvider;
73
90
  * renders would still ship to everybody. Extra glyphs are individual exports a consumer
74
91
  * imports by name, never members of this record.
75
92
  */
76
- export declare const APARTE_DEFAULT_ICON_FALLBACKS: Record<AparteIconName, string>;
93
+ export declare const APARTE_DEFAULT_ICON_FALLBACKS: Record<AparteCoreIconName, string>;
77
94
  //# sourceMappingURL=icon-provider.d.ts.map