@drawnagency/primitives 0.1.67 → 0.1.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-4YEOTFVU.js +14 -0
- package/dist/{chunk-VU3XR362.js → chunk-6UDYJQL6.js} +1 -1
- package/dist/{chunk-7IMQVDDJ.js → chunk-EWKCEPMW.js} +1 -1
- package/dist/{chunk-XNGG5AGI.js → chunk-KWBM27UR.js} +1 -1
- package/dist/{chunk-TEYTLQVH.js → chunk-QKOIEWZ4.js} +33 -1
- package/dist/{chunk-4VMAZZXT.js → chunk-TYYCKVAW.js} +4 -4
- package/dist/{chunk-KM6HOW4H.js → chunk-VVK6ZRCN.js} +2 -2
- package/dist/{chunk-AFK45HX2.js → chunk-WNPMBFD6.js} +1 -1
- package/dist/{chunk-WJ7RZ6CC.js → chunk-WXVKX6PY.js} +1 -1
- package/dist/components/chat/ChatPanel.d.ts +33 -0
- package/dist/components/chat/ChatPanel.d.ts.map +1 -0
- package/dist/components/chat/ChatWidget.d.ts +14 -0
- package/dist/components/chat/ChatWidget.d.ts.map +1 -0
- package/dist/components/primitives/index.js +5 -5
- package/dist/components/sections/brand-guide.js +5 -5
- package/dist/components/sections/register-schemas.js +7 -7
- package/dist/components/sections/register.js +7 -7
- package/dist/components/shell/ChatbotConfigModal.d.ts +13 -0
- package/dist/components/shell/ChatbotConfigModal.d.ts.map +1 -0
- package/dist/components/shell/EditorShell.d.ts +2 -1
- package/dist/components/shell/EditorShell.d.ts.map +1 -1
- package/dist/index.js +12 -5
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +6 -3
- package/dist/lib/platform-broker.d.ts +7 -0
- package/dist/lib/platform-broker.d.ts.map +1 -1
- package/dist/lib/platform-broker.js +27 -1
- package/dist/media/index.js +3 -3
- package/dist/schemas/index.js +6 -2
- package/dist/schemas/site-config.d.ts +30 -0
- package/dist/schemas/site-config.d.ts.map +1 -1
- package/dist/types/database.d.ts +48 -0
- package/dist/types/database.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/chat/ChatPanel.tsx +158 -0
- package/src/components/chat/ChatWidget.tsx +61 -0
- package/src/components/shell/ChatbotConfigModal.tsx +152 -0
- package/src/components/shell/EditorShell.tsx +43 -1
- package/src/lib/index.ts +1 -0
- package/src/lib/platform-broker.ts +36 -0
- package/src/schemas/site-config.ts +36 -0
- package/src/types/database.ts +48 -0
- package/dist/chunk-ZGFAYZWB.js +0 -8
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// src/lib/pages.ts
|
|
2
|
+
function slugifyPageSlug(input) {
|
|
3
|
+
return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
|
|
4
|
+
}
|
|
5
|
+
function audiencePasses(access, audience) {
|
|
6
|
+
if (access.length === 0) return true;
|
|
7
|
+
if (!audience) return true;
|
|
8
|
+
return access.includes(audience);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
slugifyPageSlug,
|
|
13
|
+
audiencePasses
|
|
14
|
+
};
|
|
@@ -194,6 +194,32 @@ var IndexSchema = RawIndexSchema.transform(normalizeRawIndex).pipe(CanonicalInde
|
|
|
194
194
|
function normalizeSiteIndex(raw) {
|
|
195
195
|
return IndexSchema.parse(raw);
|
|
196
196
|
}
|
|
197
|
+
var ChatbotTaskIdSchema = z3.string().min(1).max(32).regex(
|
|
198
|
+
/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/,
|
|
199
|
+
"Task id must be lowercase letters, numbers, dashes, or underscores"
|
|
200
|
+
);
|
|
201
|
+
var ChatbotTaskSchema = z3.object({
|
|
202
|
+
id: ChatbotTaskIdSchema,
|
|
203
|
+
label: z3.string().min(1).max(60),
|
|
204
|
+
prompt: z3.string().max(4e3),
|
|
205
|
+
// Audience names allowed to see this task; [] = all — same semantics as SectionMeta.access.
|
|
206
|
+
access: z3.array(z3.string()).default([])
|
|
207
|
+
});
|
|
208
|
+
var ChatbotConfigSchema = z3.object({
|
|
209
|
+
enabled: z3.boolean().default(false),
|
|
210
|
+
systemPrompt: z3.string().max(8e3).default(""),
|
|
211
|
+
// Audience names the widget is shown to; [] = all audiences.
|
|
212
|
+
audiences: z3.array(z3.string()).default([]),
|
|
213
|
+
tasks: z3.array(ChatbotTaskSchema).max(20).default([])
|
|
214
|
+
}).superRefine((cfg, ctx) => {
|
|
215
|
+
const seen = /* @__PURE__ */ new Set();
|
|
216
|
+
for (const t of cfg.tasks) {
|
|
217
|
+
if (seen.has(t.id)) {
|
|
218
|
+
ctx.addIssue({ code: z3.ZodIssueCode.custom, message: `Duplicate task id "${t.id}"` });
|
|
219
|
+
}
|
|
220
|
+
seen.add(t.id);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
197
223
|
var SiteConfigSchema = z3.object({
|
|
198
224
|
siteName: z3.string().default("Brand Portal"),
|
|
199
225
|
primaryColor: HexColorSchema.default("#009ca6"),
|
|
@@ -208,7 +234,11 @@ var SiteConfigSchema = z3.object({
|
|
|
208
234
|
// Favicon stored as a data URL (SVG/PNG, small) so it travels with
|
|
209
235
|
// site-config.json — no media manifest or CDN round-trip needed.
|
|
210
236
|
favicon: z3.string().refine((v) => v.startsWith("data:image/"), "Favicon must be an image data URL").nullable().default(null),
|
|
211
|
-
media: MediaConfigSchema.default(MediaConfigSchema.parse({}))
|
|
237
|
+
media: MediaConfigSchema.default(MediaConfigSchema.parse({})),
|
|
238
|
+
// Brand chatbot config (editor-owned; the platform kill switch lives in the
|
|
239
|
+
// sites table, not here). Every field defaults so pre-existing
|
|
240
|
+
// site-config.json files keep parsing.
|
|
241
|
+
chatbot: ChatbotConfigSchema.default({ enabled: false, systemPrompt: "", audiences: [], tasks: [] })
|
|
212
242
|
});
|
|
213
243
|
|
|
214
244
|
export {
|
|
@@ -227,5 +257,7 @@ export {
|
|
|
227
257
|
PageSchema,
|
|
228
258
|
IndexSchema,
|
|
229
259
|
normalizeSiteIndex,
|
|
260
|
+
ChatbotTaskSchema,
|
|
261
|
+
ChatbotConfigSchema,
|
|
230
262
|
SiteConfigSchema
|
|
231
263
|
};
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
pluralize,
|
|
4
4
|
stripHtmlToPlainText,
|
|
5
5
|
truncate
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VVK6ZRCN.js";
|
|
7
7
|
import {
|
|
8
8
|
DeleteButton,
|
|
9
9
|
DragHandle,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
import {
|
|
20
20
|
EditableRichText,
|
|
21
21
|
defineHeadingSection
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-WXVKX6PY.js";
|
|
23
23
|
import {
|
|
24
24
|
EditablePlainText,
|
|
25
25
|
MAX_CONTAINER_COLUMNS,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
colSpanClass,
|
|
28
28
|
containerGridClass,
|
|
29
29
|
spacerHiddenClass
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-KWBM27UR.js";
|
|
31
31
|
import {
|
|
32
32
|
DEFAULT_LINK,
|
|
33
33
|
LinkValueSchema
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
} from "./chunk-TZQPOR5A.js";
|
|
44
44
|
import {
|
|
45
45
|
SingleMediaReferenceSchema
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-QKOIEWZ4.js";
|
|
47
47
|
import {
|
|
48
48
|
defineSection,
|
|
49
49
|
getSection
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
MediaBlock,
|
|
10
10
|
containerGridClass,
|
|
11
11
|
useEditableCollection
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-KWBM27UR.js";
|
|
13
13
|
import {
|
|
14
14
|
AddIcon,
|
|
15
15
|
DeleteIcon,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
import {
|
|
31
31
|
HexColorSchema,
|
|
32
32
|
SingleMediaReferenceSchema
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-QKOIEWZ4.js";
|
|
34
34
|
import {
|
|
35
35
|
defineSection
|
|
36
36
|
} from "./chunk-VKAGMEKE.js";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface ChatMessage {
|
|
2
|
+
role: "user" | "assistant";
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
/** Parse our /api/chat SSE frames out of a fetch body. Exported for tests. */
|
|
6
|
+
export declare function streamChat(body: {
|
|
7
|
+
messages: ChatMessage[];
|
|
8
|
+
sessionId: string;
|
|
9
|
+
taskId?: string;
|
|
10
|
+
draftChatbot?: unknown;
|
|
11
|
+
}, onText: (text: string) => void): Promise<{
|
|
12
|
+
ok: true;
|
|
13
|
+
truncated: boolean;
|
|
14
|
+
} | {
|
|
15
|
+
ok: false;
|
|
16
|
+
error: string;
|
|
17
|
+
retryAfterMs?: number;
|
|
18
|
+
}>;
|
|
19
|
+
export default function ChatPanel({ open, onClose, siteName, tasks, isEditor, draftChatbot, variant }: {
|
|
20
|
+
open: boolean;
|
|
21
|
+
onClose: () => void;
|
|
22
|
+
siteName: string;
|
|
23
|
+
tasks: {
|
|
24
|
+
id: string;
|
|
25
|
+
label: string;
|
|
26
|
+
}[];
|
|
27
|
+
isEditor?: boolean;
|
|
28
|
+
/** Set by the configurator's test panel and the /edit chat FAB. */
|
|
29
|
+
draftChatbot?: unknown;
|
|
30
|
+
/** Anchors the panel above its launcher: viewer corner FAB vs /edit FAB column. */
|
|
31
|
+
variant?: "viewer" | "editor";
|
|
32
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
33
|
+
//# sourceMappingURL=ChatPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatPanel.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAoB5E,8EAA8E;AAC9E,wBAAsB,UAAU,CAC9B,IAAI,EAAE;IAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,EAC7F,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyCjG;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAkB,EAAE,EAAE;IAChH,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC/B,kDA6EA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ChatWidgetProps {
|
|
2
|
+
siteName: string;
|
|
3
|
+
/** Already audience-filtered server-side — never pass unfiltered config tasks. */
|
|
4
|
+
tasks: {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
}[];
|
|
8
|
+
isEditor?: boolean;
|
|
9
|
+
/** Editor-only: chat against the current (unsaved) chatbot config. */
|
|
10
|
+
draftChatbot?: unknown;
|
|
11
|
+
variant?: "viewer" | "editor";
|
|
12
|
+
}
|
|
13
|
+
export default function ChatWidget({ siteName, tasks, isEditor, draftChatbot, variant }: ChatWidgetProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=ChatWidget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatWidget.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC/B;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAkB,EAAE,EAAE,eAAe,2CAoClH"}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
EditableRichText,
|
|
3
3
|
LinkPopover,
|
|
4
4
|
defineHeadingSection
|
|
5
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-WXVKX6PY.js";
|
|
6
6
|
import {
|
|
7
7
|
EditableGrid,
|
|
8
8
|
EditablePlainText,
|
|
@@ -10,20 +10,20 @@ import {
|
|
|
10
10
|
MediaBlock,
|
|
11
11
|
ResolvedMedia,
|
|
12
12
|
useEditableCollection
|
|
13
|
-
} from "../../chunk-
|
|
13
|
+
} from "../../chunk-KWBM27UR.js";
|
|
14
14
|
import "../../chunk-4E66N6UV.js";
|
|
15
15
|
import {
|
|
16
16
|
DeleteIcon,
|
|
17
17
|
DragHandle,
|
|
18
18
|
IconButton
|
|
19
19
|
} from "../../chunk-I5737FJY.js";
|
|
20
|
-
import "../../chunk-
|
|
20
|
+
import "../../chunk-6UDYJQL6.js";
|
|
21
21
|
import "../../chunk-53DKVAB6.js";
|
|
22
|
-
import "../../chunk-
|
|
22
|
+
import "../../chunk-4YEOTFVU.js";
|
|
23
23
|
import {
|
|
24
24
|
cn
|
|
25
25
|
} from "../../chunk-7EOSDFS3.js";
|
|
26
|
-
import "../../chunk-
|
|
26
|
+
import "../../chunk-QKOIEWZ4.js";
|
|
27
27
|
import "../../chunk-VKAGMEKE.js";
|
|
28
28
|
import "../../chunk-JSBRDJBE.js";
|
|
29
29
|
|
|
@@ -2,16 +2,16 @@ import {
|
|
|
2
2
|
ColorItemSchema,
|
|
3
3
|
ColorSpaceSchema,
|
|
4
4
|
brandGuideSectionDefs
|
|
5
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-VVK6ZRCN.js";
|
|
6
6
|
import "../../chunk-5THS4K5D.js";
|
|
7
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-KWBM27UR.js";
|
|
8
8
|
import "../../chunk-I5737FJY.js";
|
|
9
|
-
import "../../chunk-
|
|
9
|
+
import "../../chunk-6UDYJQL6.js";
|
|
10
10
|
import "../../chunk-3DCG4DNU.js";
|
|
11
11
|
import "../../chunk-WDSVHKAH.js";
|
|
12
|
-
import "../../chunk-
|
|
12
|
+
import "../../chunk-4YEOTFVU.js";
|
|
13
13
|
import "../../chunk-7EOSDFS3.js";
|
|
14
|
-
import "../../chunk-
|
|
14
|
+
import "../../chunk-QKOIEWZ4.js";
|
|
15
15
|
import "../../chunk-VKAGMEKE.js";
|
|
16
16
|
import "../../chunk-JSBRDJBE.js";
|
|
17
17
|
export {
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
allSectionDefs
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-TYYCKVAW.js";
|
|
4
|
+
import "../../chunk-VVK6ZRCN.js";
|
|
5
5
|
import "../../chunk-2BHPWO7M.js";
|
|
6
6
|
import "../../chunk-5THS4K5D.js";
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-WXVKX6PY.js";
|
|
8
|
+
import "../../chunk-KWBM27UR.js";
|
|
9
9
|
import "../../chunk-4E66N6UV.js";
|
|
10
10
|
import "../../chunk-I5737FJY.js";
|
|
11
|
-
import "../../chunk-
|
|
11
|
+
import "../../chunk-6UDYJQL6.js";
|
|
12
12
|
import "../../chunk-3DCG4DNU.js";
|
|
13
13
|
import "../../chunk-WDSVHKAH.js";
|
|
14
14
|
import "../../chunk-53DKVAB6.js";
|
|
15
|
-
import "../../chunk-
|
|
15
|
+
import "../../chunk-4YEOTFVU.js";
|
|
16
16
|
import "../../chunk-7EOSDFS3.js";
|
|
17
17
|
import "../../chunk-TZQPOR5A.js";
|
|
18
|
-
import "../../chunk-
|
|
18
|
+
import "../../chunk-QKOIEWZ4.js";
|
|
19
19
|
import {
|
|
20
20
|
registerRichText,
|
|
21
21
|
registerSchema
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
allSectionDefs
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-TYYCKVAW.js";
|
|
4
|
+
import "../../chunk-VVK6ZRCN.js";
|
|
5
5
|
import "../../chunk-2BHPWO7M.js";
|
|
6
6
|
import "../../chunk-5THS4K5D.js";
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-WXVKX6PY.js";
|
|
8
|
+
import "../../chunk-KWBM27UR.js";
|
|
9
9
|
import "../../chunk-4E66N6UV.js";
|
|
10
10
|
import "../../chunk-I5737FJY.js";
|
|
11
|
-
import "../../chunk-
|
|
11
|
+
import "../../chunk-6UDYJQL6.js";
|
|
12
12
|
import "../../chunk-3DCG4DNU.js";
|
|
13
13
|
import "../../chunk-WDSVHKAH.js";
|
|
14
14
|
import "../../chunk-53DKVAB6.js";
|
|
15
|
-
import "../../chunk-
|
|
15
|
+
import "../../chunk-4YEOTFVU.js";
|
|
16
16
|
import "../../chunk-7EOSDFS3.js";
|
|
17
17
|
import "../../chunk-TZQPOR5A.js";
|
|
18
|
-
import "../../chunk-
|
|
18
|
+
import "../../chunk-QKOIEWZ4.js";
|
|
19
19
|
import {
|
|
20
20
|
registerSection
|
|
21
21
|
} from "../../chunk-VKAGMEKE.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SiteConfig } from "../../schemas/site-config";
|
|
2
|
+
import type { Audience } from "../../auth/types";
|
|
3
|
+
interface Props {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
siteConfig: SiteConfig;
|
|
7
|
+
onSiteConfigChange: (config: SiteConfig) => void;
|
|
8
|
+
audiences: Audience[];
|
|
9
|
+
platformEnabled: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function ChatbotConfigModal({ isOpen, onClose, siteConfig, onSiteConfigChange, audiences, platformEnabled }: Props): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=ChatbotConfigModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatbotConfigModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/ChatbotConfigModal.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAA8B,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,KAAK;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAsBD,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,KAAK,2CAkHxH"}
|
|
@@ -17,6 +17,7 @@ interface Props {
|
|
|
17
17
|
email: string;
|
|
18
18
|
role: "owner" | "editor";
|
|
19
19
|
} | null;
|
|
20
|
+
chatbotPlatformEnabled?: boolean;
|
|
20
21
|
}
|
|
21
|
-
export default function EditorShell({ headSha, draftHeadSha, siteId, audiences: initialAudiences, capabilities, currentUser, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export default function EditorShell({ headSha, draftHeadSha, siteId, audiences: initialAudiences, capabilities, currentUser, chatbotPlatformEnabled, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
22
23
|
//# sourceMappingURL=EditorShell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA0EjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAIhB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAIhE,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,EACX,sBAA8B,GAC/B,EAAE,KAAK,2CAi8BP"}
|
package/dist/index.js
CHANGED
|
@@ -27,13 +27,13 @@ import {
|
|
|
27
27
|
resolveMedia,
|
|
28
28
|
sanitizeMediaName,
|
|
29
29
|
setMediaProvider
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-6UDYJQL6.js";
|
|
31
31
|
import {
|
|
32
32
|
AudienceColorSchema,
|
|
33
33
|
AudienceNameSchema,
|
|
34
34
|
MediaGridOptionsSchema,
|
|
35
35
|
slugifyAudienceName
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-EWKCEPMW.js";
|
|
37
37
|
import {
|
|
38
38
|
AudienceSchema,
|
|
39
39
|
RoleSchema,
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
loadStaticSiteContent,
|
|
56
56
|
mergeSiteContent,
|
|
57
57
|
safeRedirect
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-WNPMBFD6.js";
|
|
59
59
|
import {
|
|
60
60
|
isSameOriginRequest,
|
|
61
61
|
requireSessionSecret,
|
|
@@ -78,7 +78,9 @@ import {
|
|
|
78
78
|
sanitizeHtml,
|
|
79
79
|
toSectionId
|
|
80
80
|
} from "./chunk-53DKVAB6.js";
|
|
81
|
-
import
|
|
81
|
+
import {
|
|
82
|
+
audiencePasses
|
|
83
|
+
} from "./chunk-4YEOTFVU.js";
|
|
82
84
|
import {
|
|
83
85
|
cn
|
|
84
86
|
} from "./chunk-7EOSDFS3.js";
|
|
@@ -87,6 +89,8 @@ import {
|
|
|
87
89
|
getSectionSchema
|
|
88
90
|
} from "./chunk-TZQPOR5A.js";
|
|
89
91
|
import {
|
|
92
|
+
ChatbotConfigSchema,
|
|
93
|
+
ChatbotTaskSchema,
|
|
90
94
|
FontNameSchema,
|
|
91
95
|
HexColorSchema,
|
|
92
96
|
ImageManifestSchema,
|
|
@@ -103,7 +107,7 @@ import {
|
|
|
103
107
|
TextLineSchema,
|
|
104
108
|
VariantSchema,
|
|
105
109
|
normalizeSiteIndex
|
|
106
|
-
} from "./chunk-
|
|
110
|
+
} from "./chunk-QKOIEWZ4.js";
|
|
107
111
|
import {
|
|
108
112
|
clearRegistry,
|
|
109
113
|
createRegistry,
|
|
@@ -136,6 +140,8 @@ export {
|
|
|
136
140
|
AudienceColorSchema,
|
|
137
141
|
AudienceNameSchema,
|
|
138
142
|
AudienceSchema,
|
|
143
|
+
ChatbotConfigSchema,
|
|
144
|
+
ChatbotTaskSchema,
|
|
139
145
|
DEFAULT_LINK,
|
|
140
146
|
EXT_TO_MIME,
|
|
141
147
|
FontNameSchema,
|
|
@@ -166,6 +172,7 @@ export {
|
|
|
166
172
|
StorageConflictError,
|
|
167
173
|
TextLineSchema,
|
|
168
174
|
VariantSchema,
|
|
175
|
+
audiencePasses,
|
|
169
176
|
buildGoogleFontsUrl,
|
|
170
177
|
clearRegistry,
|
|
171
178
|
cn,
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { env } from "./env";
|
|
2
2
|
export { cn } from "./cn";
|
|
3
|
+
export { audiencePasses } from "./pages";
|
|
3
4
|
export { generateNavLinks, toSectionId, type NavItem } from "./nav";
|
|
4
5
|
export { deriveContrast } from "./contrast";
|
|
5
6
|
export { sanitizeHtml, ensureSanitizer } from "./sanitize";
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACtG,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,uBAAuB,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACtG,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,uBAAuB,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
loadStaticSiteContent,
|
|
8
8
|
mergeSiteContent,
|
|
9
9
|
safeRedirect
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-WNPMBFD6.js";
|
|
11
11
|
import "../chunk-S2L3BPLS.js";
|
|
12
12
|
import "../chunk-75P6HWPN.js";
|
|
13
13
|
import {
|
|
@@ -26,12 +26,14 @@ import {
|
|
|
26
26
|
sanitizeHtml,
|
|
27
27
|
toSectionId
|
|
28
28
|
} from "../chunk-53DKVAB6.js";
|
|
29
|
-
import
|
|
29
|
+
import {
|
|
30
|
+
audiencePasses
|
|
31
|
+
} from "../chunk-4YEOTFVU.js";
|
|
30
32
|
import {
|
|
31
33
|
cn
|
|
32
34
|
} from "../chunk-7EOSDFS3.js";
|
|
33
35
|
import "../chunk-TZQPOR5A.js";
|
|
34
|
-
import "../chunk-
|
|
36
|
+
import "../chunk-QKOIEWZ4.js";
|
|
35
37
|
import {
|
|
36
38
|
clearRegistry,
|
|
37
39
|
createRegistry,
|
|
@@ -49,6 +51,7 @@ import {
|
|
|
49
51
|
} from "../chunk-WKZ7OENC.js";
|
|
50
52
|
import "../chunk-JSBRDJBE.js";
|
|
51
53
|
export {
|
|
54
|
+
audiencePasses,
|
|
52
55
|
buildGoogleFontsUrl,
|
|
53
56
|
clearRegistry,
|
|
54
57
|
cn,
|
|
@@ -11,4 +11,11 @@ export declare function platformBroker<T = unknown>(path: string, opts?: {
|
|
|
11
11
|
body?: unknown;
|
|
12
12
|
query?: Record<string, string>;
|
|
13
13
|
}): Promise<T>;
|
|
14
|
+
/**
|
|
15
|
+
* Streaming variant of platformBroker for SSE endpoints (the LLM broker).
|
|
16
|
+
* Same auth headers; retries only pre-stream connection failures — once bytes
|
|
17
|
+
* are flowing there is no safe retry. Non-2xx throws with the status ONLY
|
|
18
|
+
* (never the body: stream endpoints may proxy provider errors).
|
|
19
|
+
*/
|
|
20
|
+
export declare function platformBrokerStream(path: string, body: unknown): Promise<ReadableStream<Uint8Array>>;
|
|
14
21
|
//# sourceMappingURL=platform-broker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-broker.d.ts","sourceRoot":"","sources":["../../src/lib/platform-broker.ts"],"names":[],"mappings":"AASA,gFAAgF;AAChF,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GAC7E,OAAO,CAAC,CAAC,CAAC,CAgDZ"}
|
|
1
|
+
{"version":3,"file":"platform-broker.d.ts","sourceRoot":"","sources":["../../src/lib/platform-broker.ts"],"names":[],"mappings":"AASA,gFAAgF;AAChF,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GAC7E,OAAO,CAAC,CAAC,CAAC,CAgDZ;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAyBrC"}
|
|
@@ -54,7 +54,33 @@ async function platformBroker(path, opts = {}) {
|
|
|
54
54
|
}
|
|
55
55
|
throw lastError instanceof Error ? lastError : new Error("Platform broker unreachable");
|
|
56
56
|
}
|
|
57
|
+
async function platformBrokerStream(path, body) {
|
|
58
|
+
const apiUrl = env("PLATFORM_API_URL");
|
|
59
|
+
const apiKey = env("PLATFORM_API_KEY");
|
|
60
|
+
const siteId = env("PORTAL_SITE_ID");
|
|
61
|
+
const url = `${apiUrl}${path}`;
|
|
62
|
+
let lastError;
|
|
63
|
+
for (let attempt = 0; attempt < ATTEMPTS; attempt++) {
|
|
64
|
+
let res;
|
|
65
|
+
try {
|
|
66
|
+
res = await fetch(url, {
|
|
67
|
+
method: "POST",
|
|
68
|
+
headers: { "x-api-key": apiKey, "x-site-id": siteId, "Content-Type": "application/json" },
|
|
69
|
+
body: JSON.stringify(body)
|
|
70
|
+
});
|
|
71
|
+
} catch (err) {
|
|
72
|
+
lastError = err;
|
|
73
|
+
if (attempt === ATTEMPTS - 1) throw err;
|
|
74
|
+
await sleep(RETRY_BASE_MS * 2 ** attempt);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (!res.ok || !res.body) throw new Error(`Platform broker error (${res.status})`);
|
|
78
|
+
return res.body;
|
|
79
|
+
}
|
|
80
|
+
throw lastError instanceof Error ? lastError : new Error("Platform broker unreachable");
|
|
81
|
+
}
|
|
57
82
|
export {
|
|
58
83
|
isPlatformMode,
|
|
59
|
-
platformBroker
|
|
84
|
+
platformBroker,
|
|
85
|
+
platformBrokerStream
|
|
60
86
|
};
|
package/dist/media/index.js
CHANGED
|
@@ -13,14 +13,14 @@ import {
|
|
|
13
13
|
resolveMedia,
|
|
14
14
|
sanitizeMediaName,
|
|
15
15
|
setMediaProvider
|
|
16
|
-
} from "../chunk-
|
|
17
|
-
import "../chunk-
|
|
16
|
+
} from "../chunk-6UDYJQL6.js";
|
|
17
|
+
import "../chunk-4YEOTFVU.js";
|
|
18
18
|
import {
|
|
19
19
|
ImageManifestSchema,
|
|
20
20
|
MediaConfigSchema,
|
|
21
21
|
MediaItemSchema,
|
|
22
22
|
VariantSchema
|
|
23
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-QKOIEWZ4.js";
|
|
24
24
|
import "../chunk-JSBRDJBE.js";
|
|
25
25
|
export {
|
|
26
26
|
EXT_TO_MIME,
|
package/dist/schemas/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
AudienceNameSchema,
|
|
4
4
|
MediaGridOptionsSchema,
|
|
5
5
|
slugifyAudienceName
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-EWKCEPMW.js";
|
|
7
7
|
import {
|
|
8
8
|
AudienceSchema,
|
|
9
9
|
RoleSchema,
|
|
@@ -21,6 +21,8 @@ import {
|
|
|
21
21
|
getSectionSchema
|
|
22
22
|
} from "../chunk-TZQPOR5A.js";
|
|
23
23
|
import {
|
|
24
|
+
ChatbotConfigSchema,
|
|
25
|
+
ChatbotTaskSchema,
|
|
24
26
|
FontNameSchema,
|
|
25
27
|
HexColorSchema,
|
|
26
28
|
ImageManifestSchema,
|
|
@@ -37,7 +39,7 @@ import {
|
|
|
37
39
|
TextLineSchema,
|
|
38
40
|
VariantSchema,
|
|
39
41
|
normalizeSiteIndex
|
|
40
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-QKOIEWZ4.js";
|
|
41
43
|
import "../chunk-VKAGMEKE.js";
|
|
42
44
|
import "../chunk-NSCT3AMV.js";
|
|
43
45
|
import "../chunk-JSBRDJBE.js";
|
|
@@ -45,6 +47,8 @@ export {
|
|
|
45
47
|
AudienceColorSchema,
|
|
46
48
|
AudienceNameSchema,
|
|
47
49
|
AudienceSchema,
|
|
50
|
+
ChatbotConfigSchema,
|
|
51
|
+
ChatbotTaskSchema,
|
|
48
52
|
DEFAULT_LINK,
|
|
49
53
|
FontNameSchema,
|
|
50
54
|
HexColorSchema,
|
|
@@ -150,6 +150,25 @@ export declare const IndexSchema: z.ZodPipe<z.ZodPipe<z.ZodObject<{
|
|
|
150
150
|
export type SiteIndex = z.infer<typeof CanonicalIndexSchema>;
|
|
151
151
|
/** Parse + normalize any raw index (legacy or canonical) to the canonical shape. */
|
|
152
152
|
export declare function normalizeSiteIndex(raw: unknown): SiteIndex;
|
|
153
|
+
export declare const ChatbotTaskSchema: z.ZodObject<{
|
|
154
|
+
id: z.ZodString;
|
|
155
|
+
label: z.ZodString;
|
|
156
|
+
prompt: z.ZodString;
|
|
157
|
+
access: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
158
|
+
}, z.core.$strip>;
|
|
159
|
+
export type ChatbotTask = z.infer<typeof ChatbotTaskSchema>;
|
|
160
|
+
export declare const ChatbotConfigSchema: z.ZodObject<{
|
|
161
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
162
|
+
systemPrompt: z.ZodDefault<z.ZodString>;
|
|
163
|
+
audiences: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
164
|
+
tasks: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
165
|
+
id: z.ZodString;
|
|
166
|
+
label: z.ZodString;
|
|
167
|
+
prompt: z.ZodString;
|
|
168
|
+
access: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
169
|
+
}, z.core.$strip>>>;
|
|
170
|
+
}, z.core.$strip>;
|
|
171
|
+
export type ChatbotConfig = z.infer<typeof ChatbotConfigSchema>;
|
|
153
172
|
export declare const SiteConfigSchema: z.ZodObject<{
|
|
154
173
|
siteName: z.ZodDefault<z.ZodString>;
|
|
155
174
|
primaryColor: z.ZodDefault<z.ZodString>;
|
|
@@ -171,6 +190,17 @@ export declare const SiteConfigSchema: z.ZodObject<{
|
|
|
171
190
|
maxFileSize: z.ZodDefault<z.ZodNumber>;
|
|
172
191
|
quality: z.ZodDefault<z.ZodNumber>;
|
|
173
192
|
}, z.core.$strip>>;
|
|
193
|
+
chatbot: z.ZodDefault<z.ZodObject<{
|
|
194
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
195
|
+
systemPrompt: z.ZodDefault<z.ZodString>;
|
|
196
|
+
audiences: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
197
|
+
tasks: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
198
|
+
id: z.ZodString;
|
|
199
|
+
label: z.ZodString;
|
|
200
|
+
prompt: z.ZodString;
|
|
201
|
+
access: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
202
|
+
}, z.core.$strip>>>;
|
|
203
|
+
}, z.core.$strip>>;
|
|
174
204
|
}, z.core.$strip>;
|
|
175
205
|
export type SiteConfig = z.infer<typeof SiteConfigSchema>;
|
|
176
206
|
export {};
|