@hiai-gg/docsmint 0.4.6 → 0.4.8

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 (30) hide show
  1. package/backend/src/lib/api-key-encryption.ts +66 -0
  2. package/backend/src/lib/api-key-facade.ts +15 -0
  3. package/backend/src/lib/api-keys.ts +243 -0
  4. package/dist/backend/index.js +1 -1
  5. package/dist/frontend/{HiaiDocsExtensionProvider-DHWLzRUu.js → HiaiDocsExtensionProvider-CMiTXi2J.js} +1 -1
  6. package/dist/frontend/{SettingsDialog-LyZUxxku.js → SettingsDialog-BB7h7GWw.js} +1 -1
  7. package/dist/frontend/{Sidebar-BsJsD1mJ.js → Sidebar-fbtYC3qs.js} +241 -225
  8. package/dist/frontend/app-shell.js +4 -4
  9. package/dist/frontend/components/settings.js +1 -1
  10. package/dist/frontend/components/sidebar.js +1 -1
  11. package/dist/frontend/{context-BMD6XTPe.js → context-KLiM3QQ0.js} +1 -0
  12. package/dist/frontend/dashboard.js +1 -1
  13. package/dist/frontend/extension.d.ts +2 -1
  14. package/dist/frontend/extension.js +1 -1
  15. package/dist/frontend/search.js +1 -1
  16. package/dist/frontend/shared-document.js +1 -1
  17. package/dist/frontend-ssr/app-shell.js +4 -4
  18. package/dist/frontend-ssr/assets/{HiaiDocsExtensionProvider-DAM-lX4R.js → HiaiDocsExtensionProvider-B_MrN08c.js} +1 -1
  19. package/dist/frontend-ssr/assets/{SettingsDialog-Dg97vv83.js → SettingsDialog-C2SMWJL8.js} +1 -1
  20. package/dist/frontend-ssr/assets/{Sidebar-CrDk_HYY.js → Sidebar-DKqmwreh.js} +38 -11
  21. package/dist/frontend-ssr/assets/{context-jz1GGEUi.js → context-BtCMqdVe.js} +1 -0
  22. package/dist/frontend-ssr/components/settings.js +1 -1
  23. package/dist/frontend-ssr/components/sidebar.js +1 -1
  24. package/dist/frontend-ssr/dashboard.js +1 -1
  25. package/dist/frontend-ssr/extension.js +1 -1
  26. package/dist/frontend-ssr/search.js +1 -1
  27. package/dist/frontend-ssr/shared-document.js +1 -1
  28. package/package.json +8 -1
  29. package/packages/cli/src/index.ts +1 -1
  30. package/packages/mcp-server/src/index.ts +1 -1
@@ -1,9 +1,9 @@
1
1
  import { t as e } from "./Icon-CooFj4Ee.js";
2
- import { n as t, r as n } from "./SettingsDialog-LyZUxxku.js";
3
- import { t as r } from "./Sidebar-BsJsD1mJ.js";
2
+ import { n as t, r as n } from "./SettingsDialog-BB7h7GWw.js";
3
+ import { t as r } from "./Sidebar-fbtYC3qs.js";
4
4
  import { E as i } from "./messages-C5Q890i2.js";
5
5
  import { a, i as o } from "./route-context-BqQQ5c4i.js";
6
- import { t as s } from "./HiaiDocsExtensionProvider-DHWLzRUu.js";
6
+ import { t as s } from "./HiaiDocsExtensionProvider-CMiTXi2J.js";
7
7
  import "svelte/internal/disclose-version";
8
8
  import * as c from "svelte/internal/client";
9
9
  import "svelte/internal/flags/legacy";
@@ -179,7 +179,7 @@ function v(e, t) {
179
179
  c.delegate(["click"]);
180
180
  //#endregion
181
181
  //#region src/lib/hosts/DocsmintAppShellHost.svelte
182
- var y = c.from_html("<button type=\"button\" tabindex=\"-1\" aria-label=\"Close navigation menu\" class=\"fixed inset-0 z-40 bg-black/50\"></button>"), b = c.from_html("<div class=\"flex h-screen\" data-docsmint-app-shell-host=\"\"><!> <main id=\"main-content\" class=\"relative z-0 flex-1 overflow-auto\"><!></main></div> <!> <!>", 1), x = c.from_html("<!> <!>", 1);
182
+ var y = c.from_html("<button type=\"button\" tabindex=\"-1\" aria-label=\"Close navigation menu\" class=\"fixed inset-0 z-40 bg-black/50\"></button>"), b = c.from_html("<div class=\"flex h-screen\" data-docsmint-app-shell-host=\"\"><!> <main id=\"main-content\" class=\"relative flex-1 overflow-auto\"><!></main></div> <!> <!>", 1), x = c.from_html("<!> <!>", 1);
183
183
  function S(e, i) {
184
184
  c.push(i, !0);
185
185
  let l = c.prop(i, "request", 19, () => ({ fetch })), u = c.prop(i, "extensions", 19, () => ({}));
@@ -1,2 +1,2 @@
1
- import { t as e } from "../SettingsDialog-LyZUxxku.js";
1
+ import { t as e } from "../SettingsDialog-BB7h7GWw.js";
2
2
  export { e as SettingsDialog };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../Sidebar-BsJsD1mJ.js";
1
+ import { t as e } from "../Sidebar-fbtYC3qs.js";
2
2
  export { e as Sidebar };
@@ -2,6 +2,7 @@ import { createContext as e } from "svelte";
2
2
  //#region src/lib/extensions/context.ts
3
3
  function t(e = {}) {
4
4
  return {
5
+ sidebarTop: [...e.sidebarTop ?? []],
5
6
  navigation: [...e.navigation ?? []],
6
7
  dashboardWidgets: [...e.dashboardWidgets ?? []],
7
8
  searchWidgets: [...e.searchWidgets ?? []],
@@ -18,7 +18,7 @@ import { a as Ne, i as Pe, n as Fe, o as B, r as Ie, t as Le } from "./dialog-Be
18
18
  import { t as V } from "./label-C2HfJNQ2.js";
19
19
  import { n as Re } from "./client-GbtOH90i.js";
20
20
  import { i as ze } from "./categories-Drnns7N6.js";
21
- import { t as Be } from "./context-BMD6XTPe.js";
21
+ import { t as Be } from "./context-KLiM3QQ0.js";
22
22
  import { t as Ve } from "./resolve-BG4HgzpN.js";
23
23
  import { a as He, i as Ue, n as We, r as Ge, t as Ke } from "./select-value-GXwx90Pr.js";
24
24
  import { c as H, i as qe, o as Je } from "./documents-Bc7b_MSZ.js";
@@ -10,6 +10,7 @@ export type ExtensionIcon = ComponentType<SvelteComponent>;
10
10
  export interface DocTabPanelProps { documentId: string; content: string; contentJson: object | undefined; }
11
11
  export interface DocTabDefinition { id: string; label: string; component: Component<DocTabPanelProps>; order?: number; icon?: ExtensionIcon; disabled?: boolean; }
12
12
  export interface NavigationExtension { id: string; label: string; href?: string; icon?: ExtensionIcon; order?: number; badge?: string | number; disabled?: boolean; visible?: ExtensionVisibility; }
13
+ export interface SidebarTopExtension { id: string; component: Component<{ collapsed: boolean }>; order?: number; visible?: ExtensionVisibility; }
13
14
  export interface DashboardWidgetProps { userId?: string; }
14
15
  export interface DashboardWidgetExtension { id: string; title?: string; component: Component<DashboardWidgetProps>; order?: number; colSpan?: 1 | 2 | 3 | 4 | 6 | 12; visible?: ExtensionVisibility; }
15
16
  export interface SearchWidgetProps { query: string; loading: boolean; total?: number; }
@@ -28,7 +29,7 @@ export interface CommandPaletteActionExtension { id: string; label: string; keyw
28
29
  export interface SharedDocumentExtensionCapability { id: string; expiresAt: string; }
29
30
  export interface SharedDocumentExtensionContext { documentId: string; title: string; content: string; contentJson?: object; role: "viewer" | "commenter" | "editor"; capability: SharedDocumentExtensionCapability; permissions: { read: true; annotate: boolean; edit: boolean; export: boolean; }; }
30
31
  export interface SharedDocumentExtension { id: string; label: string; icon?: ExtensionIcon; order?: number; permission: "annotate" | "edit"; visible?: (context: SharedDocumentExtensionContext) => boolean; component: Component<{ context: SharedDocumentExtensionContext }>; }
31
- export interface DocsmintFrontendExtensions { navigation: readonly NavigationExtension[]; dashboardWidgets: readonly DashboardWidgetExtension[]; searchWidgets: readonly SearchWidgetExtension[]; documentTabs: readonly DocTabDefinition[]; editorActions: readonly EditorActionExtension[]; documentMenuActions: readonly DocumentMenuActionExtension[]; settingsSections: readonly SettingsSectionExtension[]; commandPaletteActions: readonly CommandPaletteActionExtension[]; sharedDocumentHeaderActions: readonly SharedDocumentExtension[]; sharedDocumentTabs: readonly SharedDocumentExtension[]; sharedDocumentNotesModes: readonly SharedDocumentExtension[]; sharedDocumentEditorModes: readonly SharedDocumentExtension[]; }
32
+ export interface DocsmintFrontendExtensions { sidebarTop: readonly SidebarTopExtension[]; navigation: readonly NavigationExtension[]; dashboardWidgets: readonly DashboardWidgetExtension[]; searchWidgets: readonly SearchWidgetExtension[]; documentTabs: readonly DocTabDefinition[]; editorActions: readonly EditorActionExtension[]; documentMenuActions: readonly DocumentMenuActionExtension[]; settingsSections: readonly SettingsSectionExtension[]; commandPaletteActions: readonly CommandPaletteActionExtension[]; sharedDocumentHeaderActions: readonly SharedDocumentExtension[]; sharedDocumentTabs: readonly SharedDocumentExtension[]; sharedDocumentNotesModes: readonly SharedDocumentExtension[]; sharedDocumentEditorModes: readonly SharedDocumentExtension[]; }
32
33
  /** @deprecated Use DocsmintFrontendExtensions. */
33
34
  export type HiaiDocsFrontendExtensions = DocsmintFrontendExtensions;
34
35
  export type FrontendExtensions = DocsmintFrontendExtensions;
@@ -1,2 +1,2 @@
1
- import { t as e } from "./HiaiDocsExtensionProvider-DHWLzRUu.js";
1
+ import { t as e } from "./HiaiDocsExtensionProvider-CMiTXi2J.js";
2
2
  export { e as DocsmintExtensionProvider };
@@ -11,7 +11,7 @@ import { At as m, Ct as h, Dt as g, Et as _, Ft as v, Gr as y, Ii as b, It as x,
11
11
  import { n as Ce, o as we, r as j, t as Te } from "./route-context-BqQQ5c4i.js";
12
12
  import { n as M } from "./client-GbtOH90i.js";
13
13
  import { i as Ee } from "./categories-Drnns7N6.js";
14
- import { t as De } from "./context-BMD6XTPe.js";
14
+ import { t as De } from "./context-KLiM3QQ0.js";
15
15
  import { t as Oe } from "./resolve-BG4HgzpN.js";
16
16
  import { i as ke } from "./search-preferences-B1GdbdUc.js";
17
17
  import { a as Ae, i as je, n as Me, r as Ne, t as Pe } from "./select-value-GXwx90Pr.js";
@@ -1,4 +1,4 @@
1
- import { t as e } from "./context-BMD6XTPe.js";
1
+ import { t as e } from "./context-KLiM3QQ0.js";
2
2
  import "svelte/internal/disclose-version";
3
3
  import * as t from "svelte/internal/client";
4
4
  //#region src/lib/components/editor/shared-document.ts
@@ -1,9 +1,9 @@
1
1
  import { T as scroll_to_top_aria } from "./assets/messages-CvqpZNJe.js";
2
2
  import { t as Icon } from "./assets/Icon-B0Zqppjo.js";
3
- import { n as searchPreferences, r as editorPreferences } from "./assets/SettingsDialog-Dg97vv83.js";
4
- import { t as Sidebar } from "./assets/Sidebar-CrDk_HYY.js";
3
+ import { n as searchPreferences, r as editorPreferences } from "./assets/SettingsDialog-C2SMWJL8.js";
4
+ import { t as Sidebar } from "./assets/Sidebar-DKqmwreh.js";
5
5
  import { a as provideDocsmintRouteAdapter, i as provideDocsmintRequestAdapter } from "./assets/route-context-uca_b2Px.js";
6
- import { t as HiaiDocsExtensionProvider } from "./assets/HiaiDocsExtensionProvider-DAM-lX4R.js";
6
+ import { t as HiaiDocsExtensionProvider } from "./assets/HiaiDocsExtensionProvider-B_MrN08c.js";
7
7
  import * as $ from "svelte/internal/server";
8
8
  import { onDestroy } from "svelte";
9
9
  //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/arrow-up.svelte
@@ -263,7 +263,7 @@ function DocsmintAppShellHost($$renderer, $$props) {
263
263
  $$settled = false;
264
264
  }
265
265
  });
266
- $$renderer.push(`<!----> <main id="main-content"${$.attr("inert", isMobile, true)} class="relative z-0 flex-1 overflow-auto">`);
266
+ $$renderer.push(`<!----> <main id="main-content"${$.attr("inert", isMobile, true)} class="relative flex-1 overflow-auto">`);
267
267
  children($$renderer);
268
268
  $$renderer.push(`<!----></main></div> `);
269
269
  MobileSidebarToggle($$renderer, {
@@ -1,4 +1,4 @@
1
- import { n as provideFrontendExtensions } from "./context-jz1GGEUi.js";
1
+ import { n as provideFrontendExtensions } from "./context-BtCMqdVe.js";
2
2
  import "svelte/internal/server";
3
3
  //#region src/lib/hosts/HiaiDocsExtensionProvider.svelte
4
4
  function HiaiDocsExtensionProvider($$renderer, $$props) {
@@ -9,7 +9,7 @@ import { r as signOut } from "./auth-client-x26kqY8Z.js";
9
9
  import { r as getProfile } from "./settings-Bk5Hk9Vq.js";
10
10
  import { a as listApiKeys, i as createGlobalApiKey, n as categoryIdFromScopes, o as revealCategoryApiKey, s as revokeApiKey, t as apiKeyClipboardValue } from "./api-keys-DFqX39MT.js";
11
11
  import { i as listCategories } from "./categories-CTCtdv7V.js";
12
- import { t as getFrontendExtensions } from "./context-jz1GGEUi.js";
12
+ import { t as getFrontendExtensions } from "./context-BtCMqdVe.js";
13
13
  import { t as resolveExtensions } from "./resolve-BqHozBXl.js";
14
14
  import { a as resolveOfflineIdentity, t as disableOfflineAccess } from "./identity-B3uHoDtf.js";
15
15
  import { n as getOfflineDB, t as deleteOfflineDB } from "./db-CnxeO66n.js";
@@ -6,7 +6,7 @@ import { t as Chevron_right } from "./chevron-right-B4p7Sk6X.js";
6
6
  import { t as Clock } from "./clock-IL-eX2di.js";
7
7
  import { t as Copy } from "./copy-CjV57nGQ.js";
8
8
  import { t as Folder } from "./folder-DChhG7qN.js";
9
- import { t as SettingsDialog } from "./SettingsDialog-Dg97vv83.js";
9
+ import { t as SettingsDialog } from "./SettingsDialog-C2SMWJL8.js";
10
10
  import { n as Search, t as Tag } from "./tag-GZEuGWk1.js";
11
11
  import { a as Dropdown_menu, i as Dropdown_menu_content, o as Ellipsis_vertical, r as Dropdown_menu_item, t as Dropdown_menu_trigger } from "./dropdown-menu-Bj5rbqbB.js";
12
12
  import { t as Loader_circle } from "./loader-circle-DZsrZ-er.js";
@@ -17,7 +17,7 @@ import { t as Input } from "./input-DezGsU3y.js";
17
17
  import { t as Label } from "./label-Bj8-TfFN.js";
18
18
  import { n as apiFetch } from "./client-DZMkDkDn.js";
19
19
  import { i as listCategories, r as deleteCategory } from "./categories-CTCtdv7V.js";
20
- import { t as getFrontendExtensions } from "./context-jz1GGEUi.js";
20
+ import { t as getFrontendExtensions } from "./context-BtCMqdVe.js";
21
21
  import { t as resolveExtensions } from "./resolve-BqHozBXl.js";
22
22
  import { n as SHADOW_ITEM_MARKER_PROPERTY_NAME } from "./dndzone-DMvTO_Jz.js";
23
23
  import { c as updateDocument, r as deleteDocument, s as listDocuments, t as clearDocumentsCache } from "./documents-PObdTOiT.js";
@@ -1898,6 +1898,7 @@ function Sidebar($$renderer, $$props) {
1898
1898
  let width = 256;
1899
1899
  let isResizing = false;
1900
1900
  const frontendExtensions = getFrontendExtensions();
1901
+ const sidebarTopExtensions = $.derived(() => resolveExtensions(frontendExtensions.sidebarTop, { pathname: page.url.pathname }));
1901
1902
  const navigationExtensions = $.derived(() => resolveExtensions(frontendExtensions.navigation, { pathname: page.url.pathname }));
1902
1903
  let $$settled = true;
1903
1904
  let $$inner_renderer;
@@ -1910,7 +1911,7 @@ function Sidebar($$renderer, $$props) {
1910
1911
  $$renderer.push(`<!--]--> `);
1911
1912
  if (!mobile) {
1912
1913
  $$renderer.push("<!--[0-->");
1913
- $$renderer.push(`<button class="absolute -right-3 top-4 z-40 flex size-6 items-center justify-center rounded-full border border-border bg-background shadow-sm hover:bg-accent">`);
1914
+ $$renderer.push(`<button class="sidebar-collapse-toggle absolute -right-3 top-4 z-40 flex size-6 items-center justify-center rounded-full border border-border bg-background shadow-sm hover:bg-accent">`);
1914
1915
  if (isCollapsed()) {
1915
1916
  $$renderer.push("<!--[0-->");
1916
1917
  Panel_left_open($$renderer, { class: "size-3.5" });
@@ -1923,7 +1924,20 @@ function Sidebar($$renderer, $$props) {
1923
1924
  $$renderer.push(`<!--]--> `);
1924
1925
  if (!isCollapsed()) {
1925
1926
  $$renderer.push("<!--[0-->");
1926
- $$renderer.push(`<div class="flex flex-1 flex-col gap-4 overflow-y-auto p-3">`);
1927
+ $$renderer.push(`<div class="flex flex-1 flex-col gap-4 overflow-y-auto p-3"><!--[-->`);
1928
+ const each_array = $.ensure_array_like(sidebarTopExtensions());
1929
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
1930
+ const SidebarTop = each_array[$$index].component;
1931
+ if (SidebarTop) {
1932
+ $$renderer.push("<!--[-->");
1933
+ SidebarTop($$renderer, { collapsed: false });
1934
+ $$renderer.push("<!--]-->");
1935
+ } else {
1936
+ $$renderer.push("<!--[!-->");
1937
+ $$renderer.push("<!--]-->");
1938
+ }
1939
+ }
1940
+ $$renderer.push(`<!--]--> `);
1927
1941
  SearchBar($$renderer, { class: "mr-5" });
1928
1942
  $$renderer.push(`<!----> `);
1929
1943
  $$renderer.push("<!--[0-->");
@@ -1940,9 +1954,9 @@ function Sidebar($$renderer, $$props) {
1940
1954
  if (navigationExtensions().length > 0) {
1941
1955
  $$renderer.push("<!--[0-->");
1942
1956
  $$renderer.push(`<div class="h-px bg-border"></div> <nav class="space-y-1" aria-label="Product navigation"><!--[-->`);
1943
- const each_array = $.ensure_array_like(navigationExtensions());
1944
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
1945
- let extension = each_array[$$index];
1957
+ const each_array_1 = $.ensure_array_like(navigationExtensions());
1958
+ for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
1959
+ let extension = each_array_1[$$index_1];
1946
1960
  const Icon = extension.icon;
1947
1961
  $$renderer.push(`<a${$.attr("href", extension.href ? resolveDocsmintRoute(route, extension.href) : "#")}${$.attr("aria-disabled", extension.disabled)} class="flex items-center gap-2 rounded-md px-2 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground aria-disabled:pointer-events-none aria-disabled:opacity-50">`);
1948
1962
  if (Icon) {
@@ -1968,7 +1982,20 @@ function Sidebar($$renderer, $$props) {
1968
1982
  $$renderer.push(`<!--]--></div>`);
1969
1983
  } else {
1970
1984
  $$renderer.push("<!--[-1-->");
1971
- $$renderer.push(`<div class="flex flex-1 flex-col items-center gap-1 pt-14"><button class="flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground"${$.attr("title", sidebar_folders())}${$.attr("aria-label", sidebar_folders())}>`);
1985
+ $$renderer.push(`<div class="flex flex-1 flex-col items-center gap-1 pt-14"><!--[-->`);
1986
+ const each_array_2 = $.ensure_array_like(sidebarTopExtensions());
1987
+ for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {
1988
+ const SidebarTop = each_array_2[$$index_2].component;
1989
+ if (SidebarTop) {
1990
+ $$renderer.push("<!--[-->");
1991
+ SidebarTop($$renderer, { collapsed: true });
1992
+ $$renderer.push("<!--]-->");
1993
+ } else {
1994
+ $$renderer.push("<!--[!-->");
1995
+ $$renderer.push("<!--]-->");
1996
+ }
1997
+ }
1998
+ $$renderer.push(`<!--]--> <button class="flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground"${$.attr("title", sidebar_folders())}${$.attr("aria-label", sidebar_folders())}>`);
1972
1999
  Folder($$renderer, { class: "size-4" });
1973
2000
  $$renderer.push(`<!----></button> <button class="flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground"${$.attr("title", search_title())}${$.attr("aria-label", search_title())}>`);
1974
2001
  Search($$renderer, { class: "size-4" });
@@ -1977,9 +2004,9 @@ function Sidebar($$renderer, $$props) {
1977
2004
  $$renderer.push(`<!----></button> <button class="flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground"${$.attr("title", doc_tags())}${$.attr("aria-label", doc_tags())}>`);
1978
2005
  Tag($$renderer, { class: "size-4" });
1979
2006
  $$renderer.push(`<!----></button> <!--[-->`);
1980
- const each_array_1 = $.ensure_array_like(navigationExtensions());
1981
- for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
1982
- let extension = each_array_1[$$index_1];
2007
+ const each_array_3 = $.ensure_array_like(navigationExtensions());
2008
+ for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {
2009
+ let extension = each_array_3[$$index_3];
1983
2010
  const Icon = extension.icon;
1984
2011
  $$renderer.push(`<a${$.attr("href", extension.href ? resolveDocsmintRoute(route, extension.href) : "#")}${$.attr("aria-disabled", extension.disabled)} class="flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground aria-disabled:pointer-events-none aria-disabled:opacity-50"${$.attr("title", extension.label)}${$.attr("aria-label", extension.label)}>`);
1985
2012
  if (Icon) {
@@ -8,6 +8,7 @@ import { createContext } from "svelte";
8
8
  */
9
9
  function createFrontendExtensions(initial = {}) {
10
10
  return {
11
+ sidebarTop: [...initial.sidebarTop ?? []],
11
12
  navigation: [...initial.navigation ?? []],
12
13
  dashboardWidgets: [...initial.dashboardWidgets ?? []],
13
14
  searchWidgets: [...initial.searchWidgets ?? []],
@@ -1,2 +1,2 @@
1
- import { t as SettingsDialog } from "../assets/SettingsDialog-Dg97vv83.js";
1
+ import { t as SettingsDialog } from "../assets/SettingsDialog-C2SMWJL8.js";
2
2
  export { SettingsDialog };
@@ -1,2 +1,2 @@
1
- import { t as Sidebar } from "../assets/Sidebar-CrDk_HYY.js";
1
+ import { t as Sidebar } from "../assets/Sidebar-DKqmwreh.js";
2
2
  export { Sidebar };
@@ -17,7 +17,7 @@ import { a as Dialog, i as Dialog_description, n as Dialog_header, o as Button,
17
17
  import { t as Label } from "./assets/label-Bj8-TfFN.js";
18
18
  import { n as apiFetch } from "./assets/client-DZMkDkDn.js";
19
19
  import "./assets/categories-CTCtdv7V.js";
20
- import { t as getFrontendExtensions } from "./assets/context-jz1GGEUi.js";
20
+ import { t as getFrontendExtensions } from "./assets/context-BtCMqdVe.js";
21
21
  import { t as resolveExtensions } from "./assets/resolve-BqHozBXl.js";
22
22
  import { a as Select, i as Select_content, n as Select_trigger, r as Select_item, t as Select_value } from "./assets/select-value-6Lk0ToYd.js";
23
23
  import { c as updateDocument, i as getDocument } from "./assets/documents-PObdTOiT.js";
@@ -1,2 +1,2 @@
1
- import { t as HiaiDocsExtensionProvider } from "./assets/HiaiDocsExtensionProvider-DAM-lX4R.js";
1
+ import { t as HiaiDocsExtensionProvider } from "./assets/HiaiDocsExtensionProvider-B_MrN08c.js";
2
2
  export { HiaiDocsExtensionProvider as DocsmintExtensionProvider };
@@ -7,7 +7,7 @@ import { t as Rotate_ccw } from "./assets/rotate-ccw-BlgWwaiq.js";
7
7
  import { n as Search, t as Tag } from "./assets/tag-GZEuGWk1.js";
8
8
  import { n as getDocsmintRouteAdapter, r as navigateDocsmintRoute, t as getDocsmintRequestAdapter } from "./assets/route-context-uca_b2Px.js";
9
9
  import "./assets/categories-CTCtdv7V.js";
10
- import { t as getFrontendExtensions } from "./assets/context-jz1GGEUi.js";
10
+ import { t as getFrontendExtensions } from "./assets/context-BtCMqdVe.js";
11
11
  import { t as resolveExtensions } from "./assets/resolve-BqHozBXl.js";
12
12
  import "./assets/select-value-6Lk0ToYd.js";
13
13
  import "./assets/tag-store.svelte-DvgUduhd.js";
@@ -1,4 +1,4 @@
1
- import { t as getFrontendExtensions } from "./assets/context-jz1GGEUi.js";
1
+ import { t as getFrontendExtensions } from "./assets/context-BtCMqdVe.js";
2
2
  import * as $ from "svelte/internal/server";
3
3
  //#region src/lib/components/editor/shared-document.ts
4
4
  var ATTACHMENT_PATH = /^\/api\/attachments\/[0-9a-f-]+\/raw$/i;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hiai-gg/docsmint",
3
- "version": "0.4.6",
3
+ "version": "0.4.8",
4
4
  "type": "module",
5
5
  "browser": {
6
6
  "./dist/backend-launcher.js": false,
@@ -88,6 +88,10 @@
88
88
  "import": "./dist/storage-quota.js",
89
89
  "types": "./dist/storage-quota.d.ts"
90
90
  },
91
+ "./backend/lib/api-key-facade": {
92
+ "import": "./backend/src/lib/api-key-facade.ts",
93
+ "types": "./backend/src/lib/api-key-facade.ts"
94
+ },
91
95
  "./frontend/app-shell": {
92
96
  "node": "./dist/frontend-ssr/app-shell.js",
93
97
  "import": "./dist/frontend/app-shell.js",
@@ -336,6 +340,9 @@
336
340
  "backend/src/lib/redis-factory.ts",
337
341
  "backend/src/lib/storage-factory.ts",
338
342
  "backend/src/lib/logger.ts",
343
+ "backend/src/lib/api-key-facade.ts",
344
+ "backend/src/lib/api-keys.ts",
345
+ "backend/src/lib/api-key-encryption.ts",
339
346
  "backend/src/lib/lifecycle-service.ts",
340
347
  "README.md",
341
348
  "LICENSE"
@@ -24,7 +24,7 @@ import { registerSearch } from "./commands/search.js";
24
24
  import { registerSnapshot } from "./commands/snapshot.js";
25
25
  import { registerUpdate } from "./commands/update.js";
26
26
 
27
- const VERSION = "0.4.6";
27
+ const VERSION = "0.4.8";
28
28
 
29
29
  const program = new Command();
30
30
  program
@@ -35,7 +35,7 @@ interface McpToolResult {
35
35
 
36
36
  const server = new McpServer({
37
37
  name: "hiai-docs",
38
- version: "0.4.6",
38
+ version: "0.4.8",
39
39
  });
40
40
 
41
41
  /**