@blinkk/root-cms 3.0.1-alpha.1 → 3.0.1-beta.3

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.
@@ -1,12 +1,74 @@
1
1
  import { RootConfig, Plugin, Request } from '@blinkk/root';
2
2
  import { App } from 'firebase-admin/app';
3
3
  import { Firestore, WriteBatch, Timestamp, Query } from 'firebase-admin/firestore';
4
- import { C as Collection } from './schema-rjBOZk-j.js';
4
+ import { C as Collection } from './schema-Db_xODoi.js';
5
5
 
6
6
  /**
7
- * Supported Root AI models. Defaults to 'gemini-3-flash-preview'.
7
+ * Provider type for an AI model. Use `openai-compatible` for any OpenAI-style
8
+ * endpoint (e.g. local Ollama, vLLM, OpenRouter).
8
9
  */
9
- type RootAiModel = 'gemini-3-pro-preview' | 'gemini-3-flash-preview' | 'gemini-2.5-flash' | 'gemini-2.0-pro' | string;
10
+ type AiProvider = 'openai' | 'openai-compatible' | 'anthropic' | 'google';
11
+ /**
12
+ * Configuration for a single chat model.
13
+ *
14
+ * Inspired by Ollama's `Modelfile` and LiteLLM's model config: each entry maps
15
+ * a CMS-facing id to a provider, model id and credentials.
16
+ */
17
+ interface AiModelConfig {
18
+ /** Stable id used by the CMS UI and stored alongside chat history. */
19
+ id: string;
20
+ /** Optional human-readable label rendered in the model picker. */
21
+ label?: string;
22
+ /** Optional description shown under the label. */
23
+ description?: string;
24
+ /** AI provider/family to route requests to. */
25
+ provider: AiProvider;
26
+ /**
27
+ * Provider-specific model id (e.g. `gpt-4o`, `claude-opus-4-5`,
28
+ * `gemini-2.5-pro`). Defaults to `id` if omitted.
29
+ */
30
+ modelId?: string;
31
+ /** API key for the provider. */
32
+ apiKey?: string;
33
+ /** Override the provider's base URL (required for `openai-compatible`). */
34
+ baseURL?: string;
35
+ /** Custom headers to send with each request. */
36
+ headers?: Record<string, string>;
37
+ /** Capabilities advertised to the UI. */
38
+ capabilities?: {
39
+ /** Whether the model can call tools. Defaults to `true`. */
40
+ tools?: boolean;
41
+ /** Whether the model can stream reasoning/thinking. Defaults to `false`. */
42
+ reasoning?: boolean;
43
+ /** Whether the model accepts image attachments. Defaults to `false`. */
44
+ attachments?: boolean;
45
+ };
46
+ }
47
+ /**
48
+ * Full AI config registered on the cms plugin.
49
+ */
50
+ interface AiConfig {
51
+ /** Models exposed in the model picker. The first entry is the default. */
52
+ models: AiModelConfig[];
53
+ /** Id of the default model. Defaults to the first model in `models`. */
54
+ defaultModel?: string;
55
+ /**
56
+ * Image generation models. Used by the image generator and any other
57
+ * features that produce images. Only the `openai` and `google` providers
58
+ * support image generation.
59
+ */
60
+ imageModels?: AiModelConfig[];
61
+ /** Id of the default image model. Defaults to the first entry in `imageModels`. */
62
+ defaultImageModel?: string;
63
+ /**
64
+ * Optional system prompt prepended to every conversation. If a `ROOT.md`
65
+ * file exists at the project root, its contents are appended to this
66
+ * prompt automatically.
67
+ */
68
+ systemPrompt?: string;
69
+ /** Maximum tool-loop steps before stopping. Defaults to 10. */
70
+ maxSteps?: number;
71
+ }
10
72
 
11
73
  /** The result status of a check. */
12
74
  type CheckStatus = 'success' | 'warning' | 'error';
@@ -252,15 +314,51 @@ declare function translationsCheck(options?: TranslationsCheckOptions): CMSCheck
252
314
  /**
253
315
  * Built-in sidebar tools that can be toggled on/off in the CMS UI.
254
316
  */
255
- type CMSBuiltInSidebarTool = 'home' | 'content' | 'tasks' | 'releases' | 'data' | 'assets' | 'translations' | 'ai' | 'settings';
317
+ type CMSBuiltInSidebarTool = 'home' | 'content' | 'releases' | 'data' | 'assets' | 'translations' | 'ai' | 'settings';
256
318
  interface CMSUser {
257
319
  email: string;
258
320
  }
321
+ /**
322
+ * @deprecated The `experiments.ai` flag is now used only as a sidebar toggle.
323
+ * Configure chat models on the top-level `ai` plugin option instead.
324
+ */
259
325
  interface CMSAIConfig {
260
326
  /** Custom API endpoint for chat prompts. */
261
327
  endpoint?: string;
262
328
  /** Gen AI model to use. */
263
- model?: RootAiModel;
329
+ model?: string;
330
+ }
331
+ /**
332
+ * Filters applied to the spotlight / global search indexer. By default every
333
+ * collection and every doc is indexed. Use these options to scope the index to
334
+ * a subset of the project's content.
335
+ *
336
+ * Doc ids use the `<collectionId>/<slug>` format (e.g. `Pages/about`), which
337
+ * matches the format used elsewhere in the CMS.
338
+ */
339
+ interface CMSSearchIndexConfig {
340
+ /**
341
+ * Collections to include in the search index. If specified, only these
342
+ * collections are indexed. If unset, all collections are indexed (subject to
343
+ * `excludeCollections`).
344
+ */
345
+ includeCollections?: string[];
346
+ /**
347
+ * Collections to exclude from the search index. Applied after
348
+ * `includeCollections`.
349
+ */
350
+ excludeCollections?: string[];
351
+ /**
352
+ * Doc ids to include in the search index. If specified, only these docs are
353
+ * indexed (within collections that pass the collection filter). Format:
354
+ * `<collectionId>/<slug>`.
355
+ */
356
+ includeDocIds?: string[];
357
+ /**
358
+ * Doc ids to exclude from the search index. Applied after `includeDocIds`.
359
+ * Format: `<collectionId>/<slug>`.
360
+ */
361
+ excludeDocIds?: string[];
264
362
  }
265
363
  interface CMSSidebarTool {
266
364
  /** URL for the sidebar icon image. */
@@ -338,13 +436,13 @@ type CMSPluginOptions = {
338
436
  * Engine Images API serving URL.
339
437
  *
340
438
  * Setting this to `true` uses the default hosted service at
341
- * https://gci.rootjs.dev.
439
+ * https://services.rootjs.dev.
342
440
  *
343
441
  * To set up GCI:
344
442
  *
345
443
  * - Create a GCS bucket with fine-grained permissions
346
444
  * - Share owner access to the bucket with the service account returned in
347
- * https://gci.rootjs.dev/_/service_account
445
+ * https://services.rootjs.dev/_/service_account
348
446
  *
349
447
  * To disable GCI, leave this value empty or set to `false`, which which will
350
448
  * serve images directly from GCS instead.
@@ -361,7 +459,9 @@ type CMSPluginOptions = {
361
459
  */
362
460
  tools?: Record<string, CMSSidebarTool>;
363
461
  /**
364
- * Hide specific built-in sidebar tools.
462
+ * Hide specific built-in sidebar tools. Hiding a tool also removes its
463
+ * surfaces from the CMS home page. The underlying routes remain
464
+ * accessible via direct URL.
365
465
  */
366
466
  hiddenBuiltInTools?: CMSBuiltInSidebarTool[];
367
467
  };
@@ -378,18 +478,75 @@ type CMSPluginOptions = {
378
478
  * Callback when an action occurs.
379
479
  */
380
480
  onAction?: (action: Action) => any;
481
+ /**
482
+ * Configures the Root CMS AI chat (`/cms/ai`). Provide one or more models
483
+ * — the CMS proxies user requests directly to the configured providers.
484
+ *
485
+ * The shape mirrors open source tools like Ollama and LiteLLM: each entry
486
+ * declares the provider, model id and credentials. Keys live on the server,
487
+ * never on the client.
488
+ *
489
+ * Example:
490
+ * ```ts
491
+ * cmsPlugin({
492
+ * ai: {
493
+ * models: [
494
+ * {
495
+ * id: 'gpt-5.5',
496
+ * label: 'GPT-5.5',
497
+ * provider: 'openai',
498
+ * apiKey: process.env.OPENAI_API_KEY,
499
+ * capabilities: {tools: true, reasoning: true, attachments: true},
500
+ * },
501
+ * {
502
+ * id: 'claude-opus-4-7',
503
+ * label: 'Claude Opus 4.7',
504
+ * provider: 'anthropic',
505
+ * apiKey: process.env.ANTHROPIC_API_KEY,
506
+ * capabilities: {tools: true, reasoning: true, attachments: true},
507
+ * },
508
+ * {
509
+ * id: 'gemini-3.1-pro',
510
+ * label: 'Gemini 3.1 Pro',
511
+ * provider: 'gemini',
512
+ * apiKey: process.env.GEMINI_API_KEY,
513
+ * capabilities: {tools: true, reasoning: true, attachments: true},
514
+ * },
515
+ * {
516
+ * id: 'llama3-local',
517
+ * label: 'Llama 3 (local)',
518
+ * provider: 'openai-compatible',
519
+ * baseURL: 'http://localhost:11434/v1',
520
+ * },
521
+ * ],
522
+ * defaultModel: 'gpt-4o',
523
+ * },
524
+ * });
525
+ * ```
526
+ *
527
+ * For project-specific guidance (conventions, patterns, naming rules, etc.),
528
+ * drop a `ROOT.md` file at the project root. Its contents are appended to
529
+ * the system prompt for every chat — similar to `AGENTS.md` / `CLAUDE.md`.
530
+ */
531
+ ai?: AiConfig;
381
532
  /**
382
533
  * Experimental config options. Note: these are subject to change at any time.
383
534
  */
384
535
  experiments?: {
385
536
  /**
386
- * Enables the Root CMS AI page.
537
+ * @deprecated Use the top-level `ai` config instead. Setting this to
538
+ * `true` keeps the AI chat icon visible in the sidebar.
387
539
  */
388
540
  ai?: boolean | CMSAIConfig;
389
541
  /**
390
542
  * Enables the v2 `TranslationsManager`.
391
543
  */
392
544
  v2TranslationsManager?: boolean;
545
+ /**
546
+ * Enables the task manager (sidebar entry, home page card, and
547
+ * `/cms/tasks` routes).
548
+ */
549
+ taskManager?: boolean;
393
550
  };
394
551
  /**
395
552
  * Adjust console output verbosity. Default is `'info'`.
@@ -476,6 +633,16 @@ type CMSPluginOptions = {
476
633
  * ```
477
634
  */
478
635
  notifications?: CMSNotificationService[];
636
+ /**
637
+ * Configuration for the spotlight / global search indexer. Use this to
638
+ * include or exclude specific collections or docs from being indexed.
639
+ */
640
+ searchIndex?: CMSSearchIndexConfig;
641
+ /**
642
+ * Default UI variant for `oneOf` fields. Individual fields can still
643
+ * override this by setting their own `variant`. Defaults to `'dropdown'`.
644
+ */
645
+ defaultOneOfVariant?: 'dropdown' | 'picker';
479
646
  };
480
647
  type CMSPlugin = Plugin & {
481
648
  name: 'root-cms';
@@ -733,6 +900,8 @@ interface DataSource {
733
900
  syncedBy?: string;
734
901
  publishedAt?: Timestamp;
735
902
  publishedBy?: string;
903
+ archivedAt?: Timestamp;
904
+ archivedBy?: string;
736
905
  }
737
906
  interface DataSourceData<T = any> {
738
907
  dataSource: DataSource;
@@ -1114,6 +1283,16 @@ declare class RootCMSClient {
1114
1283
  * Returns a data source configuration object.
1115
1284
  */
1116
1285
  getDataSource(dataSourceId: string): Promise<DataSource | null>;
1286
+ /**
1287
+ * Archives a data source. Archived data sources cannot be synced or published.
1288
+ */
1289
+ archiveDataSource(dataSourceId: string, options?: {
1290
+ archivedBy?: string;
1291
+ }): Promise<void>;
1292
+ /**
1293
+ * Unarchives a data source.
1294
+ */
1295
+ unarchiveDataSource(dataSourceId: string): Promise<void>;
1117
1296
  /**
1118
1297
  * Syncs a data source to draft state.
1119
1298
  */
@@ -1123,6 +1302,11 @@ declare class RootCMSClient {
1123
1302
  publishDataSource(dataSourceId: string, options?: {
1124
1303
  publishedBy?: string;
1125
1304
  }): Promise<void>;
1305
+ /**
1306
+ * Unpublishes a data source. Removes the `publishedAt`/`publishedBy`
1307
+ * metadata from the DataSource doc and deletes the `Data/published` doc.
1308
+ */
1309
+ unpublishDataSource(dataSourceId: string): Promise<void>;
1126
1310
  publishDataSources(dataSourceIds: string[], options?: {
1127
1311
  publishedBy: string;
1128
1312
  batch?: WriteBatch;
@@ -1365,4 +1549,4 @@ declare class BatchResponse {
1365
1549
  private getTranslationsMap;
1366
1550
  }
1367
1551
 
1368
- export { type CMSAIConfig as $, type Action as A, type BatchRequestOptions as B, type CronUnit as C, type DocMode as D, type TranslationsDoc as E, BatchRequest as F, type GetDocOptions as G, type HttpMethod as H, BatchResponse as I, type Locale as J, type SourceString as K, type LoadTranslationsOptions as L, type TranslatedString as M, type TranslationsDocMode as N, type TranslationsLocaleDocHashMap as O, type TranslationsLocaleDocEntry as P, type MultiLocaleTranslationsMap as Q, RootCMSClient as R, type SetDocOptions as S, type TranslationsMap as T, type UserRole as U, type SingleLocaleTranslationsMap as V, TranslationsManager as W, buildTranslationsDbPath as X, buildTranslationsLocaleDocDbPath as Y, type CMSBuiltInSidebarTool as Z, type CMSUser as _, type LocaleTranslations as a, type CMSSidebarTool as a0, type CMSPluginOptions as a1, type CMSPlugin as a2, cmsPlugin as a3, type CMSCheck as a4, type CheckResult as a5, type CheckContext as a6, type CheckStatus as a7, translationsCheck as a8, type TranslationsCheckOptions as a9, type CMSService as aa, type CMSServiceContext as ab, type CMSNotificationService as ac, type NotificationResult as ad, type NotificationServiceContext as ae, type CMSTranslationService as af, type TranslationExportResult as ag, type TranslationImportResult as ah, type TranslationRow as ai, type TranslationServiceContext as aj, type Doc as b, type DataSourceCron as c, type DataSource as d, type DataSourceData as e, type DataSourceMode as f, type SaveDraftOptions as g, type UpdateDraftOptions as h, type ListDocsOptions as i, type GetCountOptions as j, type Translation as k, type Release as l, type ListActionsOptions as m, isRichTextData as n, getCmsPlugin as o, marshalData as p, normalizeData as q, type ArrayObject as r, marshalArray as s, toArrayObject as t, unmarshalData as u, unmarshalArray as v, translationsForLocale as w, parseDocId as x, type BatchRequestQuery as y, type BatchRequestQueryOptions as z };
1552
+ export { type CMSAIConfig as $, type Action as A, type BatchRequestOptions as B, type CronUnit as C, type DocMode as D, type TranslationsDoc as E, BatchRequest as F, type GetDocOptions as G, type HttpMethod as H, BatchResponse as I, type Locale as J, type SourceString as K, type LoadTranslationsOptions as L, type TranslatedString as M, type TranslationsDocMode as N, type TranslationsLocaleDocHashMap as O, type TranslationsLocaleDocEntry as P, type MultiLocaleTranslationsMap as Q, RootCMSClient as R, type SetDocOptions as S, type TranslationsMap as T, type UserRole as U, type SingleLocaleTranslationsMap as V, TranslationsManager as W, buildTranslationsDbPath as X, buildTranslationsLocaleDocDbPath as Y, type CMSBuiltInSidebarTool as Z, type CMSUser as _, type LocaleTranslations as a, type CMSSearchIndexConfig as a0, type CMSSidebarTool as a1, type CMSPluginOptions as a2, type CMSPlugin as a3, cmsPlugin as a4, type AiConfig as a5, type AiModelConfig as a6, type AiProvider as a7, type CMSCheck as a8, type CheckResult as a9, type CheckContext as aa, type CheckStatus as ab, translationsCheck as ac, type TranslationsCheckOptions as ad, type CMSService as ae, type CMSServiceContext as af, type CMSNotificationService as ag, type NotificationResult as ah, type NotificationServiceContext as ai, type CMSTranslationService as aj, type TranslationExportResult as ak, type TranslationImportResult as al, type TranslationRow as am, type TranslationServiceContext as an, type Doc as b, type DataSourceCron as c, type DataSource as d, type DataSourceData as e, type DataSourceMode as f, type SaveDraftOptions as g, type UpdateDraftOptions as h, type ListDocsOptions as i, type GetCountOptions as j, type Translation as k, type Release as l, type ListActionsOptions as m, isRichTextData as n, getCmsPlugin as o, marshalData as p, normalizeData as q, type ArrayObject as r, marshalArray as s, toArrayObject as t, unmarshalData as u, unmarshalArray as v, translationsForLocale as w, parseDocId as x, type BatchRequestQuery as y, type BatchRequestQueryOptions as z };
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import '@blinkk/root';
2
2
  import 'firebase-admin/app';
3
3
  import 'firebase-admin/firestore';
4
- export { A as Action, r as ArrayObject, F as BatchRequest, B as BatchRequestOptions, y as BatchRequestQuery, z as BatchRequestQueryOptions, I as BatchResponse, C as CronUnit, d as DataSource, c as DataSourceCron, e as DataSourceData, f as DataSourceMode, b as Doc, D as DocMode, j as GetCountOptions, G as GetDocOptions, H as HttpMethod, m as ListActionsOptions, i as ListDocsOptions, L as LoadTranslationsOptions, a as LocaleTranslations, l as Release, R as RootCMSClient, g as SaveDraftOptions, S as SetDocOptions, k as Translation, E as TranslationsDoc, T as TranslationsMap, h as UpdateDraftOptions, U as UserRole, o as getCmsPlugin, n as isRichTextData, s as marshalArray, p as marshalData, q as normalizeData, x as parseDocId, t as toArrayObject, w as translationsForLocale, v as unmarshalArray, u as unmarshalData } from './client-DdB4xpM6.js';
5
- import './schema-rjBOZk-j.js';
4
+ export { A as Action, r as ArrayObject, F as BatchRequest, B as BatchRequestOptions, y as BatchRequestQuery, z as BatchRequestQueryOptions, I as BatchResponse, C as CronUnit, d as DataSource, c as DataSourceCron, e as DataSourceData, f as DataSourceMode, b as Doc, D as DocMode, j as GetCountOptions, G as GetDocOptions, H as HttpMethod, m as ListActionsOptions, i as ListDocsOptions, L as LoadTranslationsOptions, a as LocaleTranslations, l as Release, R as RootCMSClient, g as SaveDraftOptions, S as SetDocOptions, k as Translation, E as TranslationsDoc, T as TranslationsMap, h as UpdateDraftOptions, U as UserRole, o as getCmsPlugin, n as isRichTextData, s as marshalArray, p as marshalData, q as normalizeData, x as parseDocId, t as toArrayObject, w as translationsForLocale, v as unmarshalArray, u as unmarshalData } from './client-1puwLgNx.js';
5
+ import './schema-Db_xODoi.js';
package/dist/client.js CHANGED
@@ -12,7 +12,8 @@ import {
12
12
  translationsForLocale,
13
13
  unmarshalArray,
14
14
  unmarshalData
15
- } from "./chunk-SNZ4S4IC.js";
15
+ } from "./chunk-F4SODS5S.js";
16
+ import "./chunk-CRK7N6RR.js";
16
17
  import "./chunk-MLKGABMK.js";
17
18
  export {
18
19
  BatchRequest,
package/dist/core.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { R as RootCMSClient, D as DocMode, L as LoadTranslationsOptions, T as TranslationsMap, a as LocaleTranslations } from './client-DdB4xpM6.js';
2
- export { A as Action, r as ArrayObject, F as BatchRequest, B as BatchRequestOptions, y as BatchRequestQuery, z as BatchRequestQueryOptions, I as BatchResponse, C as CronUnit, d as DataSource, c as DataSourceCron, e as DataSourceData, f as DataSourceMode, b as Doc, j as GetCountOptions, G as GetDocOptions, H as HttpMethod, m as ListActionsOptions, i as ListDocsOptions, J as Locale, Q as MultiLocaleTranslationsMap, l as Release, g as SaveDraftOptions, S as SetDocOptions, V as SingleLocaleTranslationsMap, K as SourceString, M as TranslatedString, k as Translation, E as TranslationsDoc, N as TranslationsDocMode, P as TranslationsLocaleDocEntry, O as TranslationsLocaleDocHashMap, W as TranslationsManager, h as UpdateDraftOptions, U as UserRole, X as buildTranslationsDbPath, Y as buildTranslationsLocaleDocDbPath, o as getCmsPlugin, n as isRichTextData, s as marshalArray, p as marshalData, q as normalizeData, x as parseDocId, t as toArrayObject, w as translationsForLocale, v as unmarshalArray, u as unmarshalData } from './client-DdB4xpM6.js';
1
+ import { R as RootCMSClient, D as DocMode, L as LoadTranslationsOptions, T as TranslationsMap, a as LocaleTranslations } from './client-1puwLgNx.js';
2
+ export { A as Action, r as ArrayObject, F as BatchRequest, B as BatchRequestOptions, y as BatchRequestQuery, z as BatchRequestQueryOptions, I as BatchResponse, C as CronUnit, d as DataSource, c as DataSourceCron, e as DataSourceData, f as DataSourceMode, b as Doc, j as GetCountOptions, G as GetDocOptions, H as HttpMethod, m as ListActionsOptions, i as ListDocsOptions, J as Locale, Q as MultiLocaleTranslationsMap, l as Release, g as SaveDraftOptions, S as SetDocOptions, V as SingleLocaleTranslationsMap, K as SourceString, M as TranslatedString, k as Translation, E as TranslationsDoc, N as TranslationsDocMode, P as TranslationsLocaleDocEntry, O as TranslationsLocaleDocHashMap, W as TranslationsManager, h as UpdateDraftOptions, U as UserRole, X as buildTranslationsDbPath, Y as buildTranslationsLocaleDocDbPath, o as getCmsPlugin, n as isRichTextData, s as marshalArray, p as marshalData, q as normalizeData, x as parseDocId, t as toArrayObject, w as translationsForLocale, v as unmarshalArray, u as unmarshalData } from './client-1puwLgNx.js';
3
3
  import { Request, RootConfig, Response, RouteParams, GetStaticProps, GetStaticPaths } from '@blinkk/root';
4
4
  import { Query } from 'firebase-admin/firestore';
5
- export { s as schema } from './schema-rjBOZk-j.js';
5
+ export { s as schema } from './schema-Db_xODoi.js';
6
6
  import 'firebase-admin/app';
7
7
 
8
8
  /**
package/dist/core.js CHANGED
@@ -16,7 +16,8 @@ import {
16
16
  translationsForLocale,
17
17
  unmarshalArray,
18
18
  unmarshalData
19
- } from "./chunk-SNZ4S4IC.js";
19
+ } from "./chunk-F4SODS5S.js";
20
+ import "./chunk-CRK7N6RR.js";
20
21
  import {
21
22
  __export
22
23
  } from "./chunk-MLKGABMK.js";
package/dist/functions.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  runCronJobs
3
- } from "./chunk-UTSL2E2P.js";
4
- import "./chunk-SNZ4S4IC.js";
3
+ } from "./chunk-TRM4MQHU.js";
4
+ import "./chunk-F4SODS5S.js";
5
+ import "./chunk-CRK7N6RR.js";
5
6
  import "./chunk-MLKGABMK.js";
6
7
 
7
8
  // core/functions.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateSchemaDts,
3
3
  generateTypes
4
- } from "./chunk-KDXHFMIH.js";
4
+ } from "./chunk-XLX37FRL.js";
5
5
  import "./chunk-MLKGABMK.js";
6
6
  export {
7
7
  generateSchemaDts,
package/dist/plugin.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import '@blinkk/root';
2
2
  import 'firebase-admin/app';
3
3
  import 'firebase-admin/firestore';
4
- export { $ as CMSAIConfig, Z as CMSBuiltInSidebarTool, a4 as CMSCheck, ac as CMSNotificationService, a2 as CMSPlugin, a1 as CMSPluginOptions, aa as CMSService, ab as CMSServiceContext, a0 as CMSSidebarTool, af as CMSTranslationService, _ as CMSUser, a6 as CheckContext, a5 as CheckResult, a7 as CheckStatus, ad as NotificationResult, ae as NotificationServiceContext, ag as TranslationExportResult, ah as TranslationImportResult, ai as TranslationRow, aj as TranslationServiceContext, a9 as TranslationsCheckOptions, a3 as cmsPlugin, a8 as translationsCheck } from './client-DdB4xpM6.js';
5
- import './schema-rjBOZk-j.js';
4
+ export { a5 as AiConfig, a6 as AiModelConfig, a7 as AiProvider, $ as CMSAIConfig, Z as CMSBuiltInSidebarTool, a8 as CMSCheck, ag as CMSNotificationService, a3 as CMSPlugin, a2 as CMSPluginOptions, a0 as CMSSearchIndexConfig, ae as CMSService, af as CMSServiceContext, a1 as CMSSidebarTool, aj as CMSTranslationService, _ as CMSUser, aa as CheckContext, a9 as CheckResult, ab as CheckStatus, ah as NotificationResult, ai as NotificationServiceContext, ak as TranslationExportResult, al as TranslationImportResult, am as TranslationRow, an as TranslationServiceContext, ad as TranslationsCheckOptions, a4 as cmsPlugin, ac as translationsCheck } from './client-1puwLgNx.js';
5
+ import './schema-Db_xODoi.js';