@case-framework/survey-assistant 0.8.0 → 0.9.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/{authoring-references-DbuOKerg.mjs → authoring-references-CmwLc_C8.mjs} +40 -32
- package/dist/authoring-references-CmwLc_C8.mjs.map +1 -0
- package/dist/capabilities-D55dq-fO.mjs +582 -0
- package/dist/capabilities-D55dq-fO.mjs.map +1 -0
- package/dist/capabilities-default.d.mts +4 -12
- package/dist/capabilities-default.d.mts.map +1 -1
- package/dist/capabilities-default.mjs +2 -2
- package/dist/capabilities-z95e1mti.d.mts +117 -0
- package/dist/capabilities-z95e1mti.d.mts.map +1 -0
- package/dist/{constants-B6HzpEsx.d.mts → constants-HL_klgJl.d.mts} +4 -4
- package/dist/{constants-B6HzpEsx.d.mts.map → constants-HL_klgJl.d.mts.map} +1 -1
- package/dist/{controller-proxy-DEeFl9IA.mjs → controller-proxy-BQ1YsVxJ.mjs} +4 -3
- package/dist/controller-proxy-BQ1YsVxJ.mjs.map +1 -0
- package/dist/{controller-proxy-D7uQfm5f.d.mts → controller-proxy-Cmzdr9tV.d.mts} +4 -4
- package/dist/{controller-proxy-D7uQfm5f.d.mts.map → controller-proxy-Cmzdr9tV.d.mts.map} +1 -1
- package/dist/default-D22AKTqE.mjs +233 -0
- package/dist/default-D22AKTqE.mjs.map +1 -0
- package/dist/{digest-C39WyAWG.d.mts → digest-FnTTDBq2.d.mts} +2 -2
- package/dist/digest-FnTTDBq2.d.mts.map +1 -0
- package/dist/digest.d.mts +1 -1
- package/dist/engine-D950TfvC.mjs +3098 -0
- package/dist/engine-D950TfvC.mjs.map +1 -0
- package/dist/engine.d.mts +4 -3
- package/dist/engine.mjs +3 -3
- package/dist/{index-WB5kfnz0.d.mts → index-B8TLBd1G.d.mts} +8 -6
- package/dist/index-B8TLBd1G.d.mts.map +1 -0
- package/dist/index-CaX3hZmr.d.mts +23813 -0
- package/dist/index-CaX3hZmr.d.mts.map +1 -0
- package/dist/{index-r5riv4md.d.mts → index-CeUlGkoU.d.mts} +27 -6
- package/dist/index-CeUlGkoU.d.mts.map +1 -0
- package/dist/{index-D7wT6P3t.d.mts → index-DYHdvSE8.d.mts} +83 -41
- package/dist/index-DYHdvSE8.d.mts.map +1 -0
- package/dist/lifecycle-DFzxVxpq.d.mts +54346 -0
- package/dist/lifecycle-DFzxVxpq.d.mts.map +1 -0
- package/dist/{memory-thread-repository-DAnOGIB3.mjs → memory-thread-repository-DmLadygY.mjs} +15 -9
- package/dist/{memory-thread-repository-DAnOGIB3.mjs.map → memory-thread-repository-DmLadygY.mjs.map} +1 -1
- package/dist/protocol-BQ7uIDYT.mjs +569 -0
- package/dist/protocol-BQ7uIDYT.mjs.map +1 -0
- package/dist/protocol.d.mts +4 -4
- package/dist/protocol.mjs +3 -2
- package/dist/{react-C_GY-Fsc.mjs → react-DybJ5pWw.mjs} +17 -11
- package/dist/react-DybJ5pWw.mjs.map +1 -0
- package/dist/react-integration.d.mts +1 -1
- package/dist/react-integration.mjs +1 -1
- package/dist/react.d.mts +2 -2
- package/dist/react.mjs +2 -2
- package/dist/references/assistant-operations.md +190 -215
- package/dist/references/core-rules.md +2 -2
- package/dist/references/element-types.md +189 -0
- package/dist/references/expressions.md +215 -238
- package/dist/references/follow-ups.md +151 -0
- package/dist/references/localization.md +26 -12
- package/dist/references/response-variables.md +3 -3
- package/dist/references/rich-text-content.md +22 -43
- package/dist/references/source-material-surveys.md +20 -25
- package/dist/references/survey-data-model.md +36 -117
- package/dist/{request-context-Dg4jSwN1.mjs → request-context-KVh8VjgH.mjs} +4 -4
- package/dist/request-context-KVh8VjgH.mjs.map +1 -0
- package/dist/server-agent.d.mts +28 -7
- package/dist/server-agent.d.mts.map +1 -1
- package/dist/server-agent.mjs +33 -25
- package/dist/server-agent.mjs.map +1 -1
- package/dist/server-runtime.d.mts +6 -5
- package/dist/server-runtime.d.mts.map +1 -1
- package/dist/server-runtime.mjs +3 -3
- package/dist/server-tasks.d.mts +1 -1
- package/dist/server-tasks.mjs +1 -1
- package/dist/server-tools.d.mts +1 -1
- package/dist/server-tools.mjs +1 -1
- package/dist/server.d.mts +7 -6
- package/dist/server.d.mts.map +1 -1
- package/dist/server.mjs +3 -3
- package/dist/{tasks-BZEiwgxA.mjs → tasks-Coh5N027.mjs} +16 -15
- package/dist/tasks-Coh5N027.mjs.map +1 -0
- package/dist/{tasks-B9h3LPam.d.mts → tasks-wb9M-bak.d.mts} +11 -11
- package/dist/{tasks-B9h3LPam.d.mts.map → tasks-wb9M-bak.d.mts.map} +1 -1
- package/dist/{thread-handlers-Bef0td9N.d.mts → thread-handlers-C3Iya92v.d.mts} +6 -5
- package/dist/thread-handlers-C3Iya92v.d.mts.map +1 -0
- package/dist/{tools-CEsv-WoO.mjs → tools-D0KBDolR.mjs} +435 -408
- package/dist/tools-D0KBDolR.mjs.map +1 -0
- package/dist/turn-survey-draft-B34lggSG.d.mts +185 -0
- package/dist/turn-survey-draft-B34lggSG.d.mts.map +1 -0
- package/dist/ui.d.mts +3 -3
- package/dist/ui.d.mts.map +1 -1
- package/dist/ui.mjs +35 -23
- package/dist/ui.mjs.map +1 -1
- package/package.json +7 -7
- package/dist/authoring-references-DbuOKerg.mjs.map +0 -1
- package/dist/capabilities-CmeeAjEc.d.mts +0 -192
- package/dist/capabilities-CmeeAjEc.d.mts.map +0 -1
- package/dist/capabilities-DCMA71PP.mjs +0 -58
- package/dist/capabilities-DCMA71PP.mjs.map +0 -1
- package/dist/controller-proxy-DEeFl9IA.mjs.map +0 -1
- package/dist/default-fhSon2RM.mjs +0 -760
- package/dist/default-fhSon2RM.mjs.map +0 -1
- package/dist/digest-C39WyAWG.d.mts.map +0 -1
- package/dist/engine-nXoCWYpQ.mjs +0 -6888
- package/dist/engine-nXoCWYpQ.mjs.map +0 -1
- package/dist/index-Ciq7vHIs.d.mts +0 -716
- package/dist/index-Ciq7vHIs.d.mts.map +0 -1
- package/dist/index-D7wT6P3t.d.mts.map +0 -1
- package/dist/index-WB5kfnz0.d.mts.map +0 -1
- package/dist/index-r5riv4md.d.mts.map +0 -1
- package/dist/lifecycle-Dm8u7QFh.d.mts +0 -545
- package/dist/lifecycle-Dm8u7QFh.d.mts.map +0 -1
- package/dist/protocol-CF4Bh_Ch.mjs +0 -1255
- package/dist/protocol-CF4Bh_Ch.mjs.map +0 -1
- package/dist/react-C_GY-Fsc.mjs.map +0 -1
- package/dist/references/embedded-forms.md +0 -146
- package/dist/references/item-types.md +0 -641
- package/dist/request-context-Dg4jSwN1.mjs.map +0 -1
- package/dist/tasks-BZEiwgxA.mjs.map +0 -1
- package/dist/thread-handlers-Bef0td9N.d.mts.map +0 -1
- package/dist/tools-CEsv-WoO.mjs.map +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { i as SurveyAssistantCapabilityManifest, r as AssistantElementTypeManifest } from "./capabilities-z95e1mti.mjs";
|
|
2
|
+
import { tt as JsonValue$1 } from "./index-DYHdvSE8.mjs";
|
|
3
|
+
import { Ct as SurveyDocumentVersion, St as SurveyDocumentSnapshot, f as SurveyAssistantTurnFinal, h as SurveyChangeSet, j as SurveyValidationIssue, k as SurveyOperation } from "./lifecycle-DFzxVxpq.mjs";
|
|
4
|
+
import { CompositionSurvey, Content, ContentOwner, ElementRegistry, ReadonlyResponseSlotDefinition, RuntimeElement, Survey, ValueType } from "@case-framework/survey-core";
|
|
5
|
+
//#region src/engine/capabilities.d.ts
|
|
6
|
+
interface AssistantCapabilityReference {
|
|
7
|
+
topic: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
markdown: string;
|
|
10
|
+
}
|
|
11
|
+
interface AssistantElementInspection {
|
|
12
|
+
summary: string;
|
|
13
|
+
details?: JsonValue$1;
|
|
14
|
+
}
|
|
15
|
+
/** Authoring policy supplements the registry; it never supplies a substitute slot/ownership schema. */
|
|
16
|
+
interface AssistantElementCapabilityAdapter {
|
|
17
|
+
manifest: AssistantElementTypeManifest;
|
|
18
|
+
references?: AssistantCapabilityReference[];
|
|
19
|
+
materializePreset?: (presetId: string, locale: string, usedNames: ReadonlySet<string>) => {
|
|
20
|
+
element: RuntimeElement;
|
|
21
|
+
content?: Record<string, Record<string, Content>>;
|
|
22
|
+
};
|
|
23
|
+
/** Deterministic element diagnostics. New errors block edits; unchanged errors
|
|
24
|
+
* on the same element/type may remain during repair. Removed nodes are not
|
|
25
|
+
* validated. Use supportedOperations/supportsOperation to restrict mutations.
|
|
26
|
+
*/
|
|
27
|
+
validateElement?: (element: RuntimeElement) => SurveyValidationIssue[];
|
|
28
|
+
supportsOperation?: (operation: SurveyOperation) => boolean;
|
|
29
|
+
/** Receives a node validated by inspectAssistantElement with the active trusted registry. */
|
|
30
|
+
inspectElement?: (element: RuntimeElement) => AssistantElementInspection;
|
|
31
|
+
}
|
|
32
|
+
interface SurveyAssistantCapabilitySet {
|
|
33
|
+
manifest: SurveyAssistantCapabilityManifest;
|
|
34
|
+
registry: ElementRegistry;
|
|
35
|
+
byElementType: ReadonlyMap<string, AssistantElementCapabilityAdapter>;
|
|
36
|
+
}
|
|
37
|
+
declare const resolveAssistantCapabilityReference: ({ capabilities, elementType, topic }: {
|
|
38
|
+
capabilities: SurveyAssistantCapabilitySet | undefined;
|
|
39
|
+
elementType: string;
|
|
40
|
+
topic: string;
|
|
41
|
+
}) => AssistantCapabilityReference | undefined;
|
|
42
|
+
declare const inspectAssistantElement: ({ capabilities, element }: {
|
|
43
|
+
capabilities: SurveyAssistantCapabilitySet | undefined;
|
|
44
|
+
element: RuntimeElement;
|
|
45
|
+
}) => AssistantElementInspection | undefined;
|
|
46
|
+
declare function createSurveyAssistantCapabilities(registry: ElementRegistry, capabilities: readonly AssistantElementCapabilityAdapter[]): SurveyAssistantCapabilitySet;
|
|
47
|
+
declare const getDeterministicCreateElementTypes: (manifest: SurveyAssistantCapabilityManifest) => string[];
|
|
48
|
+
declare const createUnsupportedElementCapability: ({ displayName, elementType }: {
|
|
49
|
+
displayName: string;
|
|
50
|
+
elementType: string;
|
|
51
|
+
}) => AssistantElementCapabilityAdapter;
|
|
52
|
+
declare class SurveyAssistantCapabilityMismatchError extends Error {
|
|
53
|
+
readonly code = "survey-assistant-capability-mismatch";
|
|
54
|
+
constructor(message?: string);
|
|
55
|
+
}
|
|
56
|
+
declare const assertSurveyAssistantCapabilities: ({ manifest, trustedCapabilities, versionDigest }: {
|
|
57
|
+
manifest: SurveyAssistantCapabilityManifest;
|
|
58
|
+
trustedCapabilities?: SurveyAssistantCapabilitySet;
|
|
59
|
+
versionDigest: string;
|
|
60
|
+
}) => void;
|
|
61
|
+
//#endregion
|
|
62
|
+
//#region src/engine/context.d.ts
|
|
63
|
+
type SurveyAssistantResponseSlotTypes = Record<string, ValueType | undefined>;
|
|
64
|
+
interface SurveyAssistantInspectionOutlineNode {
|
|
65
|
+
itemId: string;
|
|
66
|
+
parentId?: string;
|
|
67
|
+
depth: number;
|
|
68
|
+
itemType: string;
|
|
69
|
+
editorName: string;
|
|
70
|
+
breadcrumb: string;
|
|
71
|
+
itemLabel?: string;
|
|
72
|
+
childCount: number;
|
|
73
|
+
}
|
|
74
|
+
interface SurveyAssistantInspectionFocus {
|
|
75
|
+
focusItemId: string;
|
|
76
|
+
parentItemId?: string;
|
|
77
|
+
pathItemIds: string[];
|
|
78
|
+
siblingItemIds: string[];
|
|
79
|
+
childItemIds: string[];
|
|
80
|
+
}
|
|
81
|
+
interface SurveyAssistantInspectionItemNode {
|
|
82
|
+
itemId: string;
|
|
83
|
+
itemType: string;
|
|
84
|
+
editorName: string;
|
|
85
|
+
breadcrumb: string;
|
|
86
|
+
itemLabel?: string;
|
|
87
|
+
siblingNames: string[];
|
|
88
|
+
translations: Array<{
|
|
89
|
+
locale: string;
|
|
90
|
+
ownerId: string;
|
|
91
|
+
role: string;
|
|
92
|
+
text: string;
|
|
93
|
+
}>;
|
|
94
|
+
elements: Array<{
|
|
95
|
+
elementId: string;
|
|
96
|
+
elementType: string;
|
|
97
|
+
owners: ContentOwner[];
|
|
98
|
+
}>;
|
|
99
|
+
descendants: SurveyAssistantInspectionItemNode[];
|
|
100
|
+
}
|
|
101
|
+
interface SurveyAssistantInspectionItemEntry {
|
|
102
|
+
itemId: string;
|
|
103
|
+
itemType: string;
|
|
104
|
+
editorName: string;
|
|
105
|
+
breadcrumb: string;
|
|
106
|
+
itemLabel?: string;
|
|
107
|
+
path: string[];
|
|
108
|
+
}
|
|
109
|
+
/** Deterministic, request-local lookup data derived from the canonical document. */
|
|
110
|
+
interface SurveyAssistantInspectionIndex {
|
|
111
|
+
surveyKey?: string;
|
|
112
|
+
locales: string[];
|
|
113
|
+
/** All survey items except the structural root group. */
|
|
114
|
+
itemCount: number;
|
|
115
|
+
outline: SurveyAssistantInspectionOutlineNode[];
|
|
116
|
+
focus?: SurveyAssistantInspectionFocus;
|
|
117
|
+
focusItem?: SurveyAssistantInspectionItemNode;
|
|
118
|
+
itemIndex: SurveyAssistantInspectionItemEntry[];
|
|
119
|
+
responseSlots: string[];
|
|
120
|
+
focusItemTreeTruncated: boolean;
|
|
121
|
+
}
|
|
122
|
+
/** Request-local derived state built from one authoritative survey document. */
|
|
123
|
+
interface SurveyAssistantEngineContext {
|
|
124
|
+
document: SurveyDocumentSnapshot;
|
|
125
|
+
version: SurveyDocumentVersion;
|
|
126
|
+
survey: CompositionSurvey;
|
|
127
|
+
/** Exact trusted parsed revision; shared owners, slots and expression locations. */
|
|
128
|
+
model: Survey;
|
|
129
|
+
ui: SurveyDocumentSnapshot["ui"];
|
|
130
|
+
capabilities: SurveyAssistantCapabilityManifest;
|
|
131
|
+
responseSlotTypes: SurveyAssistantResponseSlotTypes;
|
|
132
|
+
responseVariables: readonly ReadonlyResponseSlotDefinition[];
|
|
133
|
+
inspection: SurveyAssistantInspectionIndex;
|
|
134
|
+
trustedCapabilities?: SurveyAssistantCapabilitySet;
|
|
135
|
+
}
|
|
136
|
+
interface CreateSurveyAssistantEngineContextOptions {
|
|
137
|
+
focusItemId?: string;
|
|
138
|
+
}
|
|
139
|
+
declare const deriveResponseSlotTypes: (survey: CompositionSurvey, trustedCapabilities?: SurveyAssistantCapabilitySet) => SurveyAssistantResponseSlotTypes;
|
|
140
|
+
declare const createSurveyAssistantEngineContext: (document: SurveyDocumentSnapshot, trustedCapabilities?: SurveyAssistantCapabilitySet, options?: CreateSurveyAssistantEngineContextOptions) => SurveyAssistantEngineContext;
|
|
141
|
+
//#endregion
|
|
142
|
+
//#region src/engine/mutation-recovery.d.ts
|
|
143
|
+
type RecoveryTargetRefinement = {
|
|
144
|
+
targets: string[];
|
|
145
|
+
replacement: string;
|
|
146
|
+
};
|
|
147
|
+
//#endregion
|
|
148
|
+
//#region src/engine/turn-survey-draft.d.ts
|
|
149
|
+
declare const mutationRecoveryRouteByIssueCode: {
|
|
150
|
+
readonly "expression-patch-requires-specialized-tool": "expression";
|
|
151
|
+
};
|
|
152
|
+
type SurveyAssistantMutationRoute = (typeof mutationRecoveryRouteByIssueCode)[keyof typeof mutationRecoveryRouteByIssueCode];
|
|
153
|
+
/**
|
|
154
|
+
* Request-scoped transactional draft for one assistant response.
|
|
155
|
+
*
|
|
156
|
+
* Mutation tools submit deltas. A successful delta replaces the previous
|
|
157
|
+
* candidate with a newly validated, cumulative change set. A rejected delta
|
|
158
|
+
* leaves the accepted draft intact and blocks authorization until all of its
|
|
159
|
+
* operation/surface obligations have been repaired. Only the latest cumulative
|
|
160
|
+
* candidate can be authorized.
|
|
161
|
+
*/
|
|
162
|
+
declare class TurnSurveyDraft {
|
|
163
|
+
#private;
|
|
164
|
+
readonly turnId: string;
|
|
165
|
+
constructor(turnId?: string);
|
|
166
|
+
initialize(context: SurveyAssistantEngineContext): void;
|
|
167
|
+
stage({ addressedTargets, allowExpressionJsonPatches, handledMutationRoutes, retryOfChangeIds, operations, snapshot, summary }: {
|
|
168
|
+
addressedTargets?: string[];
|
|
169
|
+
allowExpressionJsonPatches?: boolean;
|
|
170
|
+
handledMutationRoutes?: SurveyAssistantMutationRoute[];
|
|
171
|
+
retryOfChangeIds?: string[];
|
|
172
|
+
operations: SurveyOperation[];
|
|
173
|
+
snapshot: SurveyAssistantEngineContext | SurveyDocumentSnapshot | undefined;
|
|
174
|
+
summary: string;
|
|
175
|
+
}): SurveyChangeSet;
|
|
176
|
+
reject(candidate: SurveyChangeSet, addressedTargets?: Iterable<string>, refinements?: RecoveryTargetRefinement[]): SurveyChangeSet;
|
|
177
|
+
finalize(status: SurveyAssistantTurnFinal["status"], createdAt?: string, details?: Pick<SurveyAssistantTurnFinal, "durationMs" | "startedAt" | "terminationReason">): SurveyAssistantTurnFinal;
|
|
178
|
+
getCandidate(changeSetId: string): SurveyChangeSet | undefined;
|
|
179
|
+
get draftOperations(): readonly SurveyOperation[];
|
|
180
|
+
get context(): SurveyAssistantEngineContext | undefined;
|
|
181
|
+
get final(): SurveyAssistantTurnFinal | null;
|
|
182
|
+
}
|
|
183
|
+
//#endregion
|
|
184
|
+
export { resolveAssistantCapabilityReference as C, inspectAssistantElement as S, SurveyAssistantCapabilitySet as _, SurveyAssistantInspectionFocus as a, createUnsupportedElementCapability as b, SurveyAssistantInspectionItemNode as c, createSurveyAssistantEngineContext as d, deriveResponseSlotTypes as f, SurveyAssistantCapabilityMismatchError as g, AssistantElementInspection as h, SurveyAssistantEngineContext as i, SurveyAssistantInspectionOutlineNode as l, AssistantElementCapabilityAdapter as m, TurnSurveyDraft as n, SurveyAssistantInspectionIndex as o, AssistantCapabilityReference as p, CreateSurveyAssistantEngineContextOptions as r, SurveyAssistantInspectionItemEntry as s, SurveyAssistantMutationRoute as t, SurveyAssistantResponseSlotTypes as u, assertSurveyAssistantCapabilities as v, getDeterministicCreateElementTypes as x, createSurveyAssistantCapabilities as y };
|
|
185
|
+
//# sourceMappingURL=turn-survey-draft-B34lggSG.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-survey-draft-B34lggSG.d.mts","names":[],"sources":["../src/engine/capabilities.ts","../src/engine/context.ts","../src/engine/mutation-recovery.ts","../src/engine/turn-survey-draft.ts"],"mappings":";;;;;UAWiB;EACf;EACA;EACA;;UAEe;EACf;EACA,UAAU;;;UAGK;EACf,UAAU;EACV,aAAa;EACb,qBACE,kBACA,gBACA,WAAW;IAEX,SAAS;IACT,UAAU,eAAe,eAAe;;;;;;EAM1C,mBAAmB,SAAS,mBAAmB;EAC/C,qBAAqB,WAAW;;EAEhC,kBAAkB,SAAS,mBAAmB;;UAE/B;EACf,UAAU;EACV,UAAU;EACV,eAAe,oBAAoB;;cAExB,wCAAuC,cAAA,aAAA;EAKlD,cAAc;EACd;EACA;MACD;cAIY,4BAA2B,cAAA;EAItC,cAAc;EACd,SAAS;MACP;iBAcY,kCACd,UAAU,iBACV,uBAAuB,sCACtB;cAkDU,qCAAsC,UAAU;cAIhD,uCAAsC,aAAA;EAIjD;EACA;MACE;cASS,+CAA+C;WACjD;EACG,YAAA;;cAKD,sCAAqC,UAAA,qBAAA;EAKhD,UAAU;EACV,sBAAsB;EACtB;;;;KC/IU,mCAAmC,eAAe;UAE7C;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;IAAQ;IAAgB;IAAiB;IAAc;;EACrE,UAAU;IAAQ;IAAmB;IAAqB,QAAQ;;EAClE,aAAa;;UAGE;EACf;EACA;EACA;EACA;EACA;EACA;;;UAIe;EACf;EACA;;EAEA;EACA,SAAS;EACT,QAAQ;EACR,YAAY;EACZ,WAAW;EACX;EACA;;;UAIe;EACf,UAAU;EACV,SAAS;EACT,QAAQ;;EAER,OAAO;EACP,IAAI;EACJ,cAAc;EACd,mBAAmB;EACnB,4BAA4B;EAC5B,YAAY;EACZ,sBAAsB;;UAGP;EACf;;cAMW,0BACX,QAAQ,mBACR,sBAAsB,iCACrB;cAmLU,qCACX,UAAU,wBACV,sBAAsB,8BACtB,UAAU,8CACT;;;KCiDS;EAA6B;EAAmB;;;;cCtNtD;WAAA;;KAIM,uCACF,+CAA+C;;;;;;;;;;cAiQ5C;;WACF;EAYG,YAAA;EAIZ,WAAW,SAAS;EAQpB,QACE,kBACA,4BACA,uBACA,kBACA,YACA,UACA;IAEA;IACA;IACA,wBAAwB;IACxB;IACA,YAAY;IACZ,UAAU,+BAA+B;IACzC;MACE;EAyPJ,OACE,WAAW,iBACX,mBAAkB,kBAClB,cAAa,6BACZ;EA8CH,SACE,QAAQ,oCACR,oBACA,UAAS,KAAK,8EACb;EAsBH,aAAa,sBAAsB;MAI/B,4BAA4B;MAI5B,WAAW;MAIX,SAAS"}
|
package/dist/ui.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { G as SurveyAssistantThread, n as SurveyAssistantModelOption } from "./index-
|
|
2
|
-
import { N as SurveyAssistantThreadClient, m as SurveyAssistantSupportBundleConfig, n as SurveyAssistantSessionOptions } from "./index-
|
|
3
|
-
import { f as SurveyAssistantThreadLauncher, u as SurveyAssistantLaunchUIContext } from "./controller-proxy-
|
|
1
|
+
import { G as SurveyAssistantThread, n as SurveyAssistantModelOption } from "./index-DYHdvSE8.mjs";
|
|
2
|
+
import { N as SurveyAssistantThreadClient, m as SurveyAssistantSupportBundleConfig, n as SurveyAssistantSessionOptions } from "./index-B8TLBd1G.mjs";
|
|
3
|
+
import { f as SurveyAssistantThreadLauncher, u as SurveyAssistantLaunchUIContext } from "./controller-proxy-Cmzdr9tV.mjs";
|
|
4
4
|
import { ChatStatus, FileUIPart } from "ai";
|
|
5
5
|
import { ComponentProps, FormEvent, ReactNode, Ref } from "react";
|
|
6
6
|
import { LocalizationCatalog, LocalizationMessages, LocalizationTranslate } from "@case-framework/ui-localization";
|
package/dist/ui.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.mts","names":[],"sources":["../src/ui/survey-assistant-panel.tsx","../src/ui/survey-assistant-thread-launcher-prompt.tsx","../src/ui/internal/prompt-input.tsx","../src/ui/survey-assistant-prompt-input.tsx","../src/ui/connected-survey-assistant-panel.tsx","../src/ui/localizations/en.ts","../src/ui/localizations/nl.ts","../src/ui/localization.tsx"],"mappings":";;;;;;;KA+wBY,4BAA4B,KACtC;EAGA;EACA;EACA,gBAAgB;EAChB;EACA,SAAS;EACT,yBAAyB,QAAQ,oCAAoC;EACrE,eAAe;EACf;EACA;EACA,gBAAgB;EAChB;EACA,eAAe;;EAEf,iBAAiB;;
|
|
1
|
+
{"version":3,"file":"ui.d.mts","names":[],"sources":["../src/ui/survey-assistant-panel.tsx","../src/ui/survey-assistant-thread-launcher-prompt.tsx","../src/ui/internal/prompt-input.tsx","../src/ui/survey-assistant-prompt-input.tsx","../src/ui/connected-survey-assistant-panel.tsx","../src/ui/localizations/en.ts","../src/ui/localizations/nl.ts","../src/ui/localization.tsx"],"mappings":";;;;;;;KA+wBY,4BAA4B,KACtC;EAGA;EACA;EACA,gBAAgB;EAChB;EACA,SAAS;EACT,yBAAyB,QAAQ,oCAAoC;EACrE,eAAe;EACf;EACA;EACA,gBAAgB;EAChB;EACA,eAAe;;EAEf,iBAAiB;;qBA02CN,yBAAwB,UAAA,kBAAA,SAIlC,8CAAyB,IAAA;;;UC9nEX;EACf;EACA;EACA;EACA,gBAAgB;EAChB;EACA;EACA,SAAS;EACT,qBAAqB,OAAO;EAC5B;EACA,eAAe;EACf;EACA;EACA,gBAAgB,KAAK;EACrB,cAAc,IAAI;EAClB,gBAAgB;EAChB,YAAY;EACZ;;qBAyEW,wCAAuC,UAAA,kBAAA,SAIjD,6DAAwC,IAAA;;;UCtC1B;EACf;EACA,OAAO;;KAqBG,mBAAmB,KAAK;EAClC;EACA,iBAAiB;EACjB,WACE,SAAS,oBACT,OAAO,UAAU,sCACG;EACtB;;;;UCNe;EACf;EACA;EACA;EACA;EACA;EACA,YAAY,KACV;EAGF;EACA;EACA,QAAQ;EACR,cAAc;EACd;EACA,UAAU;EACV,eAAe;EACf;EACA,SAAS;EACT;EACA,gBAAgB,KACd;EAGF,cAAc,IAAI;EAClB;;qBAGW,+BAA8B,qBAAA,2BAAA,WAAA,UAAA,iBAAA,WAAA,eAAA,SAAA,QAAA,eAAA,QAAA,UAAA,eAAA,aAAA,QAAA,mBAAA,eAAA,aAAA,SAoBxC,oDAA+B,IAAA;;;KC1I7B,mCAAmC,KACtC;KAIU,qCAAqC;EAC/C;EACA;EACA,qBAAqB,OAAO;EAC5B,eAAe;;qBAGJ,kCAAiC,iBAAA,iBAAA,qBAAA,kBAAA,SAM3C,uDAAkC,IAAA;;;qBCtBxB,2BAA2B;;;qBCA3B,2BAA2B;;;qBCa3B,qCAAqC;UAOjC;EACf,UAAU;EACV;EACA,gBAAgB;;qBAGL,wCAAuC,UAAA,UAAA,iBAIjD,6DAAwC,IAAA;qBAyB9B,qCAAoC"}
|
package/dist/ui.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { J as isSurveyAssistantErrorRetryable, Y as parseSurveyAssistantError, et as getSurveyAssistantEmbeddedBinaryMarker, l as surveyAssistantTurnFinalSchema, n as SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE } from "./protocol-BQ7uIDYT.mjs";
|
|
3
3
|
import { n as isSurveyAssistantAttachmentMediaType, t as SURVEY_ASSISTANT_ATTACHMENT_MEDIA_TYPES } from "./attachments-BuNni5vB.mjs";
|
|
4
|
-
import { E as isSurveyAssistantTurnActive, S as parseSurveyChangeSet, T as unwrapSurveyAssistantToolOutput, _ as createSurveyAssistantThreadClient, a as createSurveyAssistantSupportDetails, c as estimateSurveyAssistantSupportBundleBytes, d as prepareSurveyAssistantSupportBundle, i as SURVEY_ASSISTANT_DEFAULT_SUPPORT_BUNDLE_SELECTION, l as generateSurveyAssistantSupportBundle, m as createSurveyAssistantDiagnosticStore, o as createSurveyAssistantSupportMailto, r as useSurveyAssistantModelCatalog, s as downloadSurveyAssistantSupportBundle, t as useSurveyAssistantSession, u as isSurveyAssistantSupportBundleEnabled } from "./react-
|
|
5
|
-
import { a as connectSurveyAssistantThreadLauncher } from "./controller-proxy-
|
|
4
|
+
import { E as isSurveyAssistantTurnActive, S as parseSurveyChangeSet, T as unwrapSurveyAssistantToolOutput, _ as createSurveyAssistantThreadClient, a as createSurveyAssistantSupportDetails, c as estimateSurveyAssistantSupportBundleBytes, d as prepareSurveyAssistantSupportBundle, i as SURVEY_ASSISTANT_DEFAULT_SUPPORT_BUNDLE_SELECTION, l as generateSurveyAssistantSupportBundle, m as createSurveyAssistantDiagnosticStore, o as createSurveyAssistantSupportMailto, r as useSurveyAssistantModelCatalog, s as downloadSurveyAssistantSupportBundle, t as useSurveyAssistantSession, u as isSurveyAssistantSupportBundleEnabled } from "./react-DybJ5pWw.mjs";
|
|
5
|
+
import { a as connectSurveyAssistantThreadLauncher } from "./controller-proxy-BQ1YsVxJ.mjs";
|
|
6
6
|
import { getToolName, isFileUIPart, isReasoningUIPart, isToolUIPart } from "ai";
|
|
7
7
|
import { createContext, createElement, memo, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
8
8
|
import { Collapsible } from "@base-ui/react/collapsible";
|
|
@@ -786,7 +786,7 @@ ChainOfThoughtContent.displayName = "ChainOfThoughtContent";
|
|
|
786
786
|
ChainOfThoughtStep.displayName = "ChainOfThoughtStep";
|
|
787
787
|
//#endregion
|
|
788
788
|
//#region src/ui/internal/button.tsx
|
|
789
|
-
const buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
789
|
+
const buttonVariants = cva("inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
790
790
|
variants: {
|
|
791
791
|
variant: {
|
|
792
792
|
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
@@ -1216,7 +1216,7 @@ function SelectTrigger({ className, size = "default", children, ...props }) {
|
|
|
1216
1216
|
return /* @__PURE__ */ jsxs(Select.Trigger, {
|
|
1217
1217
|
"data-slot": "select-trigger",
|
|
1218
1218
|
"data-size": size,
|
|
1219
|
-
className: cn("flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground", className),
|
|
1219
|
+
className: cn("flex w-fit cursor-pointer items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground", className),
|
|
1220
1220
|
...props,
|
|
1221
1221
|
children: [children, /* @__PURE__ */ jsx(Select.Icon, { render: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" }) })]
|
|
1222
1222
|
});
|
|
@@ -1248,7 +1248,7 @@ function SelectContent({ className, children, side = "bottom", sideOffset = 4, a
|
|
|
1248
1248
|
function SelectItem({ className, children, ...props }) {
|
|
1249
1249
|
return /* @__PURE__ */ jsxs(Select.Item, {
|
|
1250
1250
|
"data-slot": "select-item",
|
|
1251
|
-
className: cn("relative flex w-full cursor-
|
|
1251
|
+
className: cn("relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className),
|
|
1252
1252
|
...props,
|
|
1253
1253
|
children: [/* @__PURE__ */ jsx(Select.ItemText, {
|
|
1254
1254
|
className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap",
|
|
@@ -1633,7 +1633,7 @@ const getAssistantErrorPresentation = ({ authorizationError, error, t }) => {
|
|
|
1633
1633
|
//#endregion
|
|
1634
1634
|
//#region src/ui/internal/checkbox.tsx
|
|
1635
1635
|
const Checkbox$1 = ({ className, ...props }) => /* @__PURE__ */ jsx(Checkbox.Root, {
|
|
1636
|
-
className: cn("relative flex size-4 shrink-0 items-center justify-center rounded border border-input outline-none transition-colors focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/40 data-disabled:cursor-not-allowed data-disabled:opacity-50 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground", className),
|
|
1636
|
+
className: cn("relative flex size-4 shrink-0 cursor-pointer items-center justify-center rounded border border-input outline-none transition-colors focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/40 data-disabled:cursor-not-allowed data-disabled:opacity-50 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground", className),
|
|
1637
1637
|
...props,
|
|
1638
1638
|
children: /* @__PURE__ */ jsx(Checkbox.Indicator, {
|
|
1639
1639
|
className: "grid place-content-center text-current",
|
|
@@ -2417,7 +2417,7 @@ const SurveyAssistantHeaderIdentity = ({ indicatorClassName, status, title }) =>
|
|
|
2417
2417
|
})]
|
|
2418
2418
|
})]
|
|
2419
2419
|
});
|
|
2420
|
-
const SurveyAssistantChatPanel = ({ api, applyPolicy, controller, diagnosticStore, embedded = false, focusPromptOnMount = false, hasEarlierMessages, initialLaunch, initialMessages, modelId, models, onInitialLaunchHandled, onModelChange, onFirstSubmit, onExportDetails, onLoadEarlierMessages, onTurnSettled, onApplyReceipts, onSettleApply, onReviewChangeSets, onTurnActiveChange, resourceId, surveyId, threadControls, threadId, threadTitle }) => {
|
|
2420
|
+
const SurveyAssistantChatPanel = ({ api, applyPolicy, controller, diagnosticStore, embedded = false, focusPromptOnMount = false, hasEarlierMessages, initialLaunch, initialMessages, modelId, models, onInitialLaunchHandled, onModelChange, onFirstSubmit, onExportDetails, onLoadEarlierMessages, onTurnSettled, onApplyReceipts, onSettleApply, onReviewChangeSets, onTurnActiveChange, resourceId, surveyId, threadControls, threadId, threadTitle, threadTask }) => {
|
|
2421
2421
|
const t = useSurveyAssistantTranslation();
|
|
2422
2422
|
const emptyStateContext = getAssistantEmptyStateContext(controller);
|
|
2423
2423
|
const assistantQuickPrompts = getAssistantQuickPrompts(t, emptyStateContext);
|
|
@@ -2434,7 +2434,8 @@ const SurveyAssistantChatPanel = ({ api, applyPolicy, controller, diagnosticStor
|
|
|
2434
2434
|
onTurnActiveChange,
|
|
2435
2435
|
resourceId,
|
|
2436
2436
|
surveyId,
|
|
2437
|
-
threadId
|
|
2437
|
+
threadId,
|
|
2438
|
+
threadTask
|
|
2438
2439
|
});
|
|
2439
2440
|
const hasSubmittedMessageRef = useRef((initialMessages?.length ?? 0) > 0);
|
|
2440
2441
|
const showAssistantError = Boolean(authorizationError) || Boolean(error);
|
|
@@ -2532,19 +2533,26 @@ const SurveyAssistantChatPanel = ({ api, applyPolicy, controller, diagnosticStor
|
|
|
2532
2533
|
}), [handleSubmit]);
|
|
2533
2534
|
useEffect(() => {
|
|
2534
2535
|
if (!initialLaunch) return;
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
modelId
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2536
|
+
let cancelled = false;
|
|
2537
|
+
queueMicrotask(() => {
|
|
2538
|
+
if (cancelled) return;
|
|
2539
|
+
if (initialLaunch.modelId) onModelChange(initialLaunch.modelId);
|
|
2540
|
+
if (submit({
|
|
2541
|
+
files: initialLaunch.files ?? [],
|
|
2542
|
+
modelId: initialLaunch.modelId,
|
|
2543
|
+
text: initialLaunch.prompt,
|
|
2544
|
+
uiContext: initialLaunch.uiContext
|
|
2545
|
+
})) {
|
|
2546
|
+
if (!hasSubmittedMessageRef.current) {
|
|
2547
|
+
hasSubmittedMessageRef.current = true;
|
|
2548
|
+
onFirstSubmit(initialLaunch.prompt);
|
|
2549
|
+
}
|
|
2550
|
+
onInitialLaunchHandled();
|
|
2545
2551
|
}
|
|
2546
|
-
|
|
2547
|
-
|
|
2552
|
+
});
|
|
2553
|
+
return () => {
|
|
2554
|
+
cancelled = true;
|
|
2555
|
+
};
|
|
2548
2556
|
}, [
|
|
2549
2557
|
initialLaunch,
|
|
2550
2558
|
onFirstSubmit,
|
|
@@ -2828,7 +2836,7 @@ const SurveyAssistantPanelContent = ({ embedded = false, modelId, models = [], o
|
|
|
2828
2836
|
setLoadingThread(true);
|
|
2829
2837
|
setThreadError(null);
|
|
2830
2838
|
try {
|
|
2831
|
-
const thread = await threadClient.create(launch?.title);
|
|
2839
|
+
const thread = await threadClient.create(launch?.title, launch?.uiContext?.task);
|
|
2832
2840
|
setPromptFocusThreadId(launch ? void 0 : thread.id);
|
|
2833
2841
|
setThreads((current) => mergeThreads(current, [thread]));
|
|
2834
2842
|
setSelectedThread(thread);
|
|
@@ -3122,7 +3130,10 @@ const SurveyAssistantPanelContent = ({ embedded = false, modelId, models = [], o
|
|
|
3122
3130
|
const current = page.threads.find((thread) => thread.id === selectedThread?.id);
|
|
3123
3131
|
if (current && !editingThreadId) setSelectedThread((selected) => {
|
|
3124
3132
|
if (!selected || selected.id !== current.id) return selected;
|
|
3125
|
-
return selected.title === current.title && selected.titleMode === current.titleMode && selected.updatedAt === current.updatedAt ? selected :
|
|
3133
|
+
return selected.title === current.title && selected.titleMode === current.titleMode && selected.updatedAt === current.updatedAt ? selected : {
|
|
3134
|
+
...selected,
|
|
3135
|
+
...current
|
|
3136
|
+
};
|
|
3126
3137
|
});
|
|
3127
3138
|
} catch (error) {
|
|
3128
3139
|
if (reportError) setThreadError(parseSurveyAssistantError(error).detail ?? t("errors.fallbackDetail"));
|
|
@@ -3375,6 +3386,7 @@ const SurveyAssistantPanelContent = ({ embedded = false, modelId, models = [], o
|
|
|
3375
3386
|
hasEarlierMessages: Boolean(nextMessageCursor),
|
|
3376
3387
|
initialLaunch: initialLaunch?.input,
|
|
3377
3388
|
initialMessages,
|
|
3389
|
+
threadTask: selectedThread.task,
|
|
3378
3390
|
key: selectedThread.id,
|
|
3379
3391
|
modelId,
|
|
3380
3392
|
models,
|