@btst/stack 4.1.0 → 4.2.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 (82) hide show
  1. package/README.md +2 -2
  2. package/dist/packages/stack/src/plugins/ai-chat/api/operations.cjs +15 -9
  3. package/dist/packages/stack/src/plugins/ai-chat/api/operations.mjs +16 -10
  4. package/dist/packages/stack/src/plugins/ai-chat/api/page-tools.cjs +28 -0
  5. package/dist/packages/stack/src/plugins/ai-chat/api/page-tools.mjs +29 -2
  6. package/dist/packages/stack/src/plugins/ai-chat/api/plugin.cjs +5 -0
  7. package/dist/packages/stack/src/plugins/ai-chat/api/plugin.mjs +5 -0
  8. package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-interface.cjs +91 -8
  9. package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-interface.mjs +91 -8
  10. package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-layout.cjs +76 -3
  11. package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-layout.mjs +80 -7
  12. package/dist/packages/stack/src/plugins/ai-chat/client/components/tool-call-display.cjs +17 -0
  13. package/dist/packages/stack/src/plugins/ai-chat/client/components/tool-call-display.mjs +18 -1
  14. package/dist/packages/stack/src/plugins/ai-chat/client/context/chat-analytics.cjs +42 -0
  15. package/dist/packages/stack/src/plugins/ai-chat/client/context/chat-analytics.mjs +39 -0
  16. package/dist/packages/stack/src/plugins/ai-chat/client/plugin.cjs +2 -1
  17. package/dist/packages/stack/src/plugins/ai-chat/client/plugin.mjs +2 -1
  18. package/dist/plugins/ai-chat/api/index.d.cts +2 -2
  19. package/dist/plugins/ai-chat/api/index.d.mts +2 -2
  20. package/dist/plugins/ai-chat/api/index.d.ts +2 -2
  21. package/dist/plugins/ai-chat/client/components/index.d.cts +2 -1
  22. package/dist/plugins/ai-chat/client/components/index.d.mts +2 -1
  23. package/dist/plugins/ai-chat/client/components/index.d.ts +2 -1
  24. package/dist/plugins/ai-chat/client/context/page-ai-context.cjs +4 -0
  25. package/dist/plugins/ai-chat/client/context/page-ai-context.d.cts +6 -2
  26. package/dist/plugins/ai-chat/client/context/page-ai-context.d.mts +6 -2
  27. package/dist/plugins/ai-chat/client/context/page-ai-context.d.ts +6 -2
  28. package/dist/plugins/ai-chat/client/context/page-ai-context.mjs +4 -1
  29. package/dist/plugins/ai-chat/client/hooks/index.d.cts +2 -2
  30. package/dist/plugins/ai-chat/client/hooks/index.d.mts +2 -2
  31. package/dist/plugins/ai-chat/client/hooks/index.d.ts +2 -2
  32. package/dist/plugins/ai-chat/client/index.d.cts +7 -3
  33. package/dist/plugins/ai-chat/client/index.d.mts +7 -3
  34. package/dist/plugins/ai-chat/client/index.d.ts +7 -3
  35. package/dist/plugins/ai-chat/query-keys.d.cts +1 -1
  36. package/dist/plugins/ai-chat/query-keys.d.mts +1 -1
  37. package/dist/plugins/ai-chat/query-keys.d.ts +1 -1
  38. package/dist/plugins/blog/api/index.d.cts +2 -2
  39. package/dist/plugins/blog/api/index.d.mts +2 -2
  40. package/dist/plugins/blog/api/index.d.ts +2 -2
  41. package/dist/plugins/blog/client/hooks/index.d.cts +2 -2
  42. package/dist/plugins/blog/client/hooks/index.d.mts +2 -2
  43. package/dist/plugins/blog/client/hooks/index.d.ts +2 -2
  44. package/dist/plugins/blog/client/index.d.cts +2 -2
  45. package/dist/plugins/blog/client/index.d.mts +2 -2
  46. package/dist/plugins/blog/client/index.d.ts +2 -2
  47. package/dist/plugins/blog/query-keys.d.cts +2 -2
  48. package/dist/plugins/blog/query-keys.d.mts +2 -2
  49. package/dist/plugins/blog/query-keys.d.ts +2 -2
  50. package/dist/shared/{stack.CjCSDfWy.d.mts → stack.94kN3pEK.d.mts} +5 -5
  51. package/dist/shared/{stack.B5yPgHsp.d.mts → stack.B7Mj74BQ.d.mts} +18 -2
  52. package/dist/shared/{stack.BGzgFx3R.d.cts → stack.BTStHVTy.d.cts} +5 -5
  53. package/dist/shared/{stack.rVF0f509.d.mts → stack.C-eQN_Jt.d.ts} +60 -4
  54. package/dist/shared/{stack.rVF0f509.d.ts → stack.C5FZr-jJ.d.mts} +60 -4
  55. package/dist/shared/{stack.Dvy7FmaA.d.mts → stack.CTneIW0u.d.mts} +37 -37
  56. package/dist/shared/{stack.BOZRaVpu.d.cts → stack.Ce6V7eDj.d.cts} +37 -37
  57. package/dist/shared/{stack.DlBoNqYu.d.ts → stack.D5b9l24t.d.ts} +37 -37
  58. package/dist/shared/{stack.3Sr6qRtT.d.ts → stack.DBH1Bjko.d.ts} +18 -2
  59. package/dist/shared/{stack.Dpg_JjIo.d.ts → stack.DfrRYOIl.d.ts} +5 -5
  60. package/dist/shared/{stack.C4oVW2qK.d.cts → stack.Dgt3MCtW.d.cts} +18 -2
  61. package/dist/shared/{stack.rVF0f509.d.cts → stack.xAiy2VtO.d.cts} +60 -4
  62. package/package.json +1 -1
  63. package/src/plugins/ai-chat/__tests__/authorization.test.ts +106 -1
  64. package/src/plugins/ai-chat/__tests__/classnames-overrides.test.tsx +4 -1
  65. package/src/plugins/ai-chat/__tests__/page-content.test.ts +177 -0
  66. package/src/plugins/ai-chat/__tests__/page-widget.test.tsx +573 -0
  67. package/src/plugins/ai-chat/api/operations.ts +29 -13
  68. package/src/plugins/ai-chat/api/page-tools.ts +56 -2
  69. package/src/plugins/ai-chat/api/plugin.ts +13 -0
  70. package/src/plugins/ai-chat/client/analytics.ts +35 -0
  71. package/src/plugins/ai-chat/client/components/chat-interface.tsx +113 -10
  72. package/src/plugins/ai-chat/client/components/chat-layout.tsx +118 -7
  73. package/src/plugins/ai-chat/client/components/tool-call-display.tsx +29 -1
  74. package/src/plugins/ai-chat/client/context/chat-analytics.tsx +46 -0
  75. package/src/plugins/ai-chat/client/context/page-ai-context.tsx +9 -1
  76. package/src/plugins/ai-chat/client/index.ts +2 -0
  77. package/src/plugins/ai-chat/client/localization/index.ts +8 -0
  78. package/src/plugins/ai-chat/client/overrides.ts +5 -0
  79. package/src/plugins/ai-chat/client/plugin.tsx +3 -0
  80. package/dist/shared/{stack.Csi-4Mgz.d.cts → stack.CKc_Bais.d.cts} +7 -7
  81. package/dist/shared/{stack.Csi-4Mgz.d.mts → stack.CKc_Bais.d.mts} +7 -7
  82. package/dist/shared/{stack.Csi-4Mgz.d.ts → stack.CKc_Bais.d.ts} +7 -7
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { createContext, useContext, useRef, useCallback } from 'react';
3
+ import { usePluginOverrides, useStack } from '@btst/stack/context';
4
+ import { usePageAIContext } from '../../../../../../../plugins/ai-chat/client/context/page-ai-context.mjs';
5
+ import { resolveAiChatMode } from '../overrides.mjs';
6
+
7
+ const ChatAnalyticsPageKey = createContext(
8
+ void 0
9
+ );
10
+ function useChatAnalytics() {
11
+ const { onAnalyticsEvent } = usePluginOverrides("aiChat", {});
12
+ const { plugins } = useStack();
13
+ const pageKey = useContext(ChatAnalyticsPageKey);
14
+ const routeName = usePageAIContext()?.routeName;
15
+ const latest = useRef({
16
+ onAnalyticsEvent,
17
+ pageKey,
18
+ routeName,
19
+ mode: resolveAiChatMode(plugins?.aiChat?.config)
20
+ });
21
+ latest.current = {
22
+ onAnalyticsEvent,
23
+ pageKey,
24
+ routeName,
25
+ mode: resolveAiChatMode(plugins?.aiChat?.config)
26
+ };
27
+ return useCallback((event) => {
28
+ const { onAnalyticsEvent: callback, ...context } = latest.current;
29
+ try {
30
+ void Promise.resolve(callback?.({ ...context, ...event })).catch(
31
+ () => {
32
+ }
33
+ );
34
+ } catch {
35
+ }
36
+ }, []);
37
+ }
38
+
39
+ export { ChatAnalyticsPageKey, useChatAnalytics };
@@ -307,7 +307,8 @@ function resolveAiChatClientPlugin(config) {
307
307
  const aiChatClientPlugin = (config = {}) => client.defineClientPlugin()({
308
308
  id: "aiChat",
309
309
  providerConfig: {
310
- mode: config.mode ?? "authenticated"
310
+ mode: config.mode ?? "authenticated",
311
+ ...config.pageContent ? { pageContent: true } : {}
311
312
  },
312
313
  resolve: (runtime) => resolveAiChatClientPlugin({ ...config, runtime })
313
314
  });
@@ -305,7 +305,8 @@ function resolveAiChatClientPlugin(config) {
305
305
  const aiChatClientPlugin = (config = {}) => defineClientPlugin()({
306
306
  id: "aiChat",
307
307
  providerConfig: {
308
- mode: config.mode ?? "authenticated"
308
+ mode: config.mode ?? "authenticated",
309
+ ...config.pageContent ? { pageContent: true } : {}
309
310
  },
310
311
  resolve: (runtime) => resolveAiChatClientPlugin({ ...config, runtime })
311
312
  });
@@ -1,5 +1,5 @@
1
- import { c as Conversation, M as Message } from '../../../shared/stack.C4oVW2qK.cjs';
2
- export { n as AI_CHAT_OPERATION_INVENTORY, o as AI_CHAT_RAW_ESCAPE_HATCH_INVENTORY, k as AiChatAccess, j as AiChatApiRouter, h as AiChatBackendConfig, l as AiChatBackendHooks, A as AiChatIdentityPartition, p as AiChatOperationError, g as AiChatQueryKeys, m as ChatApiContext, q as ChatOperationInputSchema, r as ConversationOperationInputSchema, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, U as UpdateConversationOperationInputSchema, i as aiChatBackendPlugin, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../../shared/stack.C4oVW2qK.cjs';
1
+ import { c as Conversation, M as Message } from '../../../shared/stack.Dgt3MCtW.cjs';
2
+ export { o as AI_CHAT_OPERATION_INVENTORY, p as AI_CHAT_RAW_ESCAPE_HATCH_INVENTORY, l as AiChatAccess, j as AiChatApiRouter, h as AiChatBackendConfig, m as AiChatBackendHooks, A as AiChatIdentityPartition, q as AiChatOperationError, k as AiChatPageContentConfig, g as AiChatQueryKeys, n as ChatApiContext, r as ChatOperationInputSchema, s as ConversationOperationInputSchema, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, U as UpdateConversationOperationInputSchema, i as aiChatBackendPlugin, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../../shared/stack.Dgt3MCtW.cjs';
3
3
  import { DBAdapter } from '@btst/db';
4
4
  import '@btst/stack/plugins/client';
5
5
  import '@btst/stack/plugins/api';
@@ -1,5 +1,5 @@
1
- import { c as Conversation, M as Message } from '../../../shared/stack.B5yPgHsp.mjs';
2
- export { n as AI_CHAT_OPERATION_INVENTORY, o as AI_CHAT_RAW_ESCAPE_HATCH_INVENTORY, k as AiChatAccess, j as AiChatApiRouter, h as AiChatBackendConfig, l as AiChatBackendHooks, A as AiChatIdentityPartition, p as AiChatOperationError, g as AiChatQueryKeys, m as ChatApiContext, q as ChatOperationInputSchema, r as ConversationOperationInputSchema, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, U as UpdateConversationOperationInputSchema, i as aiChatBackendPlugin, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../../shared/stack.B5yPgHsp.mjs';
1
+ import { c as Conversation, M as Message } from '../../../shared/stack.B7Mj74BQ.mjs';
2
+ export { o as AI_CHAT_OPERATION_INVENTORY, p as AI_CHAT_RAW_ESCAPE_HATCH_INVENTORY, l as AiChatAccess, j as AiChatApiRouter, h as AiChatBackendConfig, m as AiChatBackendHooks, A as AiChatIdentityPartition, q as AiChatOperationError, k as AiChatPageContentConfig, g as AiChatQueryKeys, n as ChatApiContext, r as ChatOperationInputSchema, s as ConversationOperationInputSchema, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, U as UpdateConversationOperationInputSchema, i as aiChatBackendPlugin, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../../shared/stack.B7Mj74BQ.mjs';
3
3
  import { DBAdapter } from '@btst/db';
4
4
  import '@btst/stack/plugins/client';
5
5
  import '@btst/stack/plugins/api';
@@ -1,5 +1,5 @@
1
- import { c as Conversation, M as Message } from '../../../shared/stack.3Sr6qRtT.js';
2
- export { n as AI_CHAT_OPERATION_INVENTORY, o as AI_CHAT_RAW_ESCAPE_HATCH_INVENTORY, k as AiChatAccess, j as AiChatApiRouter, h as AiChatBackendConfig, l as AiChatBackendHooks, A as AiChatIdentityPartition, p as AiChatOperationError, g as AiChatQueryKeys, m as ChatApiContext, q as ChatOperationInputSchema, r as ConversationOperationInputSchema, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, U as UpdateConversationOperationInputSchema, i as aiChatBackendPlugin, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../../shared/stack.3Sr6qRtT.js';
1
+ import { c as Conversation, M as Message } from '../../../shared/stack.DBH1Bjko.js';
2
+ export { o as AI_CHAT_OPERATION_INVENTORY, p as AI_CHAT_RAW_ESCAPE_HATCH_INVENTORY, l as AiChatAccess, j as AiChatApiRouter, h as AiChatBackendConfig, m as AiChatBackendHooks, A as AiChatIdentityPartition, q as AiChatOperationError, k as AiChatPageContentConfig, g as AiChatQueryKeys, n as ChatApiContext, r as ChatOperationInputSchema, s as ConversationOperationInputSchema, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, U as UpdateConversationOperationInputSchema, i as aiChatBackendPlugin, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../../shared/stack.DBH1Bjko.js';
3
3
  import { DBAdapter } from '@btst/db';
4
4
  import '@btst/stack/plugins/client';
5
5
  import '@btst/stack/plugins/api';
@@ -1,8 +1,9 @@
1
- export { j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, k as ToolCallDisplay } from '../../../../shared/stack.rVF0f509.cjs';
1
+ export { j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, k as ToolCallDisplay } from '../../../../shared/stack.xAiy2VtO.cjs';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import { FallbackProps } from 'react-error-boundary';
4
4
  import 'ai';
5
5
  import 'react';
6
+ import '../context/page-ai-context.cjs';
6
7
 
7
8
  interface ChatPageComponentProps {
8
9
  conversationId?: string;
@@ -1,8 +1,9 @@
1
- export { j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, k as ToolCallDisplay } from '../../../../shared/stack.rVF0f509.mjs';
1
+ export { j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, k as ToolCallDisplay } from '../../../../shared/stack.C5FZr-jJ.mjs';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import { FallbackProps } from 'react-error-boundary';
4
4
  import 'ai';
5
5
  import 'react';
6
+ import '../context/page-ai-context.mjs';
6
7
 
7
8
  interface ChatPageComponentProps {
8
9
  conversationId?: string;
@@ -1,8 +1,9 @@
1
- export { j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, k as ToolCallDisplay } from '../../../../shared/stack.rVF0f509.js';
1
+ export { j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, k as ToolCallDisplay } from '../../../../shared/stack.C-eQN_Jt.js';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import { FallbackProps } from 'react-error-boundary';
4
4
  import 'ai';
5
5
  import 'react';
6
+ import '../context/page-ai-context.js';
6
7
 
7
8
  interface ChatPageComponentProps {
8
9
  conversationId?: string;
@@ -6,6 +6,7 @@ const React = require('react');
6
6
 
7
7
  const PageAIAPIContext = React.createContext(null);
8
8
  const PageAIVersionContext = React.createContext(0);
9
+ const PageAIContextScope = React.createContext(void 0);
9
10
  function PageAIContextProvider({
10
11
  children
11
12
  }) {
@@ -83,10 +84,13 @@ function useRegisterPageAIContext(config) {
83
84
  function usePageAIContext() {
84
85
  React.useContext(PageAIVersionContext);
85
86
  const ctx = React.useContext(PageAIAPIContext);
87
+ const scoped = React.useContext(PageAIContextScope);
88
+ if (scoped !== void 0) return scoped;
86
89
  if (!ctx) return null;
87
90
  return ctx.getActive();
88
91
  }
89
92
 
90
93
  exports.PageAIContextProvider = PageAIContextProvider;
94
+ exports.PageAIContextScope = PageAIContextScope;
91
95
  exports.usePageAIContext = usePageAIContext;
92
96
  exports.useRegisterPageAIContext = useRegisterPageAIContext;
@@ -1,4 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React$1 from 'react';
2
3
 
3
4
  /**
4
5
  * A client-side tool handler — receives the AI's tool call args and returns a result.
@@ -21,7 +22,8 @@ interface PageAIContextConfig {
21
22
  /**
22
23
  * Human-readable description of the current page and its content.
23
24
  * Injected into the AI system prompt so it understands what the user is looking at.
24
- * Capped at 8,000 characters server-side.
25
+ * Limited to 16,000 characters server-side. For longer content, pass a page
26
+ * path and configure the backend pageContent resolver.
25
27
  */
26
28
  pageDescription: string;
27
29
  /**
@@ -39,6 +41,8 @@ interface PageAIContextConfig {
39
41
  */
40
42
  clientTools?: Record<string, PageAIClientTool>;
41
43
  }
44
+ /** Instance-local context used by ChatLayout; undefined inherits page registrations. */
45
+ declare const PageAIContextScope: React$1.Context<PageAIContextConfig | null | undefined>;
42
46
  /**
43
47
  * Provider that enables route-aware AI context across the app.
44
48
  *
@@ -80,5 +84,5 @@ declare function useRegisterPageAIContext(config: PageAIContextConfig | null): v
80
84
  */
81
85
  declare function usePageAIContext(): PageAIContextConfig | null;
82
86
 
83
- export { PageAIContextProvider, usePageAIContext, useRegisterPageAIContext };
87
+ export { PageAIContextProvider, PageAIContextScope, usePageAIContext, useRegisterPageAIContext };
84
88
  export type { PageAIClientTool, PageAIContextConfig };
@@ -1,4 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React$1 from 'react';
2
3
 
3
4
  /**
4
5
  * A client-side tool handler — receives the AI's tool call args and returns a result.
@@ -21,7 +22,8 @@ interface PageAIContextConfig {
21
22
  /**
22
23
  * Human-readable description of the current page and its content.
23
24
  * Injected into the AI system prompt so it understands what the user is looking at.
24
- * Capped at 8,000 characters server-side.
25
+ * Limited to 16,000 characters server-side. For longer content, pass a page
26
+ * path and configure the backend pageContent resolver.
25
27
  */
26
28
  pageDescription: string;
27
29
  /**
@@ -39,6 +41,8 @@ interface PageAIContextConfig {
39
41
  */
40
42
  clientTools?: Record<string, PageAIClientTool>;
41
43
  }
44
+ /** Instance-local context used by ChatLayout; undefined inherits page registrations. */
45
+ declare const PageAIContextScope: React$1.Context<PageAIContextConfig | null | undefined>;
42
46
  /**
43
47
  * Provider that enables route-aware AI context across the app.
44
48
  *
@@ -80,5 +84,5 @@ declare function useRegisterPageAIContext(config: PageAIContextConfig | null): v
80
84
  */
81
85
  declare function usePageAIContext(): PageAIContextConfig | null;
82
86
 
83
- export { PageAIContextProvider, usePageAIContext, useRegisterPageAIContext };
87
+ export { PageAIContextProvider, PageAIContextScope, usePageAIContext, useRegisterPageAIContext };
84
88
  export type { PageAIClientTool, PageAIContextConfig };
@@ -1,4 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React$1 from 'react';
2
3
 
3
4
  /**
4
5
  * A client-side tool handler — receives the AI's tool call args and returns a result.
@@ -21,7 +22,8 @@ interface PageAIContextConfig {
21
22
  /**
22
23
  * Human-readable description of the current page and its content.
23
24
  * Injected into the AI system prompt so it understands what the user is looking at.
24
- * Capped at 8,000 characters server-side.
25
+ * Limited to 16,000 characters server-side. For longer content, pass a page
26
+ * path and configure the backend pageContent resolver.
25
27
  */
26
28
  pageDescription: string;
27
29
  /**
@@ -39,6 +41,8 @@ interface PageAIContextConfig {
39
41
  */
40
42
  clientTools?: Record<string, PageAIClientTool>;
41
43
  }
44
+ /** Instance-local context used by ChatLayout; undefined inherits page registrations. */
45
+ declare const PageAIContextScope: React$1.Context<PageAIContextConfig | null | undefined>;
42
46
  /**
43
47
  * Provider that enables route-aware AI context across the app.
44
48
  *
@@ -80,5 +84,5 @@ declare function useRegisterPageAIContext(config: PageAIContextConfig | null): v
80
84
  */
81
85
  declare function usePageAIContext(): PageAIContextConfig | null;
82
86
 
83
- export { PageAIContextProvider, usePageAIContext, useRegisterPageAIContext };
87
+ export { PageAIContextProvider, PageAIContextScope, usePageAIContext, useRegisterPageAIContext };
84
88
  export type { PageAIClientTool, PageAIContextConfig };
@@ -4,6 +4,7 @@ import { createContext, useRef, useState, useCallback, useMemo, useContext, useI
4
4
 
5
5
  const PageAIAPIContext = createContext(null);
6
6
  const PageAIVersionContext = createContext(0);
7
+ const PageAIContextScope = createContext(void 0);
7
8
  function PageAIContextProvider({
8
9
  children
9
10
  }) {
@@ -81,8 +82,10 @@ function useRegisterPageAIContext(config) {
81
82
  function usePageAIContext() {
82
83
  useContext(PageAIVersionContext);
83
84
  const ctx = useContext(PageAIAPIContext);
85
+ const scoped = useContext(PageAIContextScope);
86
+ if (scoped !== void 0) return scoped;
84
87
  if (!ctx) return null;
85
88
  return ctx.getActive();
86
89
  }
87
90
 
88
- export { PageAIContextProvider, usePageAIContext, useRegisterPageAIContext };
91
+ export { PageAIContextProvider, PageAIContextScope, usePageAIContext, useRegisterPageAIContext };
@@ -1,7 +1,7 @@
1
1
  import { UseMutationResult } from '@tanstack/react-query';
2
2
  import { ResourceFormResult } from '@btst/stack/plugins/client/hooks';
3
- import { A as AiChatIdentityPartition, S as SerializedConversation, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput } from '../../../../shared/stack.C4oVW2qK.cjs';
4
- export { a as SerializedMessage } from '../../../../shared/stack.C4oVW2qK.cjs';
3
+ import { A as AiChatIdentityPartition, S as SerializedConversation, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput } from '../../../../shared/stack.Dgt3MCtW.cjs';
4
+ export { a as SerializedMessage } from '../../../../shared/stack.Dgt3MCtW.cjs';
5
5
  import '@btst/stack/plugins/client';
6
6
  import '@btst/stack/plugins/api';
7
7
  import '@btst/stack/authorization';
@@ -1,7 +1,7 @@
1
1
  import { UseMutationResult } from '@tanstack/react-query';
2
2
  import { ResourceFormResult } from '@btst/stack/plugins/client/hooks';
3
- import { A as AiChatIdentityPartition, S as SerializedConversation, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput } from '../../../../shared/stack.B5yPgHsp.mjs';
4
- export { a as SerializedMessage } from '../../../../shared/stack.B5yPgHsp.mjs';
3
+ import { A as AiChatIdentityPartition, S as SerializedConversation, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput } from '../../../../shared/stack.B7Mj74BQ.mjs';
4
+ export { a as SerializedMessage } from '../../../../shared/stack.B7Mj74BQ.mjs';
5
5
  import '@btst/stack/plugins/client';
6
6
  import '@btst/stack/plugins/api';
7
7
  import '@btst/stack/authorization';
@@ -1,7 +1,7 @@
1
1
  import { UseMutationResult } from '@tanstack/react-query';
2
2
  import { ResourceFormResult } from '@btst/stack/plugins/client/hooks';
3
- import { A as AiChatIdentityPartition, S as SerializedConversation, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput } from '../../../../shared/stack.3Sr6qRtT.js';
4
- export { a as SerializedMessage } from '../../../../shared/stack.3Sr6qRtT.js';
3
+ import { A as AiChatIdentityPartition, S as SerializedConversation, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput } from '../../../../shared/stack.DBH1Bjko.js';
4
+ export { a as SerializedMessage } from '../../../../shared/stack.DBH1Bjko.js';
5
5
  import '@btst/stack/plugins/client';
6
6
  import '@btst/stack/plugins/api';
7
7
  import '@btst/stack/authorization';
@@ -2,9 +2,9 @@ import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
2
2
  import * as _btst_yar from '@btst/yar';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { ComponentType } from 'react';
5
- import { S as SerializedConversation, a as SerializedMessage, A as AiChatIdentityPartition } from '../../../shared/stack.C4oVW2qK.cjs';
6
- import { A as AiChatMode, a as AiChatPluginOverrides } from '../../../shared/stack.rVF0f509.cjs';
7
- export { b as AiChatProviderConfig, c as AllowedFileType, j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, D as DEFAULT_ALLOWED_FILE_TYPES, k as ToolCallDisplay, T as ToolCallProps, e as ToolCallRenderer, d as ToolCallState } from '../../../shared/stack.rVF0f509.cjs';
5
+ import { S as SerializedConversation, a as SerializedMessage, A as AiChatIdentityPartition } from '../../../shared/stack.Dgt3MCtW.cjs';
6
+ import { A as AiChatMode, a as AiChatPluginOverrides } from '../../../shared/stack.xAiy2VtO.cjs';
7
+ export { l as AiChatAnalyticsEvent, b as AiChatProviderConfig, c as AllowedFileType, j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, D as DEFAULT_ALLOWED_FILE_TYPES, k as ToolCallDisplay, T as ToolCallProps, e as ToolCallRenderer, d as ToolCallState } from '../../../shared/stack.xAiy2VtO.cjs';
8
8
  export { UIMessage } from 'ai';
9
9
  import '@btst/stack/plugins/api';
10
10
  import '@btst/stack/authorization';
@@ -13,6 +13,7 @@ import '../permissions.cjs';
13
13
  import 'zod/v4/core';
14
14
  import 'better-call';
15
15
  import '@btst/stack/context';
16
+ import './context/page-ai-context.cjs';
16
17
 
17
18
  /**
18
19
  * Context passed to route hooks
@@ -57,6 +58,8 @@ interface AiChatClientConfig {
57
58
  * @default 'authenticated'
58
59
  */
59
60
  mode?: AiChatMode;
61
+ /** Enable built-in readPage permission checks and compact status alongside backend pageContent. */
62
+ pageContent?: boolean;
60
63
  /** Optional SEO configuration for meta tags */
61
64
  seo?: {
62
65
  /** Site name for Open Graph tags */
@@ -152,6 +155,7 @@ declare const aiChatClientPlugin: (config?: AiChatClientConfig) => _btst_stack_p
152
155
  })[];
153
156
  }, _btst_yar.RouteMeta>;
154
157
  }, "aiChat", {
158
+ pageContent?: true | undefined;
155
159
  mode: AiChatMode;
156
160
  }, never>;
157
161
 
@@ -2,9 +2,9 @@ import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
2
2
  import * as _btst_yar from '@btst/yar';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { ComponentType } from 'react';
5
- import { S as SerializedConversation, a as SerializedMessage, A as AiChatIdentityPartition } from '../../../shared/stack.B5yPgHsp.mjs';
6
- import { A as AiChatMode, a as AiChatPluginOverrides } from '../../../shared/stack.rVF0f509.mjs';
7
- export { b as AiChatProviderConfig, c as AllowedFileType, j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, D as DEFAULT_ALLOWED_FILE_TYPES, k as ToolCallDisplay, T as ToolCallProps, e as ToolCallRenderer, d as ToolCallState } from '../../../shared/stack.rVF0f509.mjs';
5
+ import { S as SerializedConversation, a as SerializedMessage, A as AiChatIdentityPartition } from '../../../shared/stack.B7Mj74BQ.mjs';
6
+ import { A as AiChatMode, a as AiChatPluginOverrides } from '../../../shared/stack.C5FZr-jJ.mjs';
7
+ export { l as AiChatAnalyticsEvent, b as AiChatProviderConfig, c as AllowedFileType, j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, D as DEFAULT_ALLOWED_FILE_TYPES, k as ToolCallDisplay, T as ToolCallProps, e as ToolCallRenderer, d as ToolCallState } from '../../../shared/stack.C5FZr-jJ.mjs';
8
8
  export { UIMessage } from 'ai';
9
9
  import '@btst/stack/plugins/api';
10
10
  import '@btst/stack/authorization';
@@ -13,6 +13,7 @@ import '../permissions.mjs';
13
13
  import 'zod/v4/core';
14
14
  import 'better-call';
15
15
  import '@btst/stack/context';
16
+ import './context/page-ai-context.mjs';
16
17
 
17
18
  /**
18
19
  * Context passed to route hooks
@@ -57,6 +58,8 @@ interface AiChatClientConfig {
57
58
  * @default 'authenticated'
58
59
  */
59
60
  mode?: AiChatMode;
61
+ /** Enable built-in readPage permission checks and compact status alongside backend pageContent. */
62
+ pageContent?: boolean;
60
63
  /** Optional SEO configuration for meta tags */
61
64
  seo?: {
62
65
  /** Site name for Open Graph tags */
@@ -152,6 +155,7 @@ declare const aiChatClientPlugin: (config?: AiChatClientConfig) => _btst_stack_p
152
155
  })[];
153
156
  }, _btst_yar.RouteMeta>;
154
157
  }, "aiChat", {
158
+ pageContent?: true | undefined;
155
159
  mode: AiChatMode;
156
160
  }, never>;
157
161
 
@@ -2,9 +2,9 @@ import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
2
2
  import * as _btst_yar from '@btst/yar';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { ComponentType } from 'react';
5
- import { S as SerializedConversation, a as SerializedMessage, A as AiChatIdentityPartition } from '../../../shared/stack.3Sr6qRtT.js';
6
- import { A as AiChatMode, a as AiChatPluginOverrides } from '../../../shared/stack.rVF0f509.js';
7
- export { b as AiChatProviderConfig, c as AllowedFileType, j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, D as DEFAULT_ALLOWED_FILE_TYPES, k as ToolCallDisplay, T as ToolCallProps, e as ToolCallRenderer, d as ToolCallState } from '../../../shared/stack.rVF0f509.js';
5
+ import { S as SerializedConversation, a as SerializedMessage, A as AiChatIdentityPartition } from '../../../shared/stack.DBH1Bjko.js';
6
+ import { A as AiChatMode, a as AiChatPluginOverrides } from '../../../shared/stack.C-eQN_Jt.js';
7
+ export { l as AiChatAnalyticsEvent, b as AiChatProviderConfig, c as AllowedFileType, j as ChatInput, C as ChatInterface, f as ChatLayout, g as ChatLayoutProps, i as ChatMessage, h as ChatSidebar, D as DEFAULT_ALLOWED_FILE_TYPES, k as ToolCallDisplay, T as ToolCallProps, e as ToolCallRenderer, d as ToolCallState } from '../../../shared/stack.C-eQN_Jt.js';
8
8
  export { UIMessage } from 'ai';
9
9
  import '@btst/stack/plugins/api';
10
10
  import '@btst/stack/authorization';
@@ -13,6 +13,7 @@ import '../permissions.js';
13
13
  import 'zod/v4/core';
14
14
  import 'better-call';
15
15
  import '@btst/stack/context';
16
+ import './context/page-ai-context.js';
16
17
 
17
18
  /**
18
19
  * Context passed to route hooks
@@ -57,6 +58,8 @@ interface AiChatClientConfig {
57
58
  * @default 'authenticated'
58
59
  */
59
60
  mode?: AiChatMode;
61
+ /** Enable built-in readPage permission checks and compact status alongside backend pageContent. */
62
+ pageContent?: boolean;
60
63
  /** Optional SEO configuration for meta tags */
61
64
  seo?: {
62
65
  /** Site name for Open Graph tags */
@@ -152,6 +155,7 @@ declare const aiChatClientPlugin: (config?: AiChatClientConfig) => _btst_stack_p
152
155
  })[];
153
156
  }, _btst_yar.RouteMeta>;
154
157
  }, "aiChat", {
158
+ pageContent?: true | undefined;
155
159
  mode: AiChatMode;
156
160
  }, never>;
157
161
 
@@ -1,5 +1,5 @@
1
1
  import '@btst/stack/plugins/client';
2
- export { A as AiChatIdentityPartition, g as AiChatQueryKeys, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../shared/stack.C4oVW2qK.cjs';
2
+ export { A as AiChatIdentityPartition, g as AiChatQueryKeys, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../shared/stack.Dgt3MCtW.cjs';
3
3
  import '@btst/stack/context';
4
4
  import '@btst/stack/plugins/api';
5
5
  import '@btst/stack/authorization';
@@ -1,5 +1,5 @@
1
1
  import '@btst/stack/plugins/client';
2
- export { A as AiChatIdentityPartition, g as AiChatQueryKeys, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../shared/stack.B5yPgHsp.mjs';
2
+ export { A as AiChatIdentityPartition, g as AiChatQueryKeys, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../shared/stack.B7Mj74BQ.mjs';
3
3
  import '@btst/stack/context';
4
4
  import '@btst/stack/plugins/api';
5
5
  import '@btst/stack/authorization';
@@ -1,5 +1,5 @@
1
1
  import '@btst/stack/plugins/client';
2
- export { A as AiChatIdentityPartition, g as AiChatQueryKeys, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../shared/stack.3Sr6qRtT.js';
2
+ export { A as AiChatIdentityPartition, g as AiChatQueryKeys, C as ConversationWithMessages, b as CreateConversationInput, R as RenameConversationInput, d as aiChatIdentityKey, e as aiChatResources, f as createAiChatQueryKeys } from '../../shared/stack.DBH1Bjko.js';
3
3
  import '@btst/stack/context';
4
4
  import '@btst/stack/plugins/api';
5
5
  import '@btst/stack/authorization';
@@ -1,10 +1,10 @@
1
- export { B as BLOG_QUERY_KEYS, i as BlogApiRouter, k as BlogBackendHooks, f as BlogBackendOptions, l as BlogCreateErrorContext, m as BlogCreateOperationContext, n as BlogCreateResultContext, o as BlogDeleteErrorContext, p as BlogDeleteOperationContext, q as BlogDeleteResultContext, r as BlogListErrorContext, s as BlogListOperationContext, t as BlogListResultContext, u as BlogNextPreviousErrorContext, v as BlogNextPreviousOperationContext, w as BlogNextPreviousResultContext, e as BlogRouteKey, x as BlogUpdateErrorContext, y as BlogUpdateOperationContext, z as BlogUpdateResultContext, C as CreatePostOperationInputSchema, N as NextPreviousPostsQuerySchema, P as PostListParams, j as PostListQuerySchema, c as PostListResult, S as SerializedNextPreviousPostsResult, A as SerializedPostListResult, U as UpdatePostOperationInputSchema, h as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.BOZRaVpu.cjs';
1
+ export { B as BLOG_QUERY_KEYS, i as BlogApiRouter, k as BlogBackendHooks, f as BlogBackendOptions, l as BlogCreateErrorContext, m as BlogCreateOperationContext, n as BlogCreateResultContext, o as BlogDeleteErrorContext, p as BlogDeleteOperationContext, q as BlogDeleteResultContext, r as BlogListErrorContext, s as BlogListOperationContext, t as BlogListResultContext, u as BlogNextPreviousErrorContext, v as BlogNextPreviousOperationContext, w as BlogNextPreviousResultContext, e as BlogRouteKey, x as BlogUpdateErrorContext, y as BlogUpdateOperationContext, z as BlogUpdateResultContext, C as CreatePostOperationInputSchema, N as NextPreviousPostsQuerySchema, P as PostListParams, j as PostListQuerySchema, c as PostListResult, S as SerializedNextPreviousPostsResult, A as SerializedPostListResult, U as UpdatePostOperationInputSchema, h as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.Ce6V7eDj.cjs';
2
2
  import { DBAdapter } from '@btst/db';
3
3
  import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.Dsatjh0B.cjs';
4
4
  export { blogPermissions } from '../permissions.cjs';
5
5
  import '@btst/stack/plugins/client';
6
6
  import 'zod';
7
- import '../../../shared/stack.Csi-4Mgz.cjs';
7
+ import '../../../shared/stack.CKc_Bais.cjs';
8
8
  import '@btst/stack/plugins/api';
9
9
  import '../../../authorization/index.cjs';
10
10
  import 'zod/v4/core';
@@ -1,10 +1,10 @@
1
- export { B as BLOG_QUERY_KEYS, i as BlogApiRouter, k as BlogBackendHooks, f as BlogBackendOptions, l as BlogCreateErrorContext, m as BlogCreateOperationContext, n as BlogCreateResultContext, o as BlogDeleteErrorContext, p as BlogDeleteOperationContext, q as BlogDeleteResultContext, r as BlogListErrorContext, s as BlogListOperationContext, t as BlogListResultContext, u as BlogNextPreviousErrorContext, v as BlogNextPreviousOperationContext, w as BlogNextPreviousResultContext, e as BlogRouteKey, x as BlogUpdateErrorContext, y as BlogUpdateOperationContext, z as BlogUpdateResultContext, C as CreatePostOperationInputSchema, N as NextPreviousPostsQuerySchema, P as PostListParams, j as PostListQuerySchema, c as PostListResult, S as SerializedNextPreviousPostsResult, A as SerializedPostListResult, U as UpdatePostOperationInputSchema, h as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.Dvy7FmaA.mjs';
1
+ export { B as BLOG_QUERY_KEYS, i as BlogApiRouter, k as BlogBackendHooks, f as BlogBackendOptions, l as BlogCreateErrorContext, m as BlogCreateOperationContext, n as BlogCreateResultContext, o as BlogDeleteErrorContext, p as BlogDeleteOperationContext, q as BlogDeleteResultContext, r as BlogListErrorContext, s as BlogListOperationContext, t as BlogListResultContext, u as BlogNextPreviousErrorContext, v as BlogNextPreviousOperationContext, w as BlogNextPreviousResultContext, e as BlogRouteKey, x as BlogUpdateErrorContext, y as BlogUpdateOperationContext, z as BlogUpdateResultContext, C as CreatePostOperationInputSchema, N as NextPreviousPostsQuerySchema, P as PostListParams, j as PostListQuerySchema, c as PostListResult, S as SerializedNextPreviousPostsResult, A as SerializedPostListResult, U as UpdatePostOperationInputSchema, h as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.CTneIW0u.mjs';
2
2
  import { DBAdapter } from '@btst/db';
3
3
  import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.Dsatjh0B.mjs';
4
4
  export { blogPermissions } from '../permissions.mjs';
5
5
  import '@btst/stack/plugins/client';
6
6
  import 'zod';
7
- import '../../../shared/stack.Csi-4Mgz.mjs';
7
+ import '../../../shared/stack.CKc_Bais.mjs';
8
8
  import '@btst/stack/plugins/api';
9
9
  import '../../../authorization/index.mjs';
10
10
  import 'zod/v4/core';
@@ -1,10 +1,10 @@
1
- export { B as BLOG_QUERY_KEYS, i as BlogApiRouter, k as BlogBackendHooks, f as BlogBackendOptions, l as BlogCreateErrorContext, m as BlogCreateOperationContext, n as BlogCreateResultContext, o as BlogDeleteErrorContext, p as BlogDeleteOperationContext, q as BlogDeleteResultContext, r as BlogListErrorContext, s as BlogListOperationContext, t as BlogListResultContext, u as BlogNextPreviousErrorContext, v as BlogNextPreviousOperationContext, w as BlogNextPreviousResultContext, e as BlogRouteKey, x as BlogUpdateErrorContext, y as BlogUpdateOperationContext, z as BlogUpdateResultContext, C as CreatePostOperationInputSchema, N as NextPreviousPostsQuerySchema, P as PostListParams, j as PostListQuerySchema, c as PostListResult, S as SerializedNextPreviousPostsResult, A as SerializedPostListResult, U as UpdatePostOperationInputSchema, h as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.DlBoNqYu.js';
1
+ export { B as BLOG_QUERY_KEYS, i as BlogApiRouter, k as BlogBackendHooks, f as BlogBackendOptions, l as BlogCreateErrorContext, m as BlogCreateOperationContext, n as BlogCreateResultContext, o as BlogDeleteErrorContext, p as BlogDeleteOperationContext, q as BlogDeleteResultContext, r as BlogListErrorContext, s as BlogListOperationContext, t as BlogListResultContext, u as BlogNextPreviousErrorContext, v as BlogNextPreviousOperationContext, w as BlogNextPreviousResultContext, e as BlogRouteKey, x as BlogUpdateErrorContext, y as BlogUpdateOperationContext, z as BlogUpdateResultContext, C as CreatePostOperationInputSchema, N as NextPreviousPostsQuerySchema, P as PostListParams, j as PostListQuerySchema, c as PostListResult, S as SerializedNextPreviousPostsResult, A as SerializedPostListResult, U as UpdatePostOperationInputSchema, h as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.D5b9l24t.js';
2
2
  import { DBAdapter } from '@btst/db';
3
3
  import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.Dsatjh0B.js';
4
4
  export { blogPermissions } from '../permissions.js';
5
5
  import '@btst/stack/plugins/client';
6
6
  import 'zod';
7
- import '../../../shared/stack.Csi-4Mgz.js';
7
+ import '../../../shared/stack.CKc_Bais.js';
8
8
  import '@btst/stack/plugins/api';
9
9
  import '../../../authorization/index.js';
10
10
  import 'zod/v4/core';
@@ -1,9 +1,9 @@
1
- export { P as PostCreateInput, e as PostUpdateInput, p as UseNextPreviousPostsOptions, q as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, s as UseRecentPostsOptions, t as UseRecentPostsResult, l as useCreatePost, n as useDeletePost, r as useNextPreviousPosts, g as usePost, k as usePostForm, o as usePostSearch, u as usePosts, v as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, m as useUpdatePost } from '../../../../shared/stack.BGzgFx3R.cjs';
1
+ export { P as PostCreateInput, e as PostUpdateInput, p as UseNextPreviousPostsOptions, q as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, s as UseRecentPostsOptions, t as UseRecentPostsResult, l as useCreatePost, n as useDeletePost, r as useNextPreviousPosts, g as usePost, k as usePostForm, o as usePostSearch, u as usePosts, v as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, m as useUpdatePost } from '../../../../shared/stack.BTStHVTy.cjs';
2
2
  export { useDebounce } from '@btst/stack/plugins/client/hooks';
3
3
  import '@tanstack/react-query';
4
4
  import 'zod';
5
5
  import '../../../../shared/stack.Dsatjh0B.cjs';
6
- import '../../../../shared/stack.Csi-4Mgz.cjs';
6
+ import '../../../../shared/stack.CKc_Bais.cjs';
7
7
 
8
8
  declare function useThrottle<T>(value: T, wait?: number): T;
9
9
 
@@ -1,9 +1,9 @@
1
- export { P as PostCreateInput, e as PostUpdateInput, p as UseNextPreviousPostsOptions, q as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, s as UseRecentPostsOptions, t as UseRecentPostsResult, l as useCreatePost, n as useDeletePost, r as useNextPreviousPosts, g as usePost, k as usePostForm, o as usePostSearch, u as usePosts, v as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, m as useUpdatePost } from '../../../../shared/stack.CjCSDfWy.mjs';
1
+ export { P as PostCreateInput, e as PostUpdateInput, p as UseNextPreviousPostsOptions, q as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, s as UseRecentPostsOptions, t as UseRecentPostsResult, l as useCreatePost, n as useDeletePost, r as useNextPreviousPosts, g as usePost, k as usePostForm, o as usePostSearch, u as usePosts, v as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, m as useUpdatePost } from '../../../../shared/stack.94kN3pEK.mjs';
2
2
  export { useDebounce } from '@btst/stack/plugins/client/hooks';
3
3
  import '@tanstack/react-query';
4
4
  import 'zod';
5
5
  import '../../../../shared/stack.Dsatjh0B.mjs';
6
- import '../../../../shared/stack.Csi-4Mgz.mjs';
6
+ import '../../../../shared/stack.CKc_Bais.mjs';
7
7
 
8
8
  declare function useThrottle<T>(value: T, wait?: number): T;
9
9
 
@@ -1,9 +1,9 @@
1
- export { P as PostCreateInput, e as PostUpdateInput, p as UseNextPreviousPostsOptions, q as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, s as UseRecentPostsOptions, t as UseRecentPostsResult, l as useCreatePost, n as useDeletePost, r as useNextPreviousPosts, g as usePost, k as usePostForm, o as usePostSearch, u as usePosts, v as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, m as useUpdatePost } from '../../../../shared/stack.Dpg_JjIo.js';
1
+ export { P as PostCreateInput, e as PostUpdateInput, p as UseNextPreviousPostsOptions, q as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, s as UseRecentPostsOptions, t as UseRecentPostsResult, l as useCreatePost, n as useDeletePost, r as useNextPreviousPosts, g as usePost, k as usePostForm, o as usePostSearch, u as usePosts, v as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, m as useUpdatePost } from '../../../../shared/stack.DfrRYOIl.js';
2
2
  export { useDebounce } from '@btst/stack/plugins/client/hooks';
3
3
  import '@tanstack/react-query';
4
4
  import 'zod';
5
5
  import '../../../../shared/stack.Dsatjh0B.js';
6
- import '../../../../shared/stack.Csi-4Mgz.js';
6
+ import '../../../../shared/stack.CKc_Bais.js';
7
7
 
8
8
  declare function useThrottle<T>(value: T, wait?: number): T;
9
9
 
@@ -4,11 +4,11 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { ComponentType, ReactNode } from 'react';
5
5
  import { S as SerializedPost, P as Post } from '../../../shared/stack.Dsatjh0B.cjs';
6
6
  import { N as NewPostPageComponent } from '../../../shared/stack.Bz-YPsuX.cjs';
7
- export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.BGzgFx3R.cjs';
7
+ export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.BTStHVTy.cjs';
8
8
  import '@tanstack/react-query';
9
9
  import 'zod';
10
10
  import '@btst/stack/plugins/client/hooks';
11
- import '../../../shared/stack.Csi-4Mgz.cjs';
11
+ import '../../../shared/stack.CKc_Bais.cjs';
12
12
 
13
13
  declare const BLOG_LOCALIZATION: {
14
14
  BLOG_FORMS_TITLE_LABEL: string;
@@ -4,11 +4,11 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { ComponentType, ReactNode } from 'react';
5
5
  import { S as SerializedPost, P as Post } from '../../../shared/stack.Dsatjh0B.mjs';
6
6
  import { N as NewPostPageComponent } from '../../../shared/stack.Bz-YPsuX.mjs';
7
- export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.CjCSDfWy.mjs';
7
+ export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.94kN3pEK.mjs';
8
8
  import '@tanstack/react-query';
9
9
  import 'zod';
10
10
  import '@btst/stack/plugins/client/hooks';
11
- import '../../../shared/stack.Csi-4Mgz.mjs';
11
+ import '../../../shared/stack.CKc_Bais.mjs';
12
12
 
13
13
  declare const BLOG_LOCALIZATION: {
14
14
  BLOG_FORMS_TITLE_LABEL: string;
@@ -4,11 +4,11 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { ComponentType, ReactNode } from 'react';
5
5
  import { S as SerializedPost, P as Post } from '../../../shared/stack.Dsatjh0B.js';
6
6
  import { N as NewPostPageComponent } from '../../../shared/stack.Bz-YPsuX.js';
7
- export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.Dpg_JjIo.js';
7
+ export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.DfrRYOIl.js';
8
8
  import '@tanstack/react-query';
9
9
  import 'zod';
10
10
  import '@btst/stack/plugins/client/hooks';
11
- import '../../../shared/stack.Csi-4Mgz.js';
11
+ import '../../../shared/stack.CKc_Bais.js';
12
12
 
13
13
  declare const BLOG_LOCALIZATION: {
14
14
  BLOG_FORMS_TITLE_LABEL: string;
@@ -1,7 +1,7 @@
1
1
  import '@btst/stack/plugins/client';
2
- export { D as blogResources, d as createBlogQueryKeys } from '../../shared/stack.BOZRaVpu.cjs';
2
+ export { D as blogResources, d as createBlogQueryKeys } from '../../shared/stack.Ce6V7eDj.cjs';
3
3
  import 'zod';
4
- import '../../shared/stack.Csi-4Mgz.cjs';
4
+ import '../../shared/stack.CKc_Bais.cjs';
5
5
  import '../../shared/stack.Dsatjh0B.cjs';
6
6
  import '@btst/stack/plugins/api';
7
7
  import '../../authorization/index.cjs';
@@ -1,7 +1,7 @@
1
1
  import '@btst/stack/plugins/client';
2
- export { D as blogResources, d as createBlogQueryKeys } from '../../shared/stack.Dvy7FmaA.mjs';
2
+ export { D as blogResources, d as createBlogQueryKeys } from '../../shared/stack.CTneIW0u.mjs';
3
3
  import 'zod';
4
- import '../../shared/stack.Csi-4Mgz.mjs';
4
+ import '../../shared/stack.CKc_Bais.mjs';
5
5
  import '../../shared/stack.Dsatjh0B.mjs';
6
6
  import '@btst/stack/plugins/api';
7
7
  import '../../authorization/index.mjs';