@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,61 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { BrandProfilePageChecklist } from "../components/brand-profile-page-checklist.js";
|
|
3
|
+
import { Button } from "../components/button.js";
|
|
4
|
+
import { MultiStepLoader, MultiStepLoaderSkeleton, multiStepLoaderBrandCrawlPresetV2, } from "../components/multi-step-loader.js";
|
|
5
|
+
import { resolveBrandGenerationCopy } from "./brand-generation-copy.js";
|
|
6
|
+
import { BrandGenerationRecovery } from "./brand-generation-recovery.js";
|
|
7
|
+
import { buildBrandGenerationSteps } from "./brand-generation-steps.js";
|
|
8
|
+
/**
|
|
9
|
+
* Returns `undefined` when every field is blank, so a plain "Retry" click
|
|
10
|
+
* without touching the optional context panel calls `onStart` with exactly one
|
|
11
|
+
* argument rather than an empty `context: {}`.
|
|
12
|
+
*/
|
|
13
|
+
function toGenerationContext(input) {
|
|
14
|
+
const context = {
|
|
15
|
+
...(input.businessName.trim() ? { businessName: input.businessName.trim() } : {}),
|
|
16
|
+
...(input.businessType.trim() ? { businessType: input.businessType.trim() } : {}),
|
|
17
|
+
...(input.locale.trim() ? { locale: input.locale.trim() } : {}),
|
|
18
|
+
...(input.focusUrls.length > 0
|
|
19
|
+
? { focusUrls: input.focusUrls.filter((url) => url.trim().length > 0) }
|
|
20
|
+
: {}),
|
|
21
|
+
...(input.corrections.trim() ? { corrections: input.corrections.trim() } : {}),
|
|
22
|
+
};
|
|
23
|
+
return Object.keys(context).length > 0 ? context : undefined;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Progress, failure and recovery for one brand-generation attempt. Pure
|
|
27
|
+
* presentation: state comes from `useBrandGeneration`, strings from `copy`.
|
|
28
|
+
*/
|
|
29
|
+
export function BrandGenerationProgress({ job, eligibility, transportDegraded, error, resolvedUrl, onStart, onCancel, onReset, persona = "producer", copy, formatDateTime, idPrefix = "brand-generation-progress", }) {
|
|
30
|
+
const text = resolveBrandGenerationCopy(persona, copy);
|
|
31
|
+
// Transport `status` ("failed"/"cancelled") is NOT outcome (contracts §2:
|
|
32
|
+
// "Transport completion is not outcome"). Prefer the real `job.outcome`;
|
|
33
|
+
// fall back to the transport status for a job that predates the field.
|
|
34
|
+
const outcome = job?.outcome ??
|
|
35
|
+
(job?.status === "failed" || job?.status === "cancelled" ? job.status : undefined);
|
|
36
|
+
const isFailed = outcome === "failed";
|
|
37
|
+
const isCancelled = outcome === "cancelled";
|
|
38
|
+
const isNoResult = outcome === "no_result";
|
|
39
|
+
const isTerminalBadOutcome = isFailed || isCancelled || isNoResult;
|
|
40
|
+
const activePhase = job?.progress?.phase;
|
|
41
|
+
const steps = buildBrandGenerationSteps(multiStepLoaderBrandCrawlPresetV2.map((step) => ({
|
|
42
|
+
...step,
|
|
43
|
+
label: text.phaseLabels[step.id] ?? step.label,
|
|
44
|
+
})), job?.progress, isFailed, text.passLabel);
|
|
45
|
+
const canRetry = resolvedUrl.length > 0 && (eligibility?.canStart ?? true);
|
|
46
|
+
const errorMessage = error === null ? null : text.errors[error];
|
|
47
|
+
const generationProgress = activePhase === undefined ? null : (_jsxs(_Fragment, { children: [_jsx(MultiStepLoader, { steps: steps, activeId: activePhase, variant: "list", monotonic: true, runKey: job?.id ?? "", copy: text.stepper }), _jsx(BrandProfilePageChecklist, { progress: { ...job?.progress, phase: activePhase }, copy: text.checklist })] }));
|
|
48
|
+
return (_jsxs("div", { className: "flex flex-col gap-6", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-lg font-semibold text-foreground", children: text.title }), _jsx("p", { className: "mt-1 max-w-prose text-sm text-muted-foreground", children: text.subtitle })] }), _jsxs("div", { className: "rounded-2xl border border-border bg-card p-6", children: [!job || job.status === "pending" || (!activePhase && !isTerminalBadOutcome) ? (_jsx(MultiStepLoaderSkeleton, { steps: 5, label: text.loadingStepsLabel })) : (generationProgress), transportDegraded && !isTerminalBadOutcome && (_jsx("p", { className: "mt-3 text-xs text-muted-foreground", children: text.transportDegraded })), errorMessage && (_jsx("p", { role: "alert", className: "mt-3 text-sm text-destructive", children: errorMessage })), isTerminalBadOutcome && (_jsxs("div", { className: "mt-6", children: [_jsx(BrandGenerationRecovery, { outcome: outcome, eligibility: eligibility ?? undefined, initialContext: job?.context ?? undefined,
|
|
49
|
+
// No URL to retry with: omit `onRetry` so no enabled-looking
|
|
50
|
+
// button silently no-ops.
|
|
51
|
+
onRetry: canRetry
|
|
52
|
+
? (context) => {
|
|
53
|
+
const generationContext = toGenerationContext(context);
|
|
54
|
+
if (generationContext === undefined)
|
|
55
|
+
onStart(resolvedUrl);
|
|
56
|
+
else
|
|
57
|
+
onStart(resolvedUrl, generationContext);
|
|
58
|
+
}
|
|
59
|
+
: undefined, onCreateManually: onReset, showRetryContext: true, formatDateTime: formatDateTime, copy: text.recovery, idPrefix: idPrefix }, job?.id ?? "none"), eligibility && !eligibility.canStart && !eligibility.reason ? (_jsx("p", { role: "status", className: "mt-3 text-sm/6 text-muted-foreground", children: text.eligibilityUnavailable })) : null] })), !isTerminalBadOutcome && (_jsx("div", { className: "mt-6 flex justify-end", children: _jsx(Button, { outline: true, onClick: onCancel, children: text.cancelAction }) }))] })] }));
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=brand-generation-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-progress.js","sourceRoot":"","sources":["../../src/brand/brand-generation-progress.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type BrandGenerationCopy } from "./brand-generation-copy.js";
|
|
2
|
+
import type { BrandPersona } from "./types.js";
|
|
3
|
+
/** Inline alert for a failed in-progress-job recovery (`discoveryError`). */
|
|
4
|
+
export declare function BrandGenerationRecoveryError({ persona, copy, }: {
|
|
5
|
+
readonly persona?: BrandPersona;
|
|
6
|
+
readonly copy?: Partial<BrandGenerationCopy>;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=brand-generation-recovery-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-recovery-error.d.ts","sourceRoot":"","sources":["../../src/brand/brand-generation-recovery-error.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,6EAA6E;AAC7E,wBAAgB,4BAA4B,CAAC,EAC3C,OAAoB,EACpB,IAAI,GACL,EAAE;IACD,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC9C,2CAMA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { resolveBrandGenerationCopy } from "./brand-generation-copy.js";
|
|
3
|
+
/** Inline alert for a failed in-progress-job recovery (`discoveryError`). */
|
|
4
|
+
export function BrandGenerationRecoveryError({ persona = "producer", copy, }) {
|
|
5
|
+
return (_jsx("p", { role: "alert", className: "text-sm text-destructive", children: resolveBrandGenerationCopy(persona, copy).recoveryFailed }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=brand-generation-recovery-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-recovery-error.js","sourceRoot":"","sources":["../../src/brand/brand-generation-recovery-error.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,0BAA0B,EAA4B,MAAM,yBAAyB,CAAC;AAG/F,6EAA6E;AAC7E,MAAM,UAAU,4BAA4B,CAAC,EAC3C,OAAO,GAAG,UAAU,EACpB,IAAI,GAIL;IACC,OAAO,CACL,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,0BAA0B,YACjD,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,cAAc,GACvD,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { BrandGenerationEligibility } from "./brand-generation-types.js";
|
|
2
|
+
export type { BrandGenerationEligibility } from "./brand-generation-types.js";
|
|
3
|
+
declare const JOB_PHASES: readonly ["mapping", "selecting", "crawling", "consolidating", "finalizing"];
|
|
4
|
+
declare const JOB_STATUSES: readonly ["pending", "running", "completed", "failed", "cancelled"];
|
|
5
|
+
declare const PAGE_STATUSES: readonly ["pending", "active", "done", "failed"];
|
|
6
|
+
declare const OUTCOMES: readonly ["useful_draft", "partial_draft", "no_result", "failed", "cancelled"];
|
|
7
|
+
export type BrandGenerationPhase = (typeof JOB_PHASES)[number];
|
|
8
|
+
export type BrandGenerationJobStatus = (typeof JOB_STATUSES)[number];
|
|
9
|
+
export type BrandGenerationPageStatus = (typeof PAGE_STATUSES)[number];
|
|
10
|
+
export type BrandGenerationJobOutcome = (typeof OUTCOMES)[number] | null;
|
|
11
|
+
/** Optional operator-supplied context for a generation start or retry
|
|
12
|
+
* (contracts §2 "Start"). Persisted with the attempt and returned on retry
|
|
13
|
+
* so the UI can prefill it. */
|
|
14
|
+
export type BrandGenerationContext = {
|
|
15
|
+
readonly businessName?: string;
|
|
16
|
+
readonly businessType?: string;
|
|
17
|
+
readonly locale?: string;
|
|
18
|
+
readonly focusUrls?: readonly string[];
|
|
19
|
+
readonly corrections?: string;
|
|
20
|
+
};
|
|
21
|
+
export type BrandGenerationPageProgress = {
|
|
22
|
+
readonly url: string;
|
|
23
|
+
readonly round: number;
|
|
24
|
+
readonly status: BrandGenerationPageStatus;
|
|
25
|
+
};
|
|
26
|
+
export type BrandGenerationJobProgress = {
|
|
27
|
+
readonly phase?: BrandGenerationPhase;
|
|
28
|
+
readonly iteration?: number;
|
|
29
|
+
readonly currentUrl?: string | null;
|
|
30
|
+
readonly completenessScore?: number;
|
|
31
|
+
readonly message?: string;
|
|
32
|
+
readonly urlsDiscovered?: number;
|
|
33
|
+
readonly urlsCrawled?: number;
|
|
34
|
+
readonly cost?: {
|
|
35
|
+
readonly firecrawlCredits: number;
|
|
36
|
+
readonly llmInputTokens: number;
|
|
37
|
+
readonly llmOutputTokens: number;
|
|
38
|
+
};
|
|
39
|
+
readonly round?: number;
|
|
40
|
+
readonly pagesTotal?: number;
|
|
41
|
+
readonly pagesDone?: number;
|
|
42
|
+
readonly pageProgress?: BrandGenerationPageProgress[];
|
|
43
|
+
};
|
|
44
|
+
export type BrandGenerationJob = {
|
|
45
|
+
readonly id: string;
|
|
46
|
+
readonly homepageUrl?: string;
|
|
47
|
+
readonly status: BrandGenerationJobStatus;
|
|
48
|
+
readonly progress: BrandGenerationJobProgress;
|
|
49
|
+
readonly error: string | null;
|
|
50
|
+
readonly workflowId: string;
|
|
51
|
+
readonly createdAt: string;
|
|
52
|
+
readonly updatedAt: string;
|
|
53
|
+
readonly outcome?: BrandGenerationJobOutcome;
|
|
54
|
+
readonly context?: BrandGenerationContext | null;
|
|
55
|
+
readonly eligibility?: BrandGenerationEligibility;
|
|
56
|
+
};
|
|
57
|
+
export type BrandGenerationActiveJob = BrandGenerationJob & {
|
|
58
|
+
readonly homepageUrl: string;
|
|
59
|
+
};
|
|
60
|
+
export type BrandGenerationStartResponse = {
|
|
61
|
+
readonly jobId: string;
|
|
62
|
+
readonly workflowId: string;
|
|
63
|
+
readonly reused: boolean;
|
|
64
|
+
};
|
|
65
|
+
export type BrandGenerationEnvelope = {
|
|
66
|
+
readonly data?: unknown;
|
|
67
|
+
readonly error?: unknown;
|
|
68
|
+
readonly response?: Response;
|
|
69
|
+
readonly status?: number;
|
|
70
|
+
};
|
|
71
|
+
export declare class BrandGenerationResponseError extends Error {
|
|
72
|
+
readonly status: number;
|
|
73
|
+
readonly code = "INVALID_BRAND_GENERATION_RESPONSE";
|
|
74
|
+
constructor(status: number);
|
|
75
|
+
}
|
|
76
|
+
export declare function parseEligibility(value: unknown): BrandGenerationEligibility | null;
|
|
77
|
+
export declare function asEnvelope(value: unknown): BrandGenerationEnvelope;
|
|
78
|
+
export declare function responseStatus(envelope: BrandGenerationEnvelope): number;
|
|
79
|
+
export declare function parseJob(value: unknown, requireHomepageUrl: boolean): BrandGenerationJob | null;
|
|
80
|
+
export type BrandGenerationActiveResult = {
|
|
81
|
+
readonly job: BrandGenerationActiveJob | null;
|
|
82
|
+
readonly eligibility: BrandGenerationEligibility | null;
|
|
83
|
+
};
|
|
84
|
+
export declare function parseActiveEnvelope(value: unknown): BrandGenerationActiveResult | null;
|
|
85
|
+
export declare function parseStart(value: unknown): BrandGenerationStartResponse | null;
|
|
86
|
+
//# sourceMappingURL=brand-generation-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-response.d.ts","sourceRoot":"","sources":["../../src/brand/brand-generation-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
// CEL-1682 confirmed finding: this union previously carried three phases
|
|
2
|
+
// ("scraping", "writing", "reviewing") the backend's real
|
|
3
|
+
// `BrandProfileGenerationPhase` union (contracts §2, generation-service
|
|
4
|
+
// schemas.ts) never emits and never will — `BrandGenerationProgress.tsx`'s
|
|
5
|
+
// own phase-label map only ever had entries for the 5 real phases, so those
|
|
6
|
+
// three were always dead. Kept in sync with the backend union exactly.
|
|
7
|
+
const JOB_PHASES = ["mapping", "selecting", "crawling", "consolidating", "finalizing"];
|
|
8
|
+
const JOB_STATUSES = ["pending", "running", "completed", "failed", "cancelled"];
|
|
9
|
+
const PAGE_STATUSES = ["pending", "active", "done", "failed"];
|
|
10
|
+
const ELIGIBILITY_REASONS = ["cooldown", "active_attempt", "retry_limit"];
|
|
11
|
+
// CEL-1679 contract §2 "Attempt state and outcome" — the semantic result
|
|
12
|
+
// classified at finalisation from the persisted draft, distinct from
|
|
13
|
+
// transport `status`. `null` while running/pending or on any response shape
|
|
14
|
+
// that omits it (cancel/prioritize/accept, SSE updates).
|
|
15
|
+
const OUTCOMES = ["useful_draft", "partial_draft", "no_result", "failed", "cancelled"];
|
|
16
|
+
export class BrandGenerationResponseError extends Error {
|
|
17
|
+
status;
|
|
18
|
+
code = "INVALID_BRAND_GENERATION_RESPONSE";
|
|
19
|
+
constructor(status) {
|
|
20
|
+
super("Invalid brand generation response");
|
|
21
|
+
this.status = status;
|
|
22
|
+
this.name = "BrandGenerationResponseError";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function isRecord(value) {
|
|
26
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
27
|
+
}
|
|
28
|
+
function isOneOf(value, values) {
|
|
29
|
+
return typeof value === "string" && values.some((candidate) => candidate === value);
|
|
30
|
+
}
|
|
31
|
+
function requiredString(record, key) {
|
|
32
|
+
const value = record[key];
|
|
33
|
+
return typeof value === "string" ? value : null;
|
|
34
|
+
}
|
|
35
|
+
function optionalNumber(record, key) {
|
|
36
|
+
const value = record[key];
|
|
37
|
+
return value === undefined
|
|
38
|
+
? undefined
|
|
39
|
+
: typeof value === "number" && Number.isFinite(value)
|
|
40
|
+
? value
|
|
41
|
+
: null;
|
|
42
|
+
}
|
|
43
|
+
function isStringOrNull(value) {
|
|
44
|
+
return value === null || typeof value === "string";
|
|
45
|
+
}
|
|
46
|
+
function isIntegerOrNull(value) {
|
|
47
|
+
return value === null || (typeof value === "number" && Number.isInteger(value));
|
|
48
|
+
}
|
|
49
|
+
/** Degrades to `undefined` (absent) rather than failing the whole job parse —
|
|
50
|
+
* same posture as `parseEligibility`: an unrecognised outcome value from a
|
|
51
|
+
* future backend addition must not break polling. */
|
|
52
|
+
function parseOutcome(value) {
|
|
53
|
+
if (value === null)
|
|
54
|
+
return null;
|
|
55
|
+
return isOneOf(value, OUTCOMES) ? value : undefined;
|
|
56
|
+
}
|
|
57
|
+
function isStringArray(value) {
|
|
58
|
+
return Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
59
|
+
}
|
|
60
|
+
function parseContext(value) {
|
|
61
|
+
if (value === null)
|
|
62
|
+
return null;
|
|
63
|
+
if (!isRecord(value))
|
|
64
|
+
return undefined;
|
|
65
|
+
const { businessName, businessType, locale, focusUrls, corrections } = value;
|
|
66
|
+
if ((businessName !== undefined && typeof businessName !== "string") ||
|
|
67
|
+
(businessType !== undefined && typeof businessType !== "string") ||
|
|
68
|
+
(locale !== undefined && typeof locale !== "string") ||
|
|
69
|
+
(corrections !== undefined && typeof corrections !== "string") ||
|
|
70
|
+
(focusUrls !== undefined && !isStringArray(focusUrls)))
|
|
71
|
+
return undefined;
|
|
72
|
+
return {
|
|
73
|
+
...(businessName === undefined ? {} : { businessName }),
|
|
74
|
+
...(businessType === undefined ? {} : { businessType }),
|
|
75
|
+
...(locale === undefined ? {} : { locale }),
|
|
76
|
+
...(focusUrls === undefined ? {} : { focusUrls }),
|
|
77
|
+
...(corrections === undefined ? {} : { corrections }),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export function parseEligibility(value) {
|
|
81
|
+
if (!isRecord(value))
|
|
82
|
+
return null;
|
|
83
|
+
const { canStart, reason, nextEligibleAt, lastUsefulDraftAt, retriesRemainingToday } = value;
|
|
84
|
+
if (typeof canStart !== "boolean" ||
|
|
85
|
+
!isStringOrNull(nextEligibleAt) ||
|
|
86
|
+
!isStringOrNull(lastUsefulDraftAt) ||
|
|
87
|
+
!isIntegerOrNull(retriesRemainingToday))
|
|
88
|
+
return null;
|
|
89
|
+
// An unrecognised `reason` (an additive backend enum value this client does
|
|
90
|
+
// not know yet) must not invalidate the whole snapshot: keep the booleans and
|
|
91
|
+
// dates, and report the reason as unknown (`null`).
|
|
92
|
+
const knownReason = isOneOf(reason, ELIGIBILITY_REASONS)
|
|
93
|
+
? reason
|
|
94
|
+
: null;
|
|
95
|
+
return {
|
|
96
|
+
canStart,
|
|
97
|
+
reason: knownReason,
|
|
98
|
+
nextEligibleAt,
|
|
99
|
+
lastUsefulDraftAt,
|
|
100
|
+
retriesRemainingToday,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export function asEnvelope(value) {
|
|
104
|
+
if (!isRecord(value))
|
|
105
|
+
return {};
|
|
106
|
+
const status = isRecord(value.response) && typeof value.response.status === "number"
|
|
107
|
+
? value.response.status
|
|
108
|
+
: undefined;
|
|
109
|
+
return {
|
|
110
|
+
...("data" in value ? { data: value.data } : {}),
|
|
111
|
+
...("error" in value ? { error: value.error } : {}),
|
|
112
|
+
...(value.response instanceof Response ? { response: value.response } : {}),
|
|
113
|
+
...(status === undefined ? {} : { status }),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export function responseStatus(envelope) {
|
|
117
|
+
return envelope.status ?? envelope.response?.status ?? 500;
|
|
118
|
+
}
|
|
119
|
+
function parsePageProgress(value) {
|
|
120
|
+
if (!isRecord(value))
|
|
121
|
+
return null;
|
|
122
|
+
const url = requiredString(value, "url");
|
|
123
|
+
const round = optionalNumber(value, "round");
|
|
124
|
+
return url === null ||
|
|
125
|
+
round === null ||
|
|
126
|
+
round === undefined ||
|
|
127
|
+
!isOneOf(value.status, PAGE_STATUSES)
|
|
128
|
+
? null
|
|
129
|
+
: { url, round, status: value.status };
|
|
130
|
+
}
|
|
131
|
+
function parseProgress(value) {
|
|
132
|
+
if (!isRecord(value) ||
|
|
133
|
+
(value.phase !== undefined && !isOneOf(value.phase, JOB_PHASES)) ||
|
|
134
|
+
(value.currentUrl !== undefined &&
|
|
135
|
+
value.currentUrl !== null &&
|
|
136
|
+
typeof value.currentUrl !== "string") ||
|
|
137
|
+
(value.message !== undefined && typeof value.message !== "string"))
|
|
138
|
+
return null;
|
|
139
|
+
const numericKeys = [
|
|
140
|
+
"iteration",
|
|
141
|
+
"completenessScore",
|
|
142
|
+
"urlsDiscovered",
|
|
143
|
+
"urlsCrawled",
|
|
144
|
+
"round",
|
|
145
|
+
"pagesTotal",
|
|
146
|
+
"pagesDone",
|
|
147
|
+
];
|
|
148
|
+
const numbers = numericKeys.map((key) => [key, optionalNumber(value, key)]);
|
|
149
|
+
if (numbers.some(([, number]) => number === null))
|
|
150
|
+
return null;
|
|
151
|
+
let pageProgress;
|
|
152
|
+
if (value.pageProgress !== undefined) {
|
|
153
|
+
if (!Array.isArray(value.pageProgress))
|
|
154
|
+
return null;
|
|
155
|
+
pageProgress = [];
|
|
156
|
+
for (const page of value.pageProgress) {
|
|
157
|
+
const parsed = parsePageProgress(page);
|
|
158
|
+
if (parsed === null)
|
|
159
|
+
return null;
|
|
160
|
+
pageProgress.push(parsed);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
let cost;
|
|
164
|
+
if (value.cost !== undefined) {
|
|
165
|
+
if (!isRecord(value.cost))
|
|
166
|
+
return null;
|
|
167
|
+
const firecrawlCredits = optionalNumber(value.cost, "firecrawlCredits");
|
|
168
|
+
const llmInputTokens = optionalNumber(value.cost, "llmInputTokens");
|
|
169
|
+
const llmOutputTokens = optionalNumber(value.cost, "llmOutputTokens");
|
|
170
|
+
if (firecrawlCredits === null ||
|
|
171
|
+
firecrawlCredits === undefined ||
|
|
172
|
+
llmInputTokens === null ||
|
|
173
|
+
llmInputTokens === undefined ||
|
|
174
|
+
llmOutputTokens === null ||
|
|
175
|
+
llmOutputTokens === undefined)
|
|
176
|
+
return null;
|
|
177
|
+
cost = { firecrawlCredits, llmInputTokens, llmOutputTokens };
|
|
178
|
+
}
|
|
179
|
+
const result = {
|
|
180
|
+
...(value.phase === undefined ? {} : { phase: value.phase }),
|
|
181
|
+
...(value.currentUrl === undefined ? {} : { currentUrl: value.currentUrl }),
|
|
182
|
+
...(value.message === undefined ? {} : { message: value.message }),
|
|
183
|
+
...(cost === undefined ? {} : { cost }),
|
|
184
|
+
...(pageProgress === undefined ? {} : { pageProgress }),
|
|
185
|
+
};
|
|
186
|
+
for (const [key, number] of numbers)
|
|
187
|
+
if (number !== undefined)
|
|
188
|
+
Object.assign(result, { [key]: number });
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
export function parseJob(value, requireHomepageUrl) {
|
|
192
|
+
if (!isRecord(value))
|
|
193
|
+
return null;
|
|
194
|
+
const id = requiredString(value, "id");
|
|
195
|
+
const workflowId = requiredString(value, "workflowId");
|
|
196
|
+
const createdAt = requiredString(value, "createdAt");
|
|
197
|
+
const updatedAt = requiredString(value, "updatedAt");
|
|
198
|
+
const progress = parseProgress(value.progress);
|
|
199
|
+
const homepageUrl = value.homepageUrl;
|
|
200
|
+
// `eligibility` is optional on the wire (present on GET /:jobId and on an
|
|
201
|
+
// active GET /active job; absent on cancel/prioritize/accept and SSE). It is
|
|
202
|
+
// an org-level side-car, not part of the job's identity, so a
|
|
203
|
+
// present-but-unparseable value degrades to ABSENT rather than rejecting the
|
|
204
|
+
// whole job read: an additive backend change to the eligibility shape must
|
|
205
|
+
// never break polling or `resume(jobId)`.
|
|
206
|
+
const eligibility = "eligibility" in value ? (parseEligibility(value.eligibility) ?? undefined) : undefined;
|
|
207
|
+
const outcome = "outcome" in value ? parseOutcome(value.outcome) : undefined;
|
|
208
|
+
const context = "context" in value ? parseContext(value.context) : undefined;
|
|
209
|
+
if (id === null ||
|
|
210
|
+
workflowId === null ||
|
|
211
|
+
createdAt === null ||
|
|
212
|
+
updatedAt === null ||
|
|
213
|
+
progress === null ||
|
|
214
|
+
!isOneOf(value.status, JOB_STATUSES) ||
|
|
215
|
+
(value.error !== null && typeof value.error !== "string") ||
|
|
216
|
+
(homepageUrl !== undefined && typeof homepageUrl !== "string") ||
|
|
217
|
+
(requireHomepageUrl && typeof homepageUrl !== "string"))
|
|
218
|
+
return null;
|
|
219
|
+
return {
|
|
220
|
+
id,
|
|
221
|
+
workflowId,
|
|
222
|
+
createdAt,
|
|
223
|
+
updatedAt,
|
|
224
|
+
status: value.status,
|
|
225
|
+
progress,
|
|
226
|
+
error: value.error,
|
|
227
|
+
...(typeof homepageUrl === "string" ? { homepageUrl } : {}),
|
|
228
|
+
...(eligibility ? { eligibility } : {}),
|
|
229
|
+
...(outcome !== undefined ? { outcome } : {}),
|
|
230
|
+
...(context !== undefined ? { context } : {}),
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function toActiveJob(rawJob) {
|
|
234
|
+
const job = parseJob(rawJob, true);
|
|
235
|
+
return job === null || job.homepageUrl === undefined
|
|
236
|
+
? null
|
|
237
|
+
: { ...job, homepageUrl: job.homepageUrl };
|
|
238
|
+
}
|
|
239
|
+
export function parseActiveEnvelope(value) {
|
|
240
|
+
if (isRecord(value) && "job" in value) {
|
|
241
|
+
if (value.job === null)
|
|
242
|
+
return { job: null, eligibility: parseEligibility(value.eligibility) };
|
|
243
|
+
const job = toActiveJob(value.job);
|
|
244
|
+
if (job === null)
|
|
245
|
+
return null;
|
|
246
|
+
return { job, eligibility: parseEligibility(value.eligibility) };
|
|
247
|
+
}
|
|
248
|
+
// Legacy bare-job 200 shape: the whole payload IS the job.
|
|
249
|
+
const job = toActiveJob(value);
|
|
250
|
+
return job === null ? null : { job, eligibility: null };
|
|
251
|
+
}
|
|
252
|
+
export function parseStart(value) {
|
|
253
|
+
if (!isRecord(value))
|
|
254
|
+
return null;
|
|
255
|
+
const jobId = requiredString(value, "jobId");
|
|
256
|
+
const workflowId = requiredString(value, "workflowId");
|
|
257
|
+
return jobId === null || workflowId === null || typeof value.reused !== "boolean"
|
|
258
|
+
? null
|
|
259
|
+
: { jobId, workflowId, reused: value.reused };
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=brand-generation-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-response.js","sourceRoot":"","sources":["../../src/brand/brand-generation-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BrandGenerationJobProgress as JobProgress, BrandGenerationJobStatus as JobStatus } from "./brand-generation-response.js";
|
|
2
|
+
export interface BrandGenerationUpdate {
|
|
3
|
+
jobId?: string;
|
|
4
|
+
id?: string;
|
|
5
|
+
status: JobStatus;
|
|
6
|
+
progress?: JobProgress;
|
|
7
|
+
error?: string | null;
|
|
8
|
+
result?: {
|
|
9
|
+
profileId?: string;
|
|
10
|
+
} | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function parseSseUpdate(payload: string): BrandGenerationUpdate | null;
|
|
13
|
+
export declare function dataPayload(frame: string): string | null;
|
|
14
|
+
//# sourceMappingURL=brand-generation-sse-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-sse-parser.d.ts","sourceRoot":"","sources":["../../src/brand/brand-generation-sse-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,IAAI,WAAW,EACzC,wBAAwB,IAAI,SAAS,EACtC,MAAM,6BAA6B,CAAC;AASrC,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACxC;AAoDD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAoB5E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxD"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
const JOB_STATUSES = ["pending", "running", "completed", "failed", "cancelled"];
|
|
2
|
+
// CEL-1682 confirmed finding — kept in sync with brandGenerationResponse.ts's
|
|
3
|
+
// JOB_PHASES: the backend's real `BrandProfileGenerationPhase` union
|
|
4
|
+
// (contracts §2) is mapping/selecting/crawling/consolidating/finalizing;
|
|
5
|
+
// "scraping"/"writing"/"reviewing" never appear on the wire.
|
|
6
|
+
const JOB_PHASES = ["mapping", "selecting", "crawling", "consolidating", "finalizing"];
|
|
7
|
+
function isRecord(value) {
|
|
8
|
+
return value !== null && typeof value === "object";
|
|
9
|
+
}
|
|
10
|
+
function parsePageProgress(value) {
|
|
11
|
+
if (!isRecord(value))
|
|
12
|
+
return null;
|
|
13
|
+
const statuses = ["pending", "active", "done", "failed"];
|
|
14
|
+
const status = statuses.find((candidate) => candidate === value.status);
|
|
15
|
+
if (typeof value.url !== "string" || typeof value.round !== "number" || !status)
|
|
16
|
+
return null;
|
|
17
|
+
return { url: value.url, round: value.round, status };
|
|
18
|
+
}
|
|
19
|
+
function parseProgress(value) {
|
|
20
|
+
if (!isRecord(value))
|
|
21
|
+
return undefined;
|
|
22
|
+
const phase = JOB_PHASES.find((candidate) => candidate === value.phase);
|
|
23
|
+
let pageProgress;
|
|
24
|
+
if (value.pageProgress !== undefined) {
|
|
25
|
+
if (!Array.isArray(value.pageProgress))
|
|
26
|
+
return undefined;
|
|
27
|
+
const pages = value.pageProgress.map(parsePageProgress);
|
|
28
|
+
if (pages.some((page) => page === null))
|
|
29
|
+
return undefined;
|
|
30
|
+
pageProgress = pages.filter((page) => page !== null);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
...(phase === undefined ? {} : { phase }),
|
|
34
|
+
...(typeof value.iteration === "number" ? { iteration: value.iteration } : {}),
|
|
35
|
+
...(typeof value.currentUrl === "string" || value.currentUrl === null
|
|
36
|
+
? { currentUrl: value.currentUrl }
|
|
37
|
+
: {}),
|
|
38
|
+
...(typeof value.message === "string" ? { message: value.message } : {}),
|
|
39
|
+
...(typeof value.completenessScore === "number"
|
|
40
|
+
? { completenessScore: value.completenessScore }
|
|
41
|
+
: {}),
|
|
42
|
+
...(typeof value.urlsDiscovered === "number" ? { urlsDiscovered: value.urlsDiscovered } : {}),
|
|
43
|
+
...(typeof value.urlsCrawled === "number" ? { urlsCrawled: value.urlsCrawled } : {}),
|
|
44
|
+
...(typeof value.round === "number" ? { round: value.round } : {}),
|
|
45
|
+
...(typeof value.pagesTotal === "number" ? { pagesTotal: value.pagesTotal } : {}),
|
|
46
|
+
...(typeof value.pagesDone === "number" ? { pagesDone: value.pagesDone } : {}),
|
|
47
|
+
...(pageProgress === undefined ? {} : { pageProgress }),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function parseResult(value) {
|
|
51
|
+
if (value === null)
|
|
52
|
+
return null;
|
|
53
|
+
if (!isRecord(value))
|
|
54
|
+
return undefined;
|
|
55
|
+
if (value.profileId === undefined)
|
|
56
|
+
return {};
|
|
57
|
+
return typeof value.profileId === "string" ? { profileId: value.profileId } : undefined;
|
|
58
|
+
}
|
|
59
|
+
export function parseSseUpdate(payload) {
|
|
60
|
+
let value;
|
|
61
|
+
try {
|
|
62
|
+
value = JSON.parse(payload);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
if (!isRecord(value))
|
|
68
|
+
return null;
|
|
69
|
+
const status = JOB_STATUSES.find((candidate) => candidate === value.status);
|
|
70
|
+
if (!status)
|
|
71
|
+
return null;
|
|
72
|
+
const progress = parseProgress(value.progress);
|
|
73
|
+
const result = parseResult(value.result);
|
|
74
|
+
return {
|
|
75
|
+
...(typeof value.jobId === "string" ? { jobId: value.jobId } : {}),
|
|
76
|
+
...(typeof value.id === "string" ? { id: value.id } : {}),
|
|
77
|
+
status,
|
|
78
|
+
...(progress === undefined ? {} : { progress }),
|
|
79
|
+
...(typeof value.error === "string" || value.error === null ? { error: value.error } : {}),
|
|
80
|
+
...(result === undefined ? {} : { result }),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function dataPayload(frame) {
|
|
84
|
+
const lines = frame.split(/\r?\n/);
|
|
85
|
+
const dataLines = lines.flatMap((line) => {
|
|
86
|
+
if (!line.startsWith("data:"))
|
|
87
|
+
return [];
|
|
88
|
+
return [line.slice(5).startsWith(" ") ? line.slice(6) : line.slice(5)];
|
|
89
|
+
});
|
|
90
|
+
return dataLines.length > 0 ? dataLines.join("\n") : null;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=brand-generation-sse-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-sse-parser.js","sourceRoot":"","sources":["../../src/brand/brand-generation-sse-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MultiStepLoaderStep } from "../components/multi-step-loader.js";
|
|
2
|
+
import type { BrandGenerationJobProgress } from "./brand-generation-response.js";
|
|
3
|
+
export declare function buildBrandGenerationSteps(preset: readonly MultiStepLoaderStep[], progress: BrandGenerationJobProgress | undefined, isFailed: boolean, passLabel?: (iteration: number) => string): MultiStepLoaderStep[];
|
|
4
|
+
//# sourceMappingURL=brand-generation-steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-generation-steps.d.ts","sourceRoot":"","sources":["../../src/brand/brand-generation-steps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAE9E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,mBAAmB,EAAE,EACtC,QAAQ,EAAE,0BAA0B,GAAG,SAAS,EAChD,QAAQ,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GACxC,mBAAmB,EAAE,CAuBvB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function buildBrandGenerationSteps(preset, progress, isFailed, passLabel) {
|
|
2
|
+
return preset.map((step) => {
|
|
3
|
+
let subLabel = step.subLabel;
|
|
4
|
+
let state = step.state;
|
|
5
|
+
if (progress && step.id === progress.phase) {
|
|
6
|
+
const parts = [];
|
|
7
|
+
if (step.id === "crawling" && progress.currentUrl) {
|
|
8
|
+
try {
|
|
9
|
+
parts.push(new URL(progress.currentUrl).hostname);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
parts.length = 0;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (step.id === "consolidating" && progress.completenessScore !== undefined) {
|
|
16
|
+
parts.push(`${Math.round(progress.completenessScore * 100)}%`);
|
|
17
|
+
}
|
|
18
|
+
const round = progress.round ?? progress.iteration ?? 0;
|
|
19
|
+
if (passLabel && round >= 2)
|
|
20
|
+
parts.push(passLabel(round));
|
|
21
|
+
if (parts.length > 0)
|
|
22
|
+
subLabel = parts.join(" · ");
|
|
23
|
+
if (isFailed)
|
|
24
|
+
state = "failed";
|
|
25
|
+
}
|
|
26
|
+
return { ...step, subLabel, state };
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=brand-generation-steps.js.map
|