@vibes.diy/use-vibes-base 0.19.8-dev → 0.19.16-dev-cli
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/README.md +27 -27
- package/components/ControlsBar.d.ts +2 -2
- package/components/ControlsBar.js +35 -39
- package/components/ControlsBar.js.map +1 -1
- package/components/ImgGen.d.ts +5 -5
- package/components/ImgGen.js +40 -43
- package/components/ImgGen.js.map +1 -1
- package/components/ImgGenUtils/AsyncImg.d.ts +2 -2
- package/components/ImgGenUtils/AsyncImg.js +5 -5
- package/components/ImgGenUtils/ImgGenDisplay.d.ts +2 -2
- package/components/ImgGenUtils/ImgGenDisplay.js +57 -67
- package/components/ImgGenUtils/ImgGenDisplay.js.map +1 -1
- package/components/ImgGenUtils/ImgGenDisplayPlaceholder.d.ts +2 -2
- package/components/ImgGenUtils/ImgGenDisplayPlaceholder.js +28 -29
- package/components/ImgGenUtils/ImgGenDisplayPlaceholder.js.map +1 -1
- package/components/ImgGenUtils/ImgGenDisplayUtils.d.ts +1 -1
- package/components/ImgGenUtils/ImgGenDisplayUtils.js +13 -18
- package/components/ImgGenUtils/ImgGenDisplayUtils.js.map +1 -1
- package/components/ImgGenUtils/ImgGenError.d.ts +2 -2
- package/components/ImgGenUtils/ImgGenError.js +6 -6
- package/components/ImgGenUtils/ImgGenError.js.map +1 -1
- package/components/ImgGenUtils/ImgGenFileDrop.d.ts +1 -1
- package/components/ImgGenUtils/ImgGenFileDrop.js +7 -7
- package/components/ImgGenUtils/ImgGenFileDrop.js.map +1 -1
- package/components/ImgGenUtils/ImgGenModal.d.ts +3 -3
- package/components/ImgGenUtils/ImgGenModal.js +35 -35
- package/components/ImgGenUtils/ImgGenModeUtils.d.ts +2 -2
- package/components/ImgGenUtils/ImgGenModeUtils.js +17 -17
- package/components/ImgGenUtils/ImgGenModeUtils.js.map +1 -1
- package/components/ImgGenUtils/ImgGenPromptWaiting.d.ts +2 -2
- package/components/ImgGenUtils/ImgGenPromptWaiting.js +13 -13
- package/components/ImgGenUtils/ImgGenPromptWaiting.js.map +1 -1
- package/components/ImgGenUtils/ImgGenUploadWaiting.d.ts +4 -4
- package/components/ImgGenUtils/ImgGenUploadWaiting.js +26 -26
- package/components/ImgGenUtils/ImgGenUploadWaiting.js.map +1 -1
- package/components/ImgGenUtils/index.d.ts +6 -6
- package/components/ImgGenUtils/index.js +6 -6
- package/components/ImgGenUtils/overlays/DeleteConfirmationOverlay.d.ts +2 -2
- package/components/ImgGenUtils/overlays/DeleteConfirmationOverlay.js +18 -18
- package/components/ImgGenUtils/overlays/ImageOverlay.d.ts +2 -2
- package/components/ImgGenUtils/overlays/ImageOverlay.js +6 -6
- package/components/ImgGenUtils/types.d.ts +2 -2
- package/components/ImgGenUtils.d.ts +2 -2
- package/components/ImgGenUtils.js +2 -2
- package/components/ImgGenUtils.js.map +1 -1
- package/components/PromptBar.d.ts +2 -2
- package/components/PromptBar.js +5 -5
- package/constants.js +1 -1
- package/contexts/VibeContext.d.ts +23 -11
- package/contexts/VibeContext.js +113 -48
- package/contexts/VibeContext.js.map +1 -1
- package/hooks/image-gen/image-generator.d.ts +2 -2
- package/hooks/image-gen/image-generator.js +12 -12
- package/hooks/image-gen/image-generator.js.map +1 -1
- package/hooks/image-gen/index.d.ts +4 -4
- package/hooks/image-gen/index.js +3 -3
- package/hooks/image-gen/index.js.map +1 -1
- package/hooks/image-gen/use-image-gen.d.ts +1 -1
- package/hooks/image-gen/use-image-gen.js +41 -48
- package/hooks/image-gen/use-image-gen.js.map +1 -1
- package/hooks/image-gen/utils.d.ts +2 -2
- package/hooks/image-gen/utils.js +14 -14
- package/hooks/image-gen/utils.js.map +1 -1
- package/hooks/useMobile.js +7 -7
- package/hooks/useThemeDetection.js +5 -5
- package/hooks/vibes-gen/IframeVibesComponent.d.ts +1 -1
- package/hooks/vibes-gen/IframeVibesComponent.js +15 -19
- package/hooks/vibes-gen/IframeVibesComponent.js.map +1 -1
- package/hooks/vibes-gen/index.d.ts +2 -2
- package/hooks/vibes-gen/index.js +1 -1
- package/hooks/vibes-gen/use-vibes.d.ts +2 -2
- package/hooks/vibes-gen/use-vibes.js +21 -17
- package/hooks/vibes-gen/use-vibes.js.map +1 -1
- package/index.d.ts +76 -51
- package/index.js +137 -184
- package/index.js.map +1 -1
- package/package.json +18 -21
- package/utils/appSlug.js +16 -16
- package/utils/base64.js +2 -4
- package/utils/base64.js.map +1 -1
- package/utils/databaseName.d.ts +2 -0
- package/utils/databaseName.js +4 -0
- package/utils/databaseName.js.map +1 -0
- package/utils/debug.js +1 -1
- package/utils/style-utils.d.ts +1 -1
- package/utils/style-utils.js +3 -3
- package/utils/styles.d.ts +2 -2
- package/utils/styles.js +170 -170
- package/utils/vibe-control-styles.d.ts +1 -1
- package/utils/vibe-control-styles.js +75 -75
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { useVibes } from
|
|
2
|
-
export type { UseVibesOptions, UseVibesResult, VibeDocument } from
|
|
1
|
+
export { useVibes } from "./use-vibes.js";
|
|
2
|
+
export type { UseVibesOptions, UseVibesResult, VibeDocument } from "@vibes.diy/use-vibes-types";
|
package/hooks/vibes-gen/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { useVibes } from
|
|
1
|
+
export { useVibes } from "./use-vibes.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { UseVibesOptions, UseVibesResult } from
|
|
2
|
-
import { callAI as defaultCallAI } from
|
|
1
|
+
import type { UseVibesOptions, UseVibesResult } from "@vibes.diy/use-vibes-types";
|
|
2
|
+
import { callAI as defaultCallAI } from "call-ai";
|
|
3
3
|
export declare function useVibes(prompt: string, options?: UseVibesOptions, callAI?: typeof defaultCallAI): UseVibesResult;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { makeBaseSystemPrompt, parseContent } from
|
|
2
|
-
import { callAI as defaultCallAI } from
|
|
3
|
-
import React, { useCallback, useEffect, useRef, useState } from
|
|
4
|
-
import IframeVibesComponent from
|
|
1
|
+
import { makeBaseSystemPrompt, parseContent } from "@vibes.diy/prompts";
|
|
2
|
+
import { callAI as defaultCallAI } from "call-ai";
|
|
3
|
+
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
4
|
+
import IframeVibesComponent from "./IframeVibesComponent.js";
|
|
5
5
|
export function useVibes(prompt, options = {}, callAI = defaultCallAI) {
|
|
6
6
|
const [state, setState] = useState({
|
|
7
7
|
App: null,
|
|
@@ -32,11 +32,11 @@ export function useVibes(prompt, options = {}, callAI = defaultCallAI) {
|
|
|
32
32
|
useEffect(() => {
|
|
33
33
|
if (!mountedRef.current)
|
|
34
34
|
return;
|
|
35
|
-
if (!prompt || typeof prompt !==
|
|
35
|
+
if (!prompt || typeof prompt !== "string" || prompt.trim().length === 0) {
|
|
36
36
|
setState((prev) => ({
|
|
37
37
|
...prev,
|
|
38
38
|
loading: false,
|
|
39
|
-
error: new Error(
|
|
39
|
+
error: new Error("Prompt required"),
|
|
40
40
|
App: null,
|
|
41
41
|
code: null,
|
|
42
42
|
progress: 0,
|
|
@@ -73,10 +73,14 @@ export function useVibes(prompt, options = {}, callAI = defaultCallAI) {
|
|
|
73
73
|
simulateProgress(0);
|
|
74
74
|
let result;
|
|
75
75
|
try {
|
|
76
|
-
result = await makeBaseSystemPrompt(options.model ||
|
|
76
|
+
result = await makeBaseSystemPrompt(options.model || "anthropic/claude-sonnet-4.5", {
|
|
77
77
|
userPrompt: prompt,
|
|
78
78
|
history: [],
|
|
79
|
-
|
|
79
|
+
callAi: {
|
|
80
|
+
ModuleAndOptionsSelection: () => {
|
|
81
|
+
throw new Error("ModuleAndOptionsSelection not implemented in Cycle 1");
|
|
82
|
+
},
|
|
83
|
+
},
|
|
80
84
|
dependencies: options.dependencies,
|
|
81
85
|
dependenciesUserOverride: !!options.dependencies,
|
|
82
86
|
});
|
|
@@ -86,9 +90,9 @@ export function useVibes(prompt, options = {}, callAI = defaultCallAI) {
|
|
|
86
90
|
systemPrompt: `You are a React component generator. Generate a complete React component based on the user's prompt.
|
|
87
91
|
Use Fireproof for data persistence. Begin the component with the import statements.
|
|
88
92
|
Return only the JSX code with a default export. Use modern React patterns with hooks if needed.`,
|
|
89
|
-
dependencies: options.dependencies || [
|
|
93
|
+
dependencies: options.dependencies || ["useFireproof"],
|
|
90
94
|
demoData: false,
|
|
91
|
-
model: options.model ||
|
|
95
|
+
model: options.model || "anthropic/claude-sonnet-4.5",
|
|
92
96
|
};
|
|
93
97
|
}
|
|
94
98
|
const systemPrompt = result.systemPrompt;
|
|
@@ -100,8 +104,8 @@ Return only the JSX code with a default export. Use modern React patterns with h
|
|
|
100
104
|
timestamp: Date.now(),
|
|
101
105
|
};
|
|
102
106
|
const messages = [
|
|
103
|
-
{ role:
|
|
104
|
-
{ role:
|
|
107
|
+
{ role: "system", content: systemPrompt },
|
|
108
|
+
{ role: "user", content: prompt },
|
|
105
109
|
];
|
|
106
110
|
const aiResponse = await callAI(messages, {
|
|
107
111
|
model: metadata.model,
|
|
@@ -110,10 +114,10 @@ Return only the JSX code with a default export. Use modern React patterns with h
|
|
|
110
114
|
if (generationIdRef.current !== generationId || !mountedRef.current) {
|
|
111
115
|
return;
|
|
112
116
|
}
|
|
113
|
-
const rawResponse = typeof aiResponse ===
|
|
117
|
+
const rawResponse = typeof aiResponse === "string" ? aiResponse : "";
|
|
114
118
|
const { segments } = parseContent(rawResponse);
|
|
115
|
-
const codeSegment = segments.find((segment) => segment.type ===
|
|
116
|
-
const extractedCode = codeSegment ? codeSegment.content :
|
|
119
|
+
const codeSegment = segments.find((segment) => segment.type === "code");
|
|
120
|
+
const extractedCode = codeSegment ? codeSegment.content : "";
|
|
117
121
|
const codeToUse = extractedCode || rawResponse;
|
|
118
122
|
const sessionId = `vibes-${Date.now()}`;
|
|
119
123
|
const App = () => React.createElement(IframeVibesComponent, {
|
|
@@ -135,7 +139,7 @@ Return only the JSX code with a default export. Use modern React patterns with h
|
|
|
135
139
|
_id: `vibe-${Date.now()}`,
|
|
136
140
|
prompt,
|
|
137
141
|
code: codeToUse,
|
|
138
|
-
title:
|
|
142
|
+
title: "Generated Component",
|
|
139
143
|
...metadata,
|
|
140
144
|
created_at: Date.now(),
|
|
141
145
|
version: 1,
|
|
@@ -149,7 +153,7 @@ Return only the JSX code with a default export. Use modern React patterns with h
|
|
|
149
153
|
setState((prev) => ({
|
|
150
154
|
...prev,
|
|
151
155
|
loading: false,
|
|
152
|
-
error: error instanceof Error ? error : new Error(
|
|
156
|
+
error: error instanceof Error ? error : new Error("Generation failed"),
|
|
153
157
|
progress: 0,
|
|
154
158
|
}));
|
|
155
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-vibes.js","sourceRoot":"","sources":["../../../jsr/hooks/vibes-gen/use-vibes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAM7D,MAAM,UAAU,QAAQ,CACtB,MAAc,EACd,OAAO,GAAoB,EAAE,EAC7B,MAAM,GAAyB,aAAa,EAC5B;IAEhB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB;QAChD,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,KAAK,EAAE,6DAA6D;QAC7E,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAGH,MAAM,eAAe,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,gBAAgB,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAG1E,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC;QAE9D,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAEzD,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;gBACrB,gBAAgB,CAAC,OAAO,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"use-vibes.js","sourceRoot":"","sources":["../../../jsr/hooks/vibes-gen/use-vibes.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,53 +1,78 @@
|
|
|
1
|
-
import type { ToCloudAttachable } from
|
|
2
|
-
import { fireproof, ImgFile, type Database, type UseFpToCloudParam } from
|
|
1
|
+
import type { ToCloudAttachable, TokenStrategie } from "@fireproof/core-types-protocols-cloud";
|
|
2
|
+
import { Attached, fireproof, ImgFile, UseFireproof, UseFPConfig, type Database, type UseFpToCloudParam } from "@fireproof/use-fireproof";
|
|
3
|
+
import { Vibe } from "./contexts/VibeContext.js";
|
|
4
|
+
import { callAI } from "call-ai";
|
|
5
|
+
export * from "./contexts/VibeContext.js";
|
|
3
6
|
export { fireproof, ImgFile };
|
|
4
|
-
export type * as Fireproof from
|
|
5
|
-
export declare
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
7
|
+
export type * as Fireproof from "@fireproof/use-fireproof";
|
|
8
|
+
export declare const vibesEnvSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
9
|
+
FPCLOUD_URL: string;
|
|
10
|
+
DASHBOARD_URL: string;
|
|
11
|
+
VIBES_DIY_STYLES_URL: string;
|
|
12
|
+
}, {}>;
|
|
13
|
+
export type VibesEnv = typeof vibesEnvSchema.infer;
|
|
14
|
+
export declare const vibeEnv: import("arktype/internal/variants/object.ts").ObjectType<Record<string, string>, {}>;
|
|
15
|
+
export type VibeEnv = typeof vibeEnv.infer;
|
|
16
|
+
export declare const vibeBindings: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
17
|
+
appSlug: string;
|
|
18
|
+
userSlug: string;
|
|
19
|
+
fsId: string;
|
|
20
|
+
groupId?: string | undefined;
|
|
21
|
+
}, {}>;
|
|
22
|
+
export type VibeBindings = typeof vibeBindings.infer;
|
|
23
|
+
export declare const vibesDiyMountParams: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
24
|
+
bindings: {
|
|
25
|
+
appSlug: string;
|
|
26
|
+
userSlug: string;
|
|
27
|
+
fsId: string;
|
|
28
|
+
groupId?: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
env: {
|
|
31
|
+
[x: string]: string;
|
|
32
|
+
FPCLOUD_URL: string;
|
|
33
|
+
DASHBOARD_URL: string;
|
|
34
|
+
VIBES_DIY_STYLES_URL: string;
|
|
35
|
+
};
|
|
36
|
+
}, {}>;
|
|
37
|
+
export type VibesDiyMountParams = typeof vibesDiyMountParams.infer;
|
|
38
|
+
interface ToCloudWithClerkOpts extends UseFpToCloudParam {
|
|
39
|
+
readonly env: VibesEnv;
|
|
40
|
+
readonly fpCloudStrategie?: TokenStrategie;
|
|
41
|
+
}
|
|
42
|
+
export declare function injectDefaultVibesCtx(ctx: Vibe): void;
|
|
43
|
+
export declare function toCloud(iopts?: ToCloudWithClerkOpts): ToCloudAttachable;
|
|
44
|
+
export interface AttachState {
|
|
45
|
+
readonly state: "detached" | "attaching" | "attached" | "detaching" | "error";
|
|
46
|
+
readonly error?: Error;
|
|
47
|
+
readonly attach?: Attached;
|
|
48
|
+
}
|
|
49
|
+
export interface UseVibesFireproof extends UseFireproof {
|
|
50
|
+
readonly doAttach: () => void;
|
|
51
|
+
readonly doDetach: () => void;
|
|
52
|
+
readonly attachState: AttachState;
|
|
53
|
+
readonly syncEnabled?: boolean;
|
|
54
|
+
}
|
|
55
|
+
export declare function useFireproof(nameOrDatabase: string | Database, config?: UseFPConfig): UseVibesFireproof;
|
|
31
56
|
export { callAI, callAI as callAi };
|
|
32
|
-
export type * as CallAI from
|
|
33
|
-
export { default as ImgGen } from
|
|
34
|
-
export type { ImgGenProps } from
|
|
35
|
-
export { ControlsBar } from
|
|
36
|
-
export { PromptBar } from
|
|
37
|
-
export { hashInput, useImageGen } from
|
|
38
|
-
export { useThemeDetection } from
|
|
39
|
-
export { useMobile } from
|
|
40
|
-
export { defaultClasses } from
|
|
41
|
-
export type { ImgGenClasses } from
|
|
42
|
-
export { base64ToFile } from
|
|
43
|
-
export {
|
|
44
|
-
export {
|
|
45
|
-
export {
|
|
46
|
-
export {
|
|
47
|
-
export {
|
|
48
|
-
export
|
|
49
|
-
export type {
|
|
50
|
-
export {
|
|
51
|
-
export {
|
|
52
|
-
export {
|
|
53
|
-
export
|
|
57
|
+
export type * as CallAI from "call-ai";
|
|
58
|
+
export { default as ImgGen } from "./components/ImgGen.js";
|
|
59
|
+
export type { ImgGenProps } from "./components/ImgGen.js";
|
|
60
|
+
export { ControlsBar } from "./components/ControlsBar.js";
|
|
61
|
+
export { PromptBar } from "./components/PromptBar.js";
|
|
62
|
+
export { hashInput, useImageGen } from "./hooks/image-gen/index.js";
|
|
63
|
+
export { useThemeDetection } from "./hooks/useThemeDetection.js";
|
|
64
|
+
export { useMobile } from "./hooks/useMobile.js";
|
|
65
|
+
export { defaultClasses } from "./utils/style-utils.js";
|
|
66
|
+
export type { ImgGenClasses } from "@vibes.diy/use-vibes-types";
|
|
67
|
+
export { base64ToFile } from "./utils/base64.js";
|
|
68
|
+
export { constructVibesDatabaseName } from "./utils/databaseName.js";
|
|
69
|
+
export { ImgGenDisplay } from "./components/ImgGenUtils/ImgGenDisplay.js";
|
|
70
|
+
export { ImgGenDisplayPlaceholder } from "./components/ImgGenUtils/ImgGenDisplayPlaceholder.js";
|
|
71
|
+
export { ImgGenModal, type ImgGenModalProps } from "./components/ImgGenUtils/ImgGenModal.js";
|
|
72
|
+
export { ImageOverlay } from "./components/ImgGenUtils/overlays/ImageOverlay.js";
|
|
73
|
+
export { addNewVersion, MODULE_STATE } from "./hooks/image-gen/utils.js";
|
|
74
|
+
export type { ImageDocument, PartialImageDocument, UseImageGenOptions, UseImageGenResult } from "@vibes.diy/use-vibes-types";
|
|
75
|
+
export type { UseVibesOptions, UseVibesResult, VibeDocument } from "@vibes.diy/use-vibes-types";
|
|
76
|
+
export { useVibes } from "./hooks/vibes-gen/index.js";
|
|
77
|
+
export { getAppSlug, getInstanceId, getFullAppIdentifier, isDevelopmentEnvironment, isProductionEnvironment, generateRandomInstanceId, generateFreshDataUrl, generateRemixUrl, generateInstallId, } from "./utils/appSlug.js";
|
|
78
|
+
export { VibeContextProvider, useVibeContext, VibeMetadataValidationError } from "./contexts/VibeContext.js";
|
package/index.js
CHANGED
|
@@ -1,205 +1,158 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
let instanceCounter = 0;
|
|
10
|
-
function updateBodyClass() {
|
|
11
|
-
if (typeof window === 'undefined' || !document?.body)
|
|
12
|
-
return;
|
|
13
|
-
const hasAnySyncEnabled = Array.from(syncEnabledInstances.values()).some((instanceSet) => instanceSet.size > 0);
|
|
14
|
-
if (hasAnySyncEnabled) {
|
|
15
|
-
document.body.classList.add(VIBES_SYNC_ENABLED_CLASS);
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
document.body.classList.remove(VIBES_SYNC_ENABLED_CLASS);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
const sthis = Lazy(() => ensureSuperThis());
|
|
1
|
+
import { useCallback, useEffect, useState } from "react";
|
|
2
|
+
import { fireproof, ImgFile, isDatabase, toCloud as originalToCloud, useFireproof as originalUseFireproof, } from "@fireproof/use-fireproof";
|
|
3
|
+
import { useVibeContext } from "./contexts/VibeContext.js";
|
|
4
|
+
import { constructVibesDatabaseName } from "./utils/databaseName.js";
|
|
5
|
+
import { callAI } from "call-ai";
|
|
6
|
+
import { ResolveOnce } from "@adviser/cement";
|
|
7
|
+
import { type } from "arktype";
|
|
8
|
+
export * from "./contexts/VibeContext.js";
|
|
22
9
|
export { fireproof, ImgFile };
|
|
23
|
-
export
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
10
|
+
export const vibesEnvSchema = type({
|
|
11
|
+
FPCLOUD_URL: "string",
|
|
12
|
+
DASHBOARD_URL: "string",
|
|
13
|
+
VIBES_DIY_STYLES_URL: "string",
|
|
14
|
+
});
|
|
15
|
+
export const vibeEnv = type("Record<string, string>");
|
|
16
|
+
const slugPattern = /^(?!.*\/|.*--|.*\.\.)[a-zA-Z0-9][a-zA-Z0-9.-]*[a-zA-Z0-9]$/;
|
|
17
|
+
export const vibeBindings = type({
|
|
18
|
+
appSlug: slugPattern,
|
|
19
|
+
userSlug: slugPattern,
|
|
20
|
+
fsId: slugPattern,
|
|
21
|
+
"groupId?": slugPattern,
|
|
22
|
+
});
|
|
23
|
+
export const vibesDiyMountParams = type({
|
|
24
|
+
bindings: vibeBindings,
|
|
25
|
+
env: vibeEnv.and(vibesEnvSchema),
|
|
26
|
+
});
|
|
27
|
+
let injectedVibesCtx = undefined;
|
|
28
|
+
function defVibesCtx() {
|
|
29
|
+
if (!injectedVibesCtx) {
|
|
30
|
+
throw new Error("VibesCtx not injected. Please call injectDefaultVibes");
|
|
37
31
|
}
|
|
32
|
+
return injectedVibesCtx;
|
|
33
|
+
}
|
|
34
|
+
export function injectDefaultVibesCtx(ctx) {
|
|
35
|
+
injectedVibesCtx = ctx;
|
|
38
36
|
}
|
|
39
|
-
export function toCloud(
|
|
37
|
+
export function toCloud(iopts) {
|
|
38
|
+
const defCtx = defVibesCtx();
|
|
39
|
+
const opts = {
|
|
40
|
+
...defCtx,
|
|
41
|
+
...iopts,
|
|
42
|
+
};
|
|
40
43
|
const attachable = originalToCloud({
|
|
41
|
-
|
|
42
|
-
dashboardURI:
|
|
43
|
-
|
|
44
|
-
urls: { base: 'fpcloud://cloud.fireproof.direct' },
|
|
44
|
+
strategy: opts.strategy,
|
|
45
|
+
dashboardURI: opts.env.DASHBOARD_URL,
|
|
46
|
+
urls: { base: opts.env.FPCLOUD_URL },
|
|
45
47
|
});
|
|
46
48
|
return attachable;
|
|
47
49
|
}
|
|
48
|
-
function
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
export function useFireproof(nameOrDatabase, config) {
|
|
51
|
+
const vibeCtx = useVibeContext();
|
|
52
|
+
let dbName;
|
|
53
|
+
if (isDatabase(nameOrDatabase)) {
|
|
54
|
+
dbName = nameOrDatabase.ledger.ctx.get("UseVibes.AppId") || nameOrDatabase.name;
|
|
51
55
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return baseName;
|
|
56
|
+
else {
|
|
57
|
+
dbName = constructVibesDatabaseName(vibeCtx.bindings, nameOrDatabase);
|
|
55
58
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const token = options.token;
|
|
76
|
-
if (!token) {
|
|
77
|
-
throw new Error('Authentication token required for sharing.');
|
|
59
|
+
let fpRet;
|
|
60
|
+
if (isDatabase(nameOrDatabase)) {
|
|
61
|
+
fpRet = originalUseFireproof(nameOrDatabase, config);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
fpRet = originalUseFireproof(dbName, config);
|
|
65
|
+
}
|
|
66
|
+
if (!fpRet.database.ledger.ctx.get("UseVibes.AppId")) {
|
|
67
|
+
fpRet.database.ledger.ctx.set("UseVibes.AppId", dbName);
|
|
68
|
+
}
|
|
69
|
+
if (!fpRet.database.ledger.ctx.get("UseVibes.Mutex")) {
|
|
70
|
+
fpRet.database.ledger.ctx.set("UseVibes.Mutex", new ResolveOnce());
|
|
71
|
+
}
|
|
72
|
+
const mutexAttachState = fpRet.database.ledger.ctx.get("UseVibes.Mutex");
|
|
73
|
+
const [attachState, setAttachState] = useState({ state: "detached" });
|
|
74
|
+
const doAttach = useCallback(( /* in future we will be able to override defVibesCtx */ /* in future we will be able to override defVibesCtx */) => {
|
|
75
|
+
if (!vibeCtx.sessionReady()) {
|
|
76
|
+
console.error("Session not ready for attach");
|
|
77
|
+
setAttachState({ state: "error", error: new Error("Session not ready for attach") });
|
|
78
78
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
79
|
+
setAttachState({ state: "attaching" });
|
|
80
|
+
mutexAttachState.once(() => {
|
|
81
|
+
vibeCtx.dashApi.ensureUser({}).then((rUser) => {
|
|
82
|
+
if (rUser.isErr()) {
|
|
83
|
+
console.error("Failed to ensure user for attach:", rUser);
|
|
84
|
+
setAttachState({ state: "error", error: rUser.Err() });
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const user = rUser.unwrap();
|
|
88
|
+
console.log("Ensured user for attach:", user);
|
|
89
|
+
});
|
|
90
|
+
console.log("attach invoked", defVibesCtx());
|
|
91
|
+
fpRet.database
|
|
92
|
+
.attach(toCloud({
|
|
93
|
+
env: defVibesCtx().env,
|
|
94
|
+
strategy: defVibesCtx().fpCloudStrategie(),
|
|
95
|
+
}))
|
|
96
|
+
.then((at) => {
|
|
97
|
+
console.log("Database attached");
|
|
98
|
+
setAttachState({ state: "attached", attach: at });
|
|
99
|
+
})
|
|
100
|
+
.catch((err) => {
|
|
101
|
+
console.error("Database attach failed:", err);
|
|
102
|
+
setAttachState({ state: "error", error: err });
|
|
103
|
+
});
|
|
97
104
|
});
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
const shareData = (await response.json());
|
|
103
|
-
return {
|
|
104
|
-
success: shareData.success,
|
|
105
|
-
email: shareData.email,
|
|
106
|
-
role: shareData.role,
|
|
107
|
-
right: shareData.right,
|
|
108
|
-
message: shareData.message || 'User added to ledger successfully',
|
|
109
|
-
};
|
|
110
|
-
}, [dbName, result.attach]);
|
|
111
|
-
useEffect(() => {
|
|
112
|
-
if (typeof window === 'undefined')
|
|
113
|
-
return;
|
|
114
|
-
const handleShareRequest = async (event) => {
|
|
115
|
-
const customEvent = event;
|
|
116
|
-
const { email, role = 'member', right = 'read', token } = customEvent.detail || {};
|
|
117
|
-
if (!email) {
|
|
118
|
-
const error = new Error('vibes-share-request requires email in event detail');
|
|
119
|
-
document.dispatchEvent(new CustomEvent('vibes-share-error', {
|
|
120
|
-
detail: { error, originalEvent: event },
|
|
121
|
-
bubbles: true,
|
|
122
|
-
}));
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
if (!token) {
|
|
126
|
-
const error = new Error('vibes-share-request requires token in event detail');
|
|
127
|
-
document.dispatchEvent(new CustomEvent('vibes-share-error', {
|
|
128
|
-
detail: { error, originalEvent: event },
|
|
129
|
-
bubbles: true,
|
|
130
|
-
}));
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
try {
|
|
134
|
-
const result = await share({ email, role, right, token });
|
|
135
|
-
document.dispatchEvent(new CustomEvent('vibes-share-success', {
|
|
136
|
-
detail: { ...result, originalEvent: event },
|
|
137
|
-
bubbles: true,
|
|
138
|
-
}));
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
document.dispatchEvent(new CustomEvent('vibes-share-error', {
|
|
142
|
-
detail: { error, originalEvent: event },
|
|
143
|
-
bubbles: true,
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
};
|
|
147
|
-
document.addEventListener('vibes-share-request', handleShareRequest);
|
|
148
|
-
return () => {
|
|
149
|
-
document.removeEventListener('vibes-share-request', handleShareRequest);
|
|
150
|
-
};
|
|
151
|
-
}, [share]);
|
|
152
|
-
useEffect(() => {
|
|
153
|
-
if (typeof window === 'undefined')
|
|
105
|
+
}, []);
|
|
106
|
+
const doDetach = useCallback(() => {
|
|
107
|
+
if (attachState.state !== "attached") {
|
|
154
108
|
return;
|
|
155
|
-
if (!syncEnabledInstances.has(dbName)) {
|
|
156
|
-
syncEnabledInstances.set(dbName, new Set());
|
|
157
109
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
110
|
+
console.log("doDetach invoked");
|
|
111
|
+
setAttachState({ ...attachState, state: "detaching" });
|
|
112
|
+
mutexAttachState.reset(() => {
|
|
113
|
+
attachState.attach
|
|
114
|
+
?.detach()
|
|
115
|
+
.then(() => {
|
|
116
|
+
console.log("Database detached");
|
|
117
|
+
setAttachState({ state: "detached" });
|
|
118
|
+
})
|
|
119
|
+
.catch((err) => {
|
|
120
|
+
console.error("Database detach failed:", err);
|
|
121
|
+
setAttachState({ state: "error", error: err });
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}, []);
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
if (vibeCtx.sessionReady()) {
|
|
127
|
+
doAttach();
|
|
163
128
|
}
|
|
164
129
|
else {
|
|
165
|
-
|
|
130
|
+
doDetach();
|
|
166
131
|
}
|
|
167
|
-
|
|
168
|
-
return () => {
|
|
169
|
-
const currentInstanceSet = syncEnabledInstances.get(dbName);
|
|
170
|
-
if (currentInstanceSet) {
|
|
171
|
-
currentInstanceSet.delete(instanceId);
|
|
172
|
-
if (currentInstanceSet.size === 0) {
|
|
173
|
-
syncEnabledInstances.delete(dbName);
|
|
174
|
-
}
|
|
175
|
-
updateBodyClass();
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
}, [syncEnabled, dbName, instanceId]);
|
|
132
|
+
});
|
|
179
133
|
return {
|
|
180
|
-
...
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
share,
|
|
134
|
+
...fpRet,
|
|
135
|
+
doAttach,
|
|
136
|
+
doDetach,
|
|
137
|
+
attachState,
|
|
185
138
|
};
|
|
186
139
|
}
|
|
187
|
-
import { callAI } from 'call-ai';
|
|
188
140
|
export { callAI, callAI as callAi };
|
|
189
|
-
export { default as ImgGen } from
|
|
190
|
-
export { ControlsBar } from
|
|
191
|
-
export { PromptBar } from
|
|
192
|
-
export { hashInput, useImageGen } from
|
|
193
|
-
export { useThemeDetection } from
|
|
194
|
-
export { useMobile } from
|
|
195
|
-
export { defaultClasses } from
|
|
196
|
-
export { base64ToFile } from
|
|
197
|
-
export {
|
|
198
|
-
export {
|
|
199
|
-
export {
|
|
200
|
-
export {
|
|
201
|
-
export {
|
|
202
|
-
export {
|
|
203
|
-
export {
|
|
204
|
-
export {
|
|
141
|
+
export { default as ImgGen } from "./components/ImgGen.js";
|
|
142
|
+
export { ControlsBar } from "./components/ControlsBar.js";
|
|
143
|
+
export { PromptBar } from "./components/PromptBar.js";
|
|
144
|
+
export { hashInput, useImageGen } from "./hooks/image-gen/index.js";
|
|
145
|
+
export { useThemeDetection } from "./hooks/useThemeDetection.js";
|
|
146
|
+
export { useMobile } from "./hooks/useMobile.js";
|
|
147
|
+
export { defaultClasses } from "./utils/style-utils.js";
|
|
148
|
+
export { base64ToFile } from "./utils/base64.js";
|
|
149
|
+
export { constructVibesDatabaseName } from "./utils/databaseName.js";
|
|
150
|
+
export { ImgGenDisplay } from "./components/ImgGenUtils/ImgGenDisplay.js";
|
|
151
|
+
export { ImgGenDisplayPlaceholder } from "./components/ImgGenUtils/ImgGenDisplayPlaceholder.js";
|
|
152
|
+
export { ImgGenModal } from "./components/ImgGenUtils/ImgGenModal.js";
|
|
153
|
+
export { ImageOverlay } from "./components/ImgGenUtils/overlays/ImageOverlay.js";
|
|
154
|
+
export { addNewVersion, MODULE_STATE } from "./hooks/image-gen/utils.js";
|
|
155
|
+
export { useVibes } from "./hooks/vibes-gen/index.js";
|
|
156
|
+
export { getAppSlug, getInstanceId, getFullAppIdentifier, isDevelopmentEnvironment, isProductionEnvironment, generateRandomInstanceId, generateFreshDataUrl, generateRemixUrl, generateInstallId, } from "./utils/appSlug.js";
|
|
157
|
+
export { VibeContextProvider, useVibeContext, VibeMetadataValidationError } from "./contexts/VibeContext.js";
|
|
205
158
|
//# sourceMappingURL=index.js.map
|