@tangle-network/agent-app 0.60.208 → 0.60.210
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/agent-profiles/d1.js +2 -2
- package/dist/agent-profiles/index.js +2 -2
- package/dist/assistant/index.js +1 -1
- package/dist/chat-routes/index.js +3 -3
- package/dist/{chunk-QDKY5TBG.js → chunk-6CKOEPXS.js} +6 -6
- package/dist/chunk-6CKOEPXS.js.map +1 -0
- package/dist/{chunk-IJAXOQJU.js → chunk-LJASCU5V.js} +7 -2
- package/dist/chunk-LJASCU5V.js.map +1 -0
- package/dist/{chunk-JDEGS53O.js → chunk-LRW36WCF.js} +25 -2
- package/dist/chunk-LRW36WCF.js.map +1 -0
- package/dist/{chunk-HCFVEJQL.js → chunk-T3IO7QIW.js} +2 -2
- package/dist/chunk-WHK5CFDB.js +28 -0
- package/dist/chunk-WHK5CFDB.js.map +1 -0
- package/dist/intakes/drizzle.js +114 -6
- package/dist/intakes/drizzle.js.map +1 -1
- package/dist/intakes/index.d.ts +2 -6
- package/dist/intakes/index.js +6 -8
- package/dist/intakes/index.js.map +1 -1
- package/dist/intakes/model.d.ts +1 -2
- package/dist/preset-cloudflare/index.js +3 -4
- package/dist/preset-cloudflare/index.js.map +1 -1
- package/dist/public-consultation/index.d.ts +2 -2
- package/dist/sandbox/index.js +3 -3
- package/dist/stories/panels/fixtures.d.ts +3 -29
- package/dist/tools/index.js +3 -3
- package/dist/tools/render-ui-schema.d.ts +2 -2
- package/dist/web-react/index.js +3 -3
- package/dist/work-product/index.js +1 -1
- package/package.json +1 -16
- package/dist/IntakeInterview-OKT6DCBN.js +0 -8
- package/dist/IntakeInterview-OKT6DCBN.js.map +0 -1
- package/dist/chunk-2RCPPOQ4.js +0 -17
- package/dist/chunk-2RCPPOQ4.js.map +0 -1
- package/dist/chunk-I2CA5N7V.js +0 -254
- package/dist/chunk-I2CA5N7V.js.map +0 -1
- package/dist/chunk-IJAXOQJU.js.map +0 -1
- package/dist/chunk-JDEGS53O.js.map +0 -1
- package/dist/chunk-QDKY5TBG.js.map +0 -1
- package/dist/chunk-VWAEWOWK.js +0 -124
- package/dist/chunk-VWAEWOWK.js.map +0 -1
- package/dist/chunk-YZ6KQULN.js +0 -30
- package/dist/chunk-YZ6KQULN.js.map +0 -1
- package/dist/intakes/api.d.ts +0 -54
- package/dist/intakes/api.js +0 -63
- package/dist/intakes/api.js.map +0 -1
- package/dist/intakes-react/components/BrandMark.d.ts +0 -10
- package/dist/intakes-react/components/IntakeInterview.d.ts +0 -15
- package/dist/intakes-react/components/index.d.ts +0 -1
- package/dist/intakes-react/contracts.d.ts +0 -42
- package/dist/intakes-react/index.d.ts +0 -14
- package/dist/intakes-react/index.js +0 -8
- package/dist/intakes-react/index.js.map +0 -1
- package/dist/intakes-react/lazy.d.ts +0 -10
- package/dist/intakes-react/lazy.js +0 -9
- package/dist/intakes-react/lazy.js.map +0 -1
- /package/dist/{chunk-HCFVEJQL.js.map → chunk-T3IO7QIW.js.map} +0 -0
package/dist/intakes/api.d.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Framework-neutral intake API: the get-current / save-answer / complete logic,
|
|
3
|
-
* lifted out of any one app's route file. Each app mounts these in its own
|
|
4
|
-
* route with its own auth — the handlers take an already-resolved store (the
|
|
5
|
-
* caller built it from `createUserIntakeStore` / `createProjectIntakeStore`
|
|
6
|
-
* after running RBAC), the intake graph, and the parsed inputs. They return
|
|
7
|
-
* web-standard `Response`s (available in Workers, Node 18+, Deno, browsers), so
|
|
8
|
-
* "framework-neutral" is literal: no Remix/React-Router/Express import anywhere.
|
|
9
|
-
*
|
|
10
|
-
* The handlers own the graph→HTTP mapping the UI needs: `getCurrentIntake`
|
|
11
|
-
* returns the loaded state PLUS the next question to ask (the question-graph
|
|
12
|
-
* traversal from the `./intakes` leaf) and the progress counter, so the client
|
|
13
|
-
* renders one question at a time without re-deriving the graph. Store
|
|
14
|
-
* `IntakeError`s map to typed 4xx codes, never a generic 500 — an invalid
|
|
15
|
-
* answer is a 400, an incomplete-complete is a 409, never a silent success.
|
|
16
|
-
*
|
|
17
|
-
* Imports `drizzle-orm` transitively (through the store types), so this is a
|
|
18
|
-
* subpath, never re-exported from root.
|
|
19
|
-
*/
|
|
20
|
-
import { type IntakeAnswerValue, type IntakeGraph, type IntakeQuestion } from './model';
|
|
21
|
-
import { type IntakeStore } from './drizzle/store';
|
|
22
|
-
/** What the client renders: the saved state, the next prompt, and progress. */
|
|
23
|
-
export interface CurrentIntakeView {
|
|
24
|
-
graphId: string;
|
|
25
|
-
title: string;
|
|
26
|
-
description?: string;
|
|
27
|
-
answers: Record<string, IntakeAnswerValue>;
|
|
28
|
-
/** The next question to ask, or null when the interview is done. */
|
|
29
|
-
nextQuestion: IntakeQuestion | null;
|
|
30
|
-
completed: boolean;
|
|
31
|
-
completedAt: string | null;
|
|
32
|
-
progress: {
|
|
33
|
-
answered: number;
|
|
34
|
-
total: number;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/** Define configuration options for initializing the intake API with store and graph components */
|
|
38
|
-
export interface IntakeApiOptions {
|
|
39
|
-
store: IntakeStore;
|
|
40
|
-
graph: IntakeGraph;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Build the intake API bound to one store + graph. Returns three handlers; an
|
|
44
|
-
* app maps its route methods onto them (GET→getCurrentIntake, POST→saveAnswer,
|
|
45
|
-
* a complete action→completeIntake).
|
|
46
|
-
*/
|
|
47
|
-
export declare function createIntakeApi(opts: IntakeApiOptions): {
|
|
48
|
-
getCurrentIntake: () => Promise<Response>;
|
|
49
|
-
saveAnswer: (input: {
|
|
50
|
-
questionId?: string;
|
|
51
|
-
value?: IntakeAnswerValue;
|
|
52
|
-
}) => Promise<Response>;
|
|
53
|
-
completeIntake: () => Promise<Response>;
|
|
54
|
-
};
|
package/dist/intakes/api.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
IntakeError
|
|
3
|
-
} from "../chunk-VWAEWOWK.js";
|
|
4
|
-
import "../chunk-YZ6KQULN.js";
|
|
5
|
-
import {
|
|
6
|
-
intakeProgress,
|
|
7
|
-
nextQuestion
|
|
8
|
-
} from "../chunk-JDEGS53O.js";
|
|
9
|
-
|
|
10
|
-
// src/intakes/api.ts
|
|
11
|
-
function createIntakeApi(opts) {
|
|
12
|
-
const { store, graph } = opts;
|
|
13
|
-
function view(state) {
|
|
14
|
-
return {
|
|
15
|
-
graphId: graph.id,
|
|
16
|
-
title: graph.title,
|
|
17
|
-
...graph.description ? { description: graph.description } : {},
|
|
18
|
-
answers: state.payload.answers,
|
|
19
|
-
nextQuestion: nextQuestion(graph, state.payload.answers),
|
|
20
|
-
completed: state.completed,
|
|
21
|
-
completedAt: state.completedAt ? state.completedAt.toISOString() : null,
|
|
22
|
-
progress: intakeProgress(graph, state.payload.answers)
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
async function getCurrentIntake() {
|
|
26
|
-
const state = await store.get();
|
|
27
|
-
return Response.json(view(state));
|
|
28
|
-
}
|
|
29
|
-
async function saveAnswer(input) {
|
|
30
|
-
if (!input.questionId) return Response.json({ error: "Missing questionId" }, { status: 400 });
|
|
31
|
-
try {
|
|
32
|
-
const state = await store.save(input.questionId, input.value ?? null);
|
|
33
|
-
return Response.json(view(state));
|
|
34
|
-
} catch (err) {
|
|
35
|
-
return intakeErrorResponse(err);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
async function completeIntake() {
|
|
39
|
-
try {
|
|
40
|
-
const state = await store.complete();
|
|
41
|
-
return Response.json(view(state));
|
|
42
|
-
} catch (err) {
|
|
43
|
-
return intakeErrorResponse(err);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return { getCurrentIntake, saveAnswer, completeIntake };
|
|
47
|
-
}
|
|
48
|
-
var ERROR_STATUS = {
|
|
49
|
-
"invalid-answer": 400,
|
|
50
|
-
"unknown-question": 404,
|
|
51
|
-
incomplete: 409,
|
|
52
|
-
"stale-graph": 409
|
|
53
|
-
};
|
|
54
|
-
function intakeErrorResponse(err) {
|
|
55
|
-
if (err instanceof IntakeError) {
|
|
56
|
-
return Response.json({ error: err.message, code: err.code }, { status: ERROR_STATUS[err.code] ?? 400 });
|
|
57
|
-
}
|
|
58
|
-
throw err;
|
|
59
|
-
}
|
|
60
|
-
export {
|
|
61
|
-
createIntakeApi
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=api.js.map
|
package/dist/intakes/api.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/intakes/api.ts"],"sourcesContent":["/**\n * Framework-neutral intake API: the get-current / save-answer / complete logic,\n * lifted out of any one app's route file. Each app mounts these in its own\n * route with its own auth — the handlers take an already-resolved store (the\n * caller built it from `createUserIntakeStore` / `createProjectIntakeStore`\n * after running RBAC), the intake graph, and the parsed inputs. They return\n * web-standard `Response`s (available in Workers, Node 18+, Deno, browsers), so\n * \"framework-neutral\" is literal: no Remix/React-Router/Express import anywhere.\n *\n * The handlers own the graph→HTTP mapping the UI needs: `getCurrentIntake`\n * returns the loaded state PLUS the next question to ask (the question-graph\n * traversal from the `./intakes` leaf) and the progress counter, so the client\n * renders one question at a time without re-deriving the graph. Store\n * `IntakeError`s map to typed 4xx codes, never a generic 500 — an invalid\n * answer is a 400, an incomplete-complete is a 409, never a silent success.\n *\n * Imports `drizzle-orm` transitively (through the store types), so this is a\n * subpath, never re-exported from root.\n */\n\nimport {\n type IntakeAnswerValue,\n type IntakeGraph,\n type IntakeQuestion,\n intakeProgress,\n nextQuestion,\n} from './model'\nimport { type IntakeStore, IntakeError } from './drizzle/store'\n\n/** What the client renders: the saved state, the next prompt, and progress. */\nexport interface CurrentIntakeView {\n graphId: string\n title: string\n description?: string\n answers: Record<string, IntakeAnswerValue>\n /** The next question to ask, or null when the interview is done. */\n nextQuestion: IntakeQuestion | null\n completed: boolean\n completedAt: string | null\n progress: { answered: number; total: number }\n}\n\n/** Define configuration options for initializing the intake API with store and graph components */\nexport interface IntakeApiOptions {\n store: IntakeStore\n graph: IntakeGraph\n}\n\n/**\n * Build the intake API bound to one store + graph. Returns three handlers; an\n * app maps its route methods onto them (GET→getCurrentIntake, POST→saveAnswer,\n * a complete action→completeIntake).\n */\nexport function createIntakeApi(opts: IntakeApiOptions) {\n const { store, graph } = opts\n\n function view(state: Awaited<ReturnType<IntakeStore['get']>>): CurrentIntakeView {\n return {\n graphId: graph.id,\n title: graph.title,\n ...(graph.description ? { description: graph.description } : {}),\n answers: state.payload.answers,\n nextQuestion: nextQuestion(graph, state.payload.answers),\n completed: state.completed,\n completedAt: state.completedAt ? state.completedAt.toISOString() : null,\n progress: intakeProgress(graph, state.payload.answers),\n }\n }\n\n async function getCurrentIntake(): Promise<Response> {\n const state = await store.get()\n return Response.json(view(state))\n }\n\n async function saveAnswer(input: { questionId?: string; value?: IntakeAnswerValue }): Promise<Response> {\n if (!input.questionId) return Response.json({ error: 'Missing questionId' }, { status: 400 })\n try {\n const state = await store.save(input.questionId, input.value ?? null)\n return Response.json(view(state))\n } catch (err) {\n return intakeErrorResponse(err)\n }\n }\n\n async function completeIntake(): Promise<Response> {\n try {\n const state = await store.complete()\n return Response.json(view(state))\n } catch (err) {\n return intakeErrorResponse(err)\n }\n }\n\n return { getCurrentIntake, saveAnswer, completeIntake }\n}\n\nconst ERROR_STATUS: Record<string, number> = {\n 'invalid-answer': 400,\n 'unknown-question': 404,\n incomplete: 409,\n 'stale-graph': 409,\n}\n\nfunction intakeErrorResponse(err: unknown): Response {\n if (err instanceof IntakeError) {\n return Response.json({ error: err.message, code: err.code }, { status: ERROR_STATUS[err.code] ?? 400 })\n }\n throw err\n}\n"],"mappings":";;;;;;;;;;AAqDO,SAAS,gBAAgB,MAAwB;AACtD,QAAM,EAAE,OAAO,MAAM,IAAI;AAEzB,WAAS,KAAK,OAAmE;AAC/E,WAAO;AAAA,MACL,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MACb,GAAI,MAAM,cAAc,EAAE,aAAa,MAAM,YAAY,IAAI,CAAC;AAAA,MAC9D,SAAS,MAAM,QAAQ;AAAA,MACvB,cAAc,aAAa,OAAO,MAAM,QAAQ,OAAO;AAAA,MACvD,WAAW,MAAM;AAAA,MACjB,aAAa,MAAM,cAAc,MAAM,YAAY,YAAY,IAAI;AAAA,MACnE,UAAU,eAAe,OAAO,MAAM,QAAQ,OAAO;AAAA,IACvD;AAAA,EACF;AAEA,iBAAe,mBAAsC;AACnD,UAAM,QAAQ,MAAM,MAAM,IAAI;AAC9B,WAAO,SAAS,KAAK,KAAK,KAAK,CAAC;AAAA,EAClC;AAEA,iBAAe,WAAW,OAA8E;AACtG,QAAI,CAAC,MAAM,WAAY,QAAO,SAAS,KAAK,EAAE,OAAO,qBAAqB,GAAG,EAAE,QAAQ,IAAI,CAAC;AAC5F,QAAI;AACF,YAAM,QAAQ,MAAM,MAAM,KAAK,MAAM,YAAY,MAAM,SAAS,IAAI;AACpE,aAAO,SAAS,KAAK,KAAK,KAAK,CAAC;AAAA,IAClC,SAAS,KAAK;AACZ,aAAO,oBAAoB,GAAG;AAAA,IAChC;AAAA,EACF;AAEA,iBAAe,iBAAoC;AACjD,QAAI;AACF,YAAM,QAAQ,MAAM,MAAM,SAAS;AACnC,aAAO,SAAS,KAAK,KAAK,KAAK,CAAC;AAAA,IAClC,SAAS,KAAK;AACZ,aAAO,oBAAoB,GAAG;AAAA,IAChC;AAAA,EACF;AAEA,SAAO,EAAE,kBAAkB,YAAY,eAAe;AACxD;AAEA,IAAM,eAAuC;AAAA,EAC3C,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,eAAe;AACjB;AAEA,SAAS,oBAAoB,KAAwB;AACnD,MAAI,eAAe,aAAa;AAC9B,WAAO,SAAS,KAAK,EAAE,OAAO,IAAI,SAAS,MAAM,IAAI,KAAK,GAAG,EAAE,QAAQ,aAAa,IAAI,IAAI,KAAK,IAAI,CAAC;AAAA,EACxG;AACA,QAAM;AACR;","names":[]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Load the canonical Tangle knot only when an intakes surface renders it.
|
|
3
|
-
* `/brand` imports the optional `@tangle-network/brand` peer, so a failed load
|
|
4
|
-
* renders a fixed-size spacer instead of crashing the panel.
|
|
5
|
-
*/
|
|
6
|
-
export interface BrandMarkProps {
|
|
7
|
-
size: number;
|
|
8
|
-
className?: string;
|
|
9
|
-
}
|
|
10
|
-
export declare function BrandMark({ size, className }: BrandMarkProps): import("react").JSX.Element;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent-led intake interview: asks one question at a time, advancing as each
|
|
3
|
-
* answer is saved. Fully callback-driven — the host supplies the loaded `view`
|
|
4
|
-
* and the async `onAnswer` / `onComplete` callbacks (backed by `./intakes/api`),
|
|
5
|
-
* so this imports no app router, fetch client, or toast. Styled with the
|
|
6
|
-
* shipped Tangle Quiet tokens (`var(--*)`).
|
|
7
|
-
*
|
|
8
|
-
* The server owns traversal: each `onAnswer` resolves with the next view (next
|
|
9
|
-
* question + progress), so the component never re-derives the graph — it renders
|
|
10
|
-
* `view.nextQuestion`, and when that is null and the view is completable it
|
|
11
|
-
* shows the finish action. Local validation only gates the submit button; the
|
|
12
|
-
* authoritative validation runs in the store.
|
|
13
|
-
*/
|
|
14
|
-
import type { IntakeInterviewProps } from '../contracts';
|
|
15
|
-
export declare function IntakeInterview({ view: initialView, onAnswer, onComplete, onDone, onNotice, }: IntakeInterviewProps): import("react").JSX.Element;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './IntakeInterview';
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Seams between the intakes React surface and the host app. Everything here is
|
|
3
|
-
* interface-only and callback-driven: the components never import an app's
|
|
4
|
-
* router, fetch client, or toast system. The host passes the loaded view in and
|
|
5
|
-
* supplies the async callbacks (which it backs with `./intakes/api` over fetch),
|
|
6
|
-
* so the same interview mounts in any app and for either scope (user / project).
|
|
7
|
-
*/
|
|
8
|
-
import type { IntakeAnswerValue, IntakeQuestion } from '../intakes/model';
|
|
9
|
-
/** The state the interview renders — the shape `./intakes/api` returns. */
|
|
10
|
-
export interface IntakeView {
|
|
11
|
-
title: string;
|
|
12
|
-
description?: string;
|
|
13
|
-
answers: Record<string, IntakeAnswerValue>;
|
|
14
|
-
/** The next question to ask, or null when the interview is done. */
|
|
15
|
-
nextQuestion: IntakeQuestion | null;
|
|
16
|
-
completed: boolean;
|
|
17
|
-
progress: {
|
|
18
|
-
answered: number;
|
|
19
|
-
total: number;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
/** Define properties and callbacks for managing the intake interview flow and user interactions */
|
|
23
|
-
export interface IntakeInterviewProps {
|
|
24
|
-
view: IntakeView;
|
|
25
|
-
/**
|
|
26
|
-
* Persist one answer; resolve with the next view (the server re-derives the
|
|
27
|
-
* next question + progress). The component re-renders from the returned view.
|
|
28
|
-
*/
|
|
29
|
-
onAnswer(input: {
|
|
30
|
-
questionId: string;
|
|
31
|
-
value: IntakeAnswerValue;
|
|
32
|
-
}): Promise<IntakeView>;
|
|
33
|
-
/** Finish the interview; resolve with the final view. */
|
|
34
|
-
onComplete(): Promise<IntakeView>;
|
|
35
|
-
/** Called once when the interview is done (completed view), for navigation. */
|
|
36
|
-
onDone?(): void;
|
|
37
|
-
/** Optional toast/notice hook; defaults to a no-op (host owns its UX). */
|
|
38
|
-
onNotice?(notice: {
|
|
39
|
-
kind: 'success' | 'error';
|
|
40
|
-
message: string;
|
|
41
|
-
}): void;
|
|
42
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React surface for the intakes module: the IntakeInterview (one question at a
|
|
3
|
-
* time, agent-led), plus its seams. Everything is callback-driven — no app
|
|
4
|
-
* router, fetch client, or toast import — so any app mounts it and wires it to
|
|
5
|
-
* `./intakes/api` over fetch, for either the per-user onboarding scope or the
|
|
6
|
-
* per-project intake scope.
|
|
7
|
-
*
|
|
8
|
-
* Never re-exported from the package root: `react` is an optional peer (the
|
|
9
|
-
* `web-react` / `teams-react` precedent). DOM access begins only inside
|
|
10
|
-
* component render. A `React.lazy` code-split entry lives at
|
|
11
|
-
* `./intakes-react/lazy`.
|
|
12
|
-
*/
|
|
13
|
-
export * from './contracts';
|
|
14
|
-
export * from './components/index';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Code-split entry for the intakes React surface. Products that don't need the
|
|
3
|
-
* interview UI on initial load import this `React.lazy` handle instead of the
|
|
4
|
-
* component directly, so the interview chunk loads on first render. Mount inside
|
|
5
|
-
* a `<Suspense>` boundary; the product provides the fallback.
|
|
6
|
-
*/
|
|
7
|
-
import type { IntakeInterviewProps } from './contracts';
|
|
8
|
-
export type { IntakeInterviewProps };
|
|
9
|
-
/** Load IntakeInterview component lazily to optimize initial application rendering */
|
|
10
|
-
export declare const IntakeInterviewLazy: import("react").LazyExoticComponent<typeof import("./components").IntakeInterview>;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// src/intakes-react/lazy.tsx
|
|
2
|
-
import { lazy } from "react";
|
|
3
|
-
var IntakeInterviewLazy = lazy(
|
|
4
|
-
() => import("../IntakeInterview-OKT6DCBN.js").then((m) => ({ default: m.IntakeInterview }))
|
|
5
|
-
);
|
|
6
|
-
export {
|
|
7
|
-
IntakeInterviewLazy
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=lazy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/intakes-react/lazy.tsx"],"sourcesContent":["/**\n * Code-split entry for the intakes React surface. Products that don't need the\n * interview UI on initial load import this `React.lazy` handle instead of the\n * component directly, so the interview chunk loads on first render. Mount inside\n * a `<Suspense>` boundary; the product provides the fallback.\n */\n\nimport { lazy } from 'react'\nimport type { IntakeInterviewProps } from './contracts'\n\nexport type { IntakeInterviewProps }\n\n/** Load IntakeInterview component lazily to optimize initial application rendering */\nexport const IntakeInterviewLazy = lazy(\n () => import('./components/IntakeInterview').then((m) => ({ default: m.IntakeInterview })),\n)\n"],"mappings":";AAOA,SAAS,YAAY;AAMd,IAAM,sBAAsB;AAAA,EACjC,MAAM,OAAO,gCAA8B,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE;AAC3F;","names":[]}
|
|
File without changes
|