@cellarnode/ui 0.186.0 → 0.187.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.
- package/dist/brand/brand-generation-api.d.ts +44 -0
- package/dist/brand/brand-generation-api.d.ts.map +1 -0
- package/dist/brand/brand-generation-api.js +2 -0
- package/dist/brand/brand-generation-api.js.map +1 -0
- package/dist/brand/brand-generation-client.d.ts +28 -0
- package/dist/brand/brand-generation-client.d.ts.map +1 -0
- package/dist/brand/brand-generation-client.js +107 -0
- package/dist/brand/brand-generation-client.js.map +1 -0
- package/dist/brand/brand-generation-copy.d.ts +44 -0
- package/dist/brand/brand-generation-copy.d.ts.map +1 -0
- package/dist/brand/brand-generation-copy.js +70 -0
- package/dist/brand/brand-generation-copy.js.map +1 -0
- package/dist/brand/brand-generation-fixtures.d.ts +32 -0
- package/dist/brand/brand-generation-fixtures.d.ts.map +1 -0
- package/dist/brand/brand-generation-fixtures.js +88 -0
- package/dist/brand/brand-generation-fixtures.js.map +1 -0
- package/dist/brand/brand-generation-flow.d.ts +34 -0
- package/dist/brand/brand-generation-flow.d.ts.map +1 -0
- package/dist/brand/brand-generation-flow.js +34 -0
- package/dist/brand/brand-generation-flow.js.map +1 -0
- package/dist/brand/brand-generation-keys.d.ts +16 -0
- package/dist/brand/brand-generation-keys.d.ts.map +1 -0
- package/dist/brand/brand-generation-keys.js +16 -0
- package/dist/brand/brand-generation-keys.js.map +1 -0
- package/dist/brand/brand-generation-progress.d.ts +27 -0
- package/dist/brand/brand-generation-progress.d.ts.map +1 -0
- package/dist/brand/brand-generation-progress.js +61 -0
- package/dist/brand/brand-generation-progress.js.map +1 -0
- package/dist/brand/brand-generation-recovery-error.d.ts +8 -0
- package/dist/brand/brand-generation-recovery-error.d.ts.map +1 -0
- package/dist/brand/brand-generation-recovery-error.js +7 -0
- package/dist/brand/brand-generation-recovery-error.js.map +1 -0
- package/dist/brand/brand-generation-response.d.ts +86 -0
- package/dist/brand/brand-generation-response.d.ts.map +1 -0
- package/dist/brand/brand-generation-response.js +261 -0
- package/dist/brand/brand-generation-response.js.map +1 -0
- package/dist/brand/brand-generation-sse-parser.d.ts +14 -0
- package/dist/brand/brand-generation-sse-parser.d.ts.map +1 -0
- package/dist/brand/brand-generation-sse-parser.js +92 -0
- package/dist/brand/brand-generation-sse-parser.js.map +1 -0
- package/dist/brand/brand-generation-steps.d.ts +4 -0
- package/dist/brand/brand-generation-steps.d.ts.map +1 -0
- package/dist/brand/brand-generation-steps.js +29 -0
- package/dist/brand/brand-generation-steps.js.map +1 -0
- package/dist/brand/brand-generation-surface.d.ts +50 -0
- package/dist/brand/brand-generation-surface.d.ts.map +1 -0
- package/dist/brand/brand-generation-surface.js +25 -0
- package/dist/brand/brand-generation-surface.js.map +1 -0
- package/dist/brand/brand-generation-url.d.ts +6 -0
- package/dist/brand/brand-generation-url.d.ts.map +1 -0
- package/dist/brand/brand-generation-url.js +4 -0
- package/dist/brand/brand-generation-url.js.map +1 -0
- package/dist/brand/index.d.ts +20 -0
- package/dist/brand/index.d.ts.map +1 -1
- package/dist/brand/index.js +15 -0
- package/dist/brand/index.js.map +1 -1
- package/dist/brand/resume-brand-generation.d.ts +17 -0
- package/dist/brand/resume-brand-generation.d.ts.map +1 -0
- package/dist/brand/resume-brand-generation.js +22 -0
- package/dist/brand/resume-brand-generation.js.map +1 -0
- package/dist/brand/use-brand-generation-discovery.d.ts +14 -0
- package/dist/brand/use-brand-generation-discovery.d.ts.map +1 -0
- package/dist/brand/use-brand-generation-discovery.js +61 -0
- package/dist/brand/use-brand-generation-discovery.js.map +1 -0
- package/dist/brand/use-brand-generation-transport.d.ts +16 -0
- package/dist/brand/use-brand-generation-transport.d.ts.map +1 -0
- package/dist/brand/use-brand-generation-transport.js +182 -0
- package/dist/brand/use-brand-generation-transport.js.map +1 -0
- package/dist/brand/use-brand-generation.d.ts +35 -0
- package/dist/brand/use-brand-generation.d.ts.map +1 -0
- package/dist/brand/use-brand-generation.js +225 -0
- package/dist/brand/use-brand-generation.js.map +1 -0
- package/dist/brand/use-org-scoped-state.d.ts +3 -0
- package/dist/brand/use-org-scoped-state.d.ts.map +1 -0
- package/dist/brand/use-org-scoped-state.js +22 -0
- package/dist/brand/use-org-scoped-state.js.map +1 -0
- package/dist/components/multi-step-loader.d.ts +4 -0
- package/dist/components/multi-step-loader.d.ts.map +1 -1
- package/dist/components/multi-step-loader.js +4 -3
- package/dist/components/multi-step-loader.js.map +1 -1
- package/dist/realtime/job-status/schemas.d.ts +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-steps.js","sourceRoot":"","sources":["../../src/brand/brand-generation-steps.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,yBAAyB,CACvC,MAAsC,EACtC,QAAgD,EAChD,QAAiB,EACjB,SAAyC;IAEzC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAClD,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACpD,CAAC;gBAAC,MAAM,CAAC;oBACP,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,KAAK,eAAe,IAAI,QAAQ,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAC5E,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC;YACxD,IAAI,SAAS,IAAI,KAAK,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,QAAQ;gBAAE,KAAK,GAAG,QAAQ,CAAC;QACjC,CAAC;QACD,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ComponentProps, ReactNode } from "react";
|
|
2
|
+
import { type BrandGenerationCopy } from "./brand-generation-copy.js";
|
|
3
|
+
import type { UseBrandGenerationResult } from "./use-brand-generation.js";
|
|
4
|
+
import { BrandProfileWorkspace } from "./brand-profile-workspace.js";
|
|
5
|
+
import type { BrandPublicVisibility } from "./brand-profile-review.js";
|
|
6
|
+
import type { BrandPersona, BrandProfileInput } from "./types.js";
|
|
7
|
+
type WorkspaceProps = ComponentProps<typeof BrandProfileWorkspace>;
|
|
8
|
+
export interface BrandGenerationSurfaceProps {
|
|
9
|
+
/** The `useBrandGeneration` result. */
|
|
10
|
+
readonly brandGeneration: UseBrandGenerationResult;
|
|
11
|
+
readonly persona?: BrandPersona;
|
|
12
|
+
readonly copy?: Partial<BrandGenerationCopy>;
|
|
13
|
+
readonly resolvedGenerationUrl: string;
|
|
14
|
+
readonly reviewProfileData: BrandProfileInput | null;
|
|
15
|
+
readonly reviewVisibility: BrandPublicVisibility | undefined;
|
|
16
|
+
/** Show the draft-review workspace instead of the progress panel. */
|
|
17
|
+
readonly showReview: boolean;
|
|
18
|
+
readonly onSubmit: WorkspaceProps["onSubmit"];
|
|
19
|
+
readonly onVisibilityChange?: WorkspaceProps["onPublicVisibilityChange"];
|
|
20
|
+
readonly saveTarget?: WorkspaceProps["saveTarget"];
|
|
21
|
+
readonly fieldErrors?: WorkspaceProps["fieldErrors"];
|
|
22
|
+
readonly conflict?: WorkspaceProps["conflict"];
|
|
23
|
+
readonly onReloadConflict?: () => void;
|
|
24
|
+
readonly onKeepMineConflict?: () => void;
|
|
25
|
+
readonly allowedImageOrigins?: readonly string[];
|
|
26
|
+
readonly reviewCopy?: WorkspaceProps["reviewCopy"];
|
|
27
|
+
readonly formCopy?: WorkspaceProps["formCopy"];
|
|
28
|
+
readonly workspaceCopy?: WorkspaceProps["copy"];
|
|
29
|
+
readonly statusLabel?: string;
|
|
30
|
+
readonly isAccepting?: boolean;
|
|
31
|
+
/** Default accept button renders only when this is given. */
|
|
32
|
+
readonly onAccept?: () => void;
|
|
33
|
+
/** Default discard button renders only when this is given. */
|
|
34
|
+
readonly onDismiss?: () => void;
|
|
35
|
+
readonly isDismissing?: boolean;
|
|
36
|
+
/** Replaces the default accept / discard buttons (a consumer's own button kit). */
|
|
37
|
+
readonly actions?: ReactNode;
|
|
38
|
+
readonly changeNotice?: ReactNode;
|
|
39
|
+
readonly workspaceKey?: string;
|
|
40
|
+
readonly imageChoosers?: ReactNode;
|
|
41
|
+
readonly formatDateTime: (iso: string) => string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The generation page body: the draft-review workspace once there is a draft to
|
|
45
|
+
* review, otherwise the progress / recovery panel. The persona flows into the
|
|
46
|
+
* workspace so importer wording and sections match the saved profile page.
|
|
47
|
+
*/
|
|
48
|
+
export declare function BrandGenerationSurface({ brandGeneration, persona, copy, resolvedGenerationUrl, reviewProfileData, reviewVisibility, showReview, onSubmit, onVisibilityChange, saveTarget, fieldErrors, conflict, onReloadConflict, onKeepMineConflict, allowedImageOrigins, reviewCopy, formCopy, workspaceCopy, statusLabel, isAccepting, onAccept, onDismiss, isDismissing, actions, changeNotice, workspaceKey, imageChoosers, formatDateTime, }: BrandGenerationSurfaceProps): import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=brand-generation-surface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-surface.d.ts","sourceRoot":"","sources":["../../src/brand/brand-generation-surface.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from "../components/button.js";
|
|
3
|
+
import { resolveBrandGenerationCopy } from "./brand-generation-copy.js";
|
|
4
|
+
import { BrandGenerationProgress } from "./brand-generation-progress.js";
|
|
5
|
+
import { BrandProfileWorkspace } from "./brand-profile-workspace.js";
|
|
6
|
+
// CJK text wraps at phrase boundaries inside the workspace's textareas.
|
|
7
|
+
const workspaceCjkTextClassName = "[&_textarea]:[word-break:auto-phrase]";
|
|
8
|
+
/**
|
|
9
|
+
* The generation page body: the draft-review workspace once there is a draft to
|
|
10
|
+
* review, otherwise the progress / recovery panel. The persona flows into the
|
|
11
|
+
* workspace so importer wording and sections match the saved profile page.
|
|
12
|
+
*/
|
|
13
|
+
export function BrandGenerationSurface({ brandGeneration, persona = "producer", copy, resolvedGenerationUrl, reviewProfileData, reviewVisibility, showReview, onSubmit, onVisibilityChange, saveTarget, fieldErrors, conflict, onReloadConflict, onKeepMineConflict, allowedImageOrigins, reviewCopy, formCopy, workspaceCopy, statusLabel, isAccepting, onAccept, onDismiss, isDismissing, actions, changeNotice, workspaceKey, imageChoosers, formatDateTime, }) {
|
|
14
|
+
const text = resolveBrandGenerationCopy(persona, copy);
|
|
15
|
+
if (showReview && reviewProfileData) {
|
|
16
|
+
return (_jsxs("div", { className: "flex flex-col gap-6", children: [changeNotice, _jsx(BrandProfileWorkspace, { className: workspaceCjkTextClassName, persona: persona, profile: reviewProfileData, onSubmit: onSubmit, status: "draft", statusLabel: statusLabel, reviewCopy: reviewCopy, formCopy: formCopy, copy: workspaceCopy, saveTarget: saveTarget, fieldErrors: fieldErrors, conflict: conflict, onReloadConflict: onReloadConflict, onKeepMineConflict: onKeepMineConflict, allowedImageOrigins: allowedImageOrigins, publicVisibility: reviewVisibility, onPublicVisibilityChange: onVisibilityChange,
|
|
17
|
+
// CEL-1862 workaround: the contact and key-people editors are not
|
|
18
|
+
// part of the generated-draft review.
|
|
19
|
+
contactEditor: _jsx(_Fragment, {}), keyPeopleEditor: _jsx(_Fragment, {}), actions: actions ?? (_jsxs(_Fragment, { children: [onAccept ? (_jsx(Button, { color: "brand", onClick: onAccept, disabled: isAccepting, children: isAccepting ? text.acceptingAction : text.acceptAction })) : null, onDismiss ? (_jsx(Button, { outline: true, onClick: onDismiss, disabled: isDismissing, children: text.dismissAction })) : null] })) }, workspaceKey), imageChoosers] }));
|
|
20
|
+
}
|
|
21
|
+
return (_jsx(BrandGenerationProgress, { job: brandGeneration.job, eligibility: brandGeneration.eligibility, transportDegraded: brandGeneration.transportDegraded, error: brandGeneration.error, resolvedUrl: resolvedGenerationUrl, persona: persona, copy: copy, formatDateTime: formatDateTime, onStart: (url, context) => void (context === undefined
|
|
22
|
+
? brandGeneration.start(url)
|
|
23
|
+
: brandGeneration.start(url, context)), onCancel: () => void brandGeneration.cancel(), onReset: brandGeneration.reset }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=brand-generation-surface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-surface.js","sourceRoot":"","sources":["../../src/brand/brand-generation-surface.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function resolveGenerationUrl({ enteredUrl, profileSourceUrl, recoveredHomepageUrl, }: {
|
|
2
|
+
readonly enteredUrl: string;
|
|
3
|
+
readonly profileSourceUrl: string | null | undefined;
|
|
4
|
+
readonly recoveredHomepageUrl: string | undefined;
|
|
5
|
+
}): string;
|
|
6
|
+
//# sourceMappingURL=brand-generation-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-url.d.ts","sourceRoot":"","sources":["../../src/brand/brand-generation-url.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,EACnC,UAAU,EACV,gBAAgB,EAChB,oBAAoB,GACrB,EAAE;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;CACnD,GAAG,MAAM,CAET"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-url.js","sourceRoot":"","sources":["../../src/brand/brand-generation-url.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAAC,EACnC,UAAU,EACV,gBAAgB,EAChB,oBAAoB,GAKrB;IACC,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,oBAAoB,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7F,CAAC"}
|
package/dist/brand/index.d.ts
CHANGED
|
@@ -30,6 +30,26 @@ export { DEFAULT_BRAND_GENERATION_RECOVERY_COPY } from "./brand-generation-recov
|
|
|
30
30
|
export type { BrandGenerationRecoveryCopy } from "./brand-generation-recovery-copy.js";
|
|
31
31
|
export { emptyBrandGenerationContext } from "./brand-generation-types.js";
|
|
32
32
|
export type { BrandGenerationContextInput, BrandGenerationEligibility, BrandGenerationIneligibleReason, BrandGenerationMissingAssetAction, BrandGenerationOutcome, } from "./brand-generation-types.js";
|
|
33
|
+
export { useBrandGeneration } from "./use-brand-generation.js";
|
|
34
|
+
export type { UseBrandGenerationOptions, UseBrandGenerationResult } from "./use-brand-generation.js";
|
|
35
|
+
export { brandGenerationKeys, isTerminalStatus } from "./brand-generation-keys.js";
|
|
36
|
+
export type { BrandGenerationErrorKind } from "./brand-generation-keys.js";
|
|
37
|
+
export type { BrandGenerationApi, BrandGenerationStreamConfig } from "./brand-generation-api.js";
|
|
38
|
+
export { BrandGenerationRequestError, createBrandGenerationClient, } from "./brand-generation-client.js";
|
|
39
|
+
export type { BrandGenerationClientOptions } from "./brand-generation-client.js";
|
|
40
|
+
export { BrandGenerationResponseError } from "./brand-generation-response.js";
|
|
41
|
+
export type { BrandGenerationActiveJob, BrandGenerationActiveResult, BrandGenerationContext, BrandGenerationJob, BrandGenerationJobOutcome, BrandGenerationJobProgress, BrandGenerationJobStatus, BrandGenerationPageProgress, BrandGenerationPageStatus, BrandGenerationPhase, BrandGenerationStartResponse, } from "./brand-generation-response.js";
|
|
42
|
+
export type { BrandGenerationUpdate } from "./brand-generation-sse-parser.js";
|
|
43
|
+
export { deriveBrandGenerationFlow } from "./brand-generation-flow.js";
|
|
44
|
+
export { resolveGenerationUrl } from "./brand-generation-url.js";
|
|
45
|
+
export { buildBrandGenerationSteps } from "./brand-generation-steps.js";
|
|
46
|
+
export { BrandGenerationProgress } from "./brand-generation-progress.js";
|
|
47
|
+
export type { BrandGenerationProgressProps } from "./brand-generation-progress.js";
|
|
48
|
+
export { BrandGenerationSurface } from "./brand-generation-surface.js";
|
|
49
|
+
export type { BrandGenerationSurfaceProps } from "./brand-generation-surface.js";
|
|
50
|
+
export { BrandGenerationRecoveryError } from "./brand-generation-recovery-error.js";
|
|
51
|
+
export { defaultBrandGenerationCopy, resolveBrandGenerationCopy } from "./brand-generation-copy.js";
|
|
52
|
+
export type { BrandGenerationCopy } from "./brand-generation-copy.js";
|
|
33
53
|
export { BrandImageChooser } from "./brand-image-chooser.js";
|
|
34
54
|
export type { BrandImageChooserApplyResult, BrandImageChooserCopy, BrandImageChooserProps, BrandImageChooserSource, } from "./brand-image-chooser.js";
|
|
35
55
|
export { isBrandImageOperationFailed, isBrandImageOperationIndeterminate, isBrandImageOperationSettled, } from "./brand-image-chooser-types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/brand/index.ts"],"names":[],"mappings":"AAGA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,YAAY,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAK9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACnF,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kCAAkC,EAClC,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,EAC9B,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,YAAY,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAAE,sCAAsC,EAAE,MAAM,kCAAkC,CAAC;AAC1F,YAAY,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,YAAY,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,+BAA+B,EAC/B,iCAAiC,EACjC,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EACV,4BAA4B,EAC5B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/brand/index.ts"],"names":[],"mappings":"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"}
|
package/dist/brand/index.js
CHANGED
|
@@ -26,6 +26,21 @@ export { BrandGenerationRecovery } from "./brand-generation-recovery.js";
|
|
|
26
26
|
export { BrandGenerationContextForm } from "./brand-generation-context-form.js";
|
|
27
27
|
export { DEFAULT_BRAND_GENERATION_RECOVERY_COPY } from "./brand-generation-recovery-copy.js";
|
|
28
28
|
export { emptyBrandGenerationContext } from "./brand-generation-types.js";
|
|
29
|
+
// CEL-2127: the shared AI brand-generation flow (hook, SSE transport, HTTP
|
|
30
|
+
// client, parsers, progress and surface), lifted from producer so importer runs
|
|
31
|
+
// the identical pipeline. Transport-agnostic: the consumer injects the API and
|
|
32
|
+
// stream auth.
|
|
33
|
+
export { useBrandGeneration } from "./use-brand-generation.js";
|
|
34
|
+
export { brandGenerationKeys, isTerminalStatus } from "./brand-generation-keys.js";
|
|
35
|
+
export { BrandGenerationRequestError, createBrandGenerationClient, } from "./brand-generation-client.js";
|
|
36
|
+
export { BrandGenerationResponseError } from "./brand-generation-response.js";
|
|
37
|
+
export { deriveBrandGenerationFlow } from "./brand-generation-flow.js";
|
|
38
|
+
export { resolveGenerationUrl } from "./brand-generation-url.js";
|
|
39
|
+
export { buildBrandGenerationSteps } from "./brand-generation-steps.js";
|
|
40
|
+
export { BrandGenerationProgress } from "./brand-generation-progress.js";
|
|
41
|
+
export { BrandGenerationSurface } from "./brand-generation-surface.js";
|
|
42
|
+
export { BrandGenerationRecoveryError } from "./brand-generation-recovery-error.js";
|
|
43
|
+
export { defaultBrandGenerationCopy, resolveBrandGenerationCopy } from "./brand-generation-copy.js";
|
|
29
44
|
// CEL-1680 slice 2: the unified image chooser (logo, banner, favicon, OG),
|
|
30
45
|
// its operation-result presentation contract, and the extended candidate
|
|
31
46
|
// resolver (favicon/ogImage targets, dedup by asset id/content hash,
|
package/dist/brand/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/brand/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,qCAAqC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,wEAAwE;AACxE,0EAA0E;AAC1E,gBAAgB;AAChB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAanF,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,sCAAsC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AASvE,2EAA2E;AAC3E,yEAAyE;AACzE,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO1D,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/brand/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,qCAAqC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,wEAAwE;AACxE,0EAA0E;AAC1E,gBAAgB;AAChB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAanF,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,sCAAsC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AASvE,2EAA2E;AAC3E,gFAAgF;AAChF,+EAA+E;AAC/E,eAAe;AACf,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhF,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAe3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAGjG,2EAA2E;AAC3E,yEAAyE;AACzE,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO1D,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BrandGenerationApi } from "./brand-generation-api.js";
|
|
2
|
+
import { type BrandGenerationErrorKind } from "./brand-generation-keys.js";
|
|
3
|
+
import type { BrandGenerationJob } from "./brand-generation-response.js";
|
|
4
|
+
import type { BrandGenerationUpdate } from "./brand-generation-sse-parser.js";
|
|
5
|
+
interface ResumeBrandGenerationOptions {
|
|
6
|
+
readonly api: Pick<BrandGenerationApi, "getStatus">;
|
|
7
|
+
readonly isCurrent: () => boolean;
|
|
8
|
+
readonly setError: (error: BrandGenerationErrorKind | null) => void;
|
|
9
|
+
readonly setIsGenerating: (isGenerating: boolean) => void;
|
|
10
|
+
readonly setTransportDegraded: (transportDegraded: boolean) => void;
|
|
11
|
+
readonly setJob: (job: BrandGenerationJob) => void;
|
|
12
|
+
readonly handleUpdate: (update: BrandGenerationUpdate) => void;
|
|
13
|
+
readonly connect: (jobId: string) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function resumeBrandGeneration(jobId: string, options: ResumeBrandGenerationOptions): Promise<void>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=resume-brand-generation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume-brand-generation.d.ts","sourceRoot":"","sources":["../../src/brand/resume-brand-generation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAoB,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,UAAU,4BAA4B;IACpC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,QAAQ,CAAC,oBAAoB,EAAE,CAAC,iBAAiB,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAef"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { isTerminalStatus } from "./brand-generation-keys.js";
|
|
2
|
+
export async function resumeBrandGeneration(jobId, options) {
|
|
3
|
+
try {
|
|
4
|
+
options.setError(null);
|
|
5
|
+
options.setTransportDegraded(false);
|
|
6
|
+
options.setIsGenerating(true);
|
|
7
|
+
const status = await options.api.getStatus(jobId);
|
|
8
|
+
if (!options.isCurrent())
|
|
9
|
+
return;
|
|
10
|
+
options.setJob(status);
|
|
11
|
+
options.handleUpdate(status);
|
|
12
|
+
if (!isTerminalStatus(status.status))
|
|
13
|
+
options.connect(jobId);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
if (!options.isCurrent())
|
|
17
|
+
return;
|
|
18
|
+
options.setIsGenerating(false);
|
|
19
|
+
options.setError("resume");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=resume-brand-generation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume-brand-generation.js","sourceRoot":"","sources":["../../src/brand/resume-brand-generation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAiC,MAAM,yBAAyB,CAAC;AAe1F,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAa,EACb,OAAqC;IAErC,IAAI,CAAC;QACH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAAE,OAAO;QACjC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAAE,OAAO;QACjC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { QueryKey } from "@tanstack/react-query";
|
|
2
|
+
import type { RefObject } from "react";
|
|
3
|
+
import type { BrandGenerationApi } from "./brand-generation-api.js";
|
|
4
|
+
export declare function useBrandGenerationDiscovery(orgId: string, api: Pick<BrandGenerationApi, "getActive">, profileKeyRef: RefObject<QueryKey>): {
|
|
5
|
+
activeQuery: import("@tanstack/react-query").UseQueryResult<import("./brand-generation-response.js").BrandGenerationActiveResult, Error>;
|
|
6
|
+
activeJob: import("./brand-generation-response.js").BrandGenerationActiveJob | null;
|
|
7
|
+
terminalQuery: import("@tanstack/react-query").UseQueryResult<import("./brand-generation-response.js").BrandGenerationActiveResult, Error>;
|
|
8
|
+
terminalJob: import("./brand-generation-response.js").BrandGenerationActiveJob | null;
|
|
9
|
+
eligibility: import("./brand-generation-types.js").BrandGenerationEligibility | null;
|
|
10
|
+
needsTerminalHandoff: boolean;
|
|
11
|
+
isDiscoveringActive: boolean;
|
|
12
|
+
discoveryError: Error | null;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=use-brand-generation-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-brand-generation-discovery.d.ts","sourceRoot":"","sources":["../../src/brand/use-brand-generation-discovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,EAC1C,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC;;;;;;;;;EA0DnC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
2
|
+
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
3
|
+
import { isTerminalStatus, brandGenerationKeys } from "./brand-generation-keys.js";
|
|
4
|
+
export function useBrandGenerationDiscovery(orgId, api, profileKeyRef) {
|
|
5
|
+
const queryClient = useQueryClient();
|
|
6
|
+
const terminalProfileRefreshesRef = useRef(new Set());
|
|
7
|
+
const activeQuery = useQuery({
|
|
8
|
+
queryKey: brandGenerationKeys.active(orgId),
|
|
9
|
+
queryFn: () => api.getActive(),
|
|
10
|
+
enabled: Boolean(orgId),
|
|
11
|
+
staleTime: 0,
|
|
12
|
+
refetchOnMount: "always",
|
|
13
|
+
});
|
|
14
|
+
// CEL-1682 (contracts §2, carry-over from PR #761) — `activeQuery`/
|
|
15
|
+
// `terminalQuery` now resolve to `{ job, eligibility }` always (never
|
|
16
|
+
// collapsed to `null`), so the discovery-level eligibility snapshot stays
|
|
17
|
+
// reachable even when nothing is running — the motivating case for #688's
|
|
18
|
+
// envelope change (an org sitting in cooldown with no active job).
|
|
19
|
+
const activeJob = activeQuery.data?.job ?? null;
|
|
20
|
+
const terminalQuery = useQuery({
|
|
21
|
+
queryKey: brandGenerationKeys.latestTerminal(orgId),
|
|
22
|
+
queryFn: () => api.getActive(true),
|
|
23
|
+
enabled: Boolean(orgId) && activeQuery.isSuccess && activeJob === null,
|
|
24
|
+
staleTime: 0,
|
|
25
|
+
refetchOnMount: "always",
|
|
26
|
+
});
|
|
27
|
+
const terminalJob = terminalQuery.data?.job ?? null;
|
|
28
|
+
const needsTerminalHandoff = activeQuery.isSuccess && activeJob === null;
|
|
29
|
+
const isDiscoveringActive = (Boolean(orgId) && activeQuery.isPending) ||
|
|
30
|
+
(needsTerminalHandoff && (terminalQuery.isPending || terminalQuery.isFetching)) ||
|
|
31
|
+
(activeQuery.isFetching && activeQuery.data === undefined);
|
|
32
|
+
const discoveryError = activeQuery.isError
|
|
33
|
+
? activeQuery.error
|
|
34
|
+
: needsTerminalHandoff && terminalQuery.isError
|
|
35
|
+
? terminalQuery.error
|
|
36
|
+
: null;
|
|
37
|
+
// Prefer the active read's eligibility (always fetched, most current); the
|
|
38
|
+
// terminal read's is the same org-level snapshot and only serves as a
|
|
39
|
+
// fallback while `activeQuery` is still settling.
|
|
40
|
+
const eligibility = activeQuery.data?.eligibility ?? terminalQuery.data?.eligibility ?? null;
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (!orgId || !terminalJob || !isTerminalStatus(terminalJob.status))
|
|
43
|
+
return;
|
|
44
|
+
const refreshKey = `${orgId}:${terminalJob.id}`;
|
|
45
|
+
if (terminalProfileRefreshesRef.current.has(refreshKey))
|
|
46
|
+
return;
|
|
47
|
+
terminalProfileRefreshesRef.current.add(refreshKey);
|
|
48
|
+
void queryClient.invalidateQueries({ queryKey: profileKeyRef.current });
|
|
49
|
+
}, [orgId, profileKeyRef, queryClient, terminalJob]);
|
|
50
|
+
return {
|
|
51
|
+
activeQuery,
|
|
52
|
+
activeJob,
|
|
53
|
+
terminalQuery,
|
|
54
|
+
terminalJob,
|
|
55
|
+
eligibility,
|
|
56
|
+
needsTerminalHandoff,
|
|
57
|
+
isDiscoveringActive,
|
|
58
|
+
discoveryError,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=use-brand-generation-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-brand-generation-discovery.js","sourceRoot":"","sources":["../../src/brand/use-brand-generation-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BrandGenerationApi, BrandGenerationStreamConfig } from "./brand-generation-api.js";
|
|
2
|
+
import type { BrandGenerationJobStatus as JobStatus } from "./brand-generation-response.js";
|
|
3
|
+
import { type BrandGenerationUpdate } from "./brand-generation-sse-parser.js";
|
|
4
|
+
export type { BrandGenerationUpdate } from "./brand-generation-sse-parser.js";
|
|
5
|
+
interface TransportOptions {
|
|
6
|
+
api: Pick<BrandGenerationApi, "getStatus">;
|
|
7
|
+
stream: BrandGenerationStreamConfig;
|
|
8
|
+
onUpdate: (data: BrandGenerationUpdate) => void;
|
|
9
|
+
onDegraded: () => void;
|
|
10
|
+
isTerminal: (status: JobStatus | undefined) => boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function useBrandGenerationTransport({ api, stream, onUpdate, onDegraded, isTerminal, }: TransportOptions): {
|
|
13
|
+
cleanup: () => void;
|
|
14
|
+
connect: (jobId: string) => Promise<void>;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=use-brand-generation-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-brand-generation-transport.d.ts","sourceRoot":"","sources":["../../src/brand/use-brand-generation-transport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,KAAK,EAAE,wBAAwB,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAS3E,UAAU,gBAAgB;IACxB,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IAC3C,MAAM,EAAE,2BAA2B,CAAC;IACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,KAAK,OAAO,CAAC;CACxD;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,GAAG,EACH,MAAM,EACN,QAAQ,EACR,UAAU,EACV,UAAU,GACX,EAAE,gBAAgB;;qBA8DD,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;EAwHvC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { useCallback, useRef } from "react";
|
|
2
|
+
import { dataPayload, parseSseUpdate, } from "./brand-generation-sse-parser.js";
|
|
3
|
+
const DEFAULT_SSE_IDLE_TIMEOUT_MS = 15_000;
|
|
4
|
+
const DEFAULT_POLL_INTERVAL_MS = 2000;
|
|
5
|
+
function errorType(error) {
|
|
6
|
+
return error instanceof Error ? error.name : "UnknownError";
|
|
7
|
+
}
|
|
8
|
+
export function useBrandGenerationTransport({ api, stream, onUpdate, onDegraded, isTerminal, }) {
|
|
9
|
+
// `api`/`stream` are read through refs so `connect`/`cleanup` keep a stable
|
|
10
|
+
// identity even when a consumer passes fresh object literals each render.
|
|
11
|
+
const apiRef = useRef(api);
|
|
12
|
+
apiRef.current = api;
|
|
13
|
+
const streamRef = useRef(stream);
|
|
14
|
+
streamRef.current = stream;
|
|
15
|
+
const pollIntervalRef = useRef(null);
|
|
16
|
+
const idleTimeoutRef = useRef(null);
|
|
17
|
+
const abortControllerRef = useRef(null);
|
|
18
|
+
const connectionGenerationRef = useRef(0);
|
|
19
|
+
const cleanup = useCallback(() => {
|
|
20
|
+
connectionGenerationRef.current += 1;
|
|
21
|
+
abortControllerRef.current?.abort();
|
|
22
|
+
abortControllerRef.current = null;
|
|
23
|
+
if (idleTimeoutRef.current !== null) {
|
|
24
|
+
window.clearTimeout(idleTimeoutRef.current.timerId);
|
|
25
|
+
idleTimeoutRef.current = null;
|
|
26
|
+
}
|
|
27
|
+
if (pollIntervalRef.current !== null) {
|
|
28
|
+
window.clearInterval(pollIntervalRef.current);
|
|
29
|
+
pollIntervalRef.current = null;
|
|
30
|
+
}
|
|
31
|
+
}, []);
|
|
32
|
+
const emitUpdate = useCallback((data) => {
|
|
33
|
+
if (isTerminal(data.status))
|
|
34
|
+
cleanup();
|
|
35
|
+
onUpdate(data);
|
|
36
|
+
}, [cleanup, isTerminal, onUpdate]);
|
|
37
|
+
const startPolling = useCallback((jobId) => {
|
|
38
|
+
cleanup();
|
|
39
|
+
const generation = connectionGenerationRef.current;
|
|
40
|
+
onDegraded();
|
|
41
|
+
const poll = async () => {
|
|
42
|
+
try {
|
|
43
|
+
const update = await apiRef.current.getStatus(jobId);
|
|
44
|
+
if (connectionGenerationRef.current === generation)
|
|
45
|
+
emitUpdate(update);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.warn("[brand-generation] status poll failed; retrying", {
|
|
49
|
+
errorType: errorType(error),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
void poll();
|
|
54
|
+
pollIntervalRef.current = window.setInterval(() => void poll(), streamRef.current.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);
|
|
55
|
+
}, [cleanup, emitUpdate, onDegraded]);
|
|
56
|
+
const connect = useCallback(async (jobId) => {
|
|
57
|
+
cleanup();
|
|
58
|
+
const generation = connectionGenerationRef.current;
|
|
59
|
+
const isCurrent = () => connectionGenerationRef.current === generation;
|
|
60
|
+
try {
|
|
61
|
+
const config = streamRef.current;
|
|
62
|
+
const token = config.getAccessToken ? await config.getAccessToken() : undefined;
|
|
63
|
+
if (!isCurrent())
|
|
64
|
+
return;
|
|
65
|
+
// Bearer mode with no usable token (null or empty) degrades to polling,
|
|
66
|
+
// like producer; cookie mode (no `getAccessToken`) streams with
|
|
67
|
+
// credentials instead.
|
|
68
|
+
if (config.getAccessToken && !token) {
|
|
69
|
+
startPolling(jobId);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const controller = new AbortController();
|
|
73
|
+
abortControllerRef.current = controller;
|
|
74
|
+
const clearIdleTimeout = () => {
|
|
75
|
+
const idleTimeout = idleTimeoutRef.current;
|
|
76
|
+
if (idleTimeout?.generation !== generation)
|
|
77
|
+
return;
|
|
78
|
+
window.clearTimeout(idleTimeout.timerId);
|
|
79
|
+
idleTimeoutRef.current = null;
|
|
80
|
+
};
|
|
81
|
+
const armIdleTimeout = () => {
|
|
82
|
+
clearIdleTimeout();
|
|
83
|
+
const timerId = window.setTimeout(() => {
|
|
84
|
+
const idleTimeout = idleTimeoutRef.current;
|
|
85
|
+
if (idleTimeout?.generation !== generation || idleTimeout.timerId !== timerId)
|
|
86
|
+
return;
|
|
87
|
+
idleTimeoutRef.current = null;
|
|
88
|
+
if (!isCurrent())
|
|
89
|
+
return;
|
|
90
|
+
controller.abort();
|
|
91
|
+
startPolling(jobId);
|
|
92
|
+
}, config.idleTimeoutMs ?? DEFAULT_SSE_IDLE_TIMEOUT_MS);
|
|
93
|
+
idleTimeoutRef.current = { generation, timerId };
|
|
94
|
+
};
|
|
95
|
+
armIdleTimeout();
|
|
96
|
+
const doFetch = config.fetch ?? fetch;
|
|
97
|
+
const response = await doFetch(`${config.baseUrl.replace(/\/+$/, "")}/brand-profiles/generate/${encodeURIComponent(jobId)}/stream`, {
|
|
98
|
+
headers: {
|
|
99
|
+
Accept: "text/event-stream",
|
|
100
|
+
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
|
101
|
+
},
|
|
102
|
+
...(token ? {} : { credentials: "include" }),
|
|
103
|
+
signal: controller.signal,
|
|
104
|
+
});
|
|
105
|
+
if (!isCurrent()) {
|
|
106
|
+
controller.abort();
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (!response.ok) {
|
|
110
|
+
startPolling(jobId);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const reader = response.body?.getReader();
|
|
114
|
+
if (!reader) {
|
|
115
|
+
startPolling(jobId);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const decoder = new TextDecoder();
|
|
119
|
+
let buffer = "";
|
|
120
|
+
let terminalSeen = false;
|
|
121
|
+
try {
|
|
122
|
+
while (true) {
|
|
123
|
+
const { done, value } = await reader.read();
|
|
124
|
+
clearIdleTimeout();
|
|
125
|
+
if (!isCurrent())
|
|
126
|
+
return;
|
|
127
|
+
if (done) {
|
|
128
|
+
if (!terminalSeen)
|
|
129
|
+
startPolling(jobId);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
armIdleTimeout();
|
|
133
|
+
buffer += decoder.decode(value, { stream: true });
|
|
134
|
+
let boundary = buffer.search(/\r?\n\r?\n/);
|
|
135
|
+
while (boundary !== -1) {
|
|
136
|
+
const chunk = buffer.slice(0, boundary);
|
|
137
|
+
const separator = buffer.slice(boundary).match(/^\r?\n\r?\n/)?.[0] ?? "\n\n";
|
|
138
|
+
buffer = buffer.slice(boundary + separator.length);
|
|
139
|
+
const payload = dataPayload(chunk);
|
|
140
|
+
if (payload !== null) {
|
|
141
|
+
const data = parseSseUpdate(payload);
|
|
142
|
+
if (data) {
|
|
143
|
+
const terminal = isTerminal(data.status);
|
|
144
|
+
if (terminal)
|
|
145
|
+
terminalSeen = true;
|
|
146
|
+
emitUpdate(data);
|
|
147
|
+
if (terminal)
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
boundary = buffer.search(/\r?\n\r?\n/);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
if (!isCurrent())
|
|
157
|
+
return;
|
|
158
|
+
if (error instanceof Error && error.name === "AbortError")
|
|
159
|
+
return;
|
|
160
|
+
console.warn("[brand-generation] SSE read failed; polling", {
|
|
161
|
+
errorType: errorType(error),
|
|
162
|
+
});
|
|
163
|
+
startPolling(jobId);
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
clearIdleTimeout();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
if (!isCurrent())
|
|
171
|
+
return;
|
|
172
|
+
if (error instanceof Error && error.name === "AbortError")
|
|
173
|
+
return;
|
|
174
|
+
console.warn("[brand-generation] SSE connection failed; polling", {
|
|
175
|
+
errorType: errorType(error),
|
|
176
|
+
});
|
|
177
|
+
startPolling(jobId);
|
|
178
|
+
}
|
|
179
|
+
}, [cleanup, emitUpdate, isTerminal, startPolling]);
|
|
180
|
+
return { cleanup, connect };
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=use-brand-generation-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-brand-generation-transport.js","sourceRoot":"","sources":["../../src/brand/use-brand-generation-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type QueryKey } from "@tanstack/react-query";
|
|
2
|
+
import type { BrandGenerationApi, BrandGenerationStreamConfig } from "./brand-generation-api.js";
|
|
3
|
+
import type { BrandGenerationContext, BrandGenerationJob } from "./brand-generation-response.js";
|
|
4
|
+
export interface UseBrandGenerationOptions {
|
|
5
|
+
/** Active org id. Every piece of generation state resets when it changes. */
|
|
6
|
+
readonly orgId: string;
|
|
7
|
+
/** The endpoint seam. See {@link BrandGenerationApi}. */
|
|
8
|
+
readonly api: BrandGenerationApi;
|
|
9
|
+
/** How the SSE stream authenticates. See {@link BrandGenerationStreamConfig}. */
|
|
10
|
+
readonly stream: BrandGenerationStreamConfig;
|
|
11
|
+
/**
|
|
12
|
+
* The consumer's brand-profile query key (prefix) for this org. It is
|
|
13
|
+
* invalidated when a job reaches a terminal state or is accepted, so the
|
|
14
|
+
* consumer's profile/draft queries refetch. Must not live under the
|
|
15
|
+
* `"brand-generation"` namespace.
|
|
16
|
+
*/
|
|
17
|
+
readonly profileQueryKey: QueryKey;
|
|
18
|
+
}
|
|
19
|
+
export type UseBrandGenerationResult = ReturnType<typeof useBrandGeneration>;
|
|
20
|
+
export declare function useBrandGeneration({ orgId, api, stream, profileQueryKey, }: UseBrandGenerationOptions): {
|
|
21
|
+
job: BrandGenerationJob | null;
|
|
22
|
+
isGenerating: boolean;
|
|
23
|
+
isDiscoveringActive: boolean;
|
|
24
|
+
discoveryError: Error | null;
|
|
25
|
+
error: "start" | "resume" | "accept" | "cancel" | "prioritize" | null;
|
|
26
|
+
transportDegraded: boolean;
|
|
27
|
+
eligibility: import("./brand-generation-types.js").BrandGenerationEligibility | null;
|
|
28
|
+
start: (homepageUrl: string, context?: BrandGenerationContext) => Promise<void>;
|
|
29
|
+
resume: (jobId: string) => Promise<void>;
|
|
30
|
+
cancel: () => Promise<void>;
|
|
31
|
+
prioritizeUrl: (url: string) => Promise<void>;
|
|
32
|
+
accept: () => Promise<boolean>;
|
|
33
|
+
reset: () => void;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=use-brand-generation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-brand-generation.d.ts","sourceRoot":"","sources":["../../src/brand/use-brand-generation.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAM9F,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAS9F,MAAM,WAAW,yBAAyB;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;CACpC;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE7E,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,GAAG,EACH,MAAM,EACN,eAAe,GAChB,EAAE,yBAAyB;;;;;;;;yBAwEQ,MAAM,YAAY,sBAAsB;oBAkHnD,MAAM;;yBA1EK,MAAM;;;EA8GzC"}
|