@sqlrooms/ai-config 0.26.0-rc.2 → 0.26.0-rc.4
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/AiSettingsSliceConfig.d.ts +5 -69
- package/dist/AiSettingsSliceConfig.d.ts.map +1 -1
- package/dist/AiSliceConfig.d.ts +120 -329
- package/dist/AiSliceConfig.d.ts.map +1 -1
- package/dist/AiSliceConfig.js +4 -1
- package/dist/AiSliceConfig.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/migration/AnalysisSession-v0.24.14.d.ts +48 -0
- package/dist/migration/AnalysisSession-v0.24.14.d.ts.map +1 -0
- package/dist/migration/AnalysisSession-v0.24.14.js +59 -0
- package/dist/migration/AnalysisSession-v0.24.14.js.map +1 -0
- package/dist/migration/AnalysisSession-v0.25.0.d.ts +86 -0
- package/dist/migration/AnalysisSession-v0.25.0.d.ts.map +1 -0
- package/dist/migration/AnalysisSession-v0.25.0.js +182 -0
- package/dist/migration/AnalysisSession-v0.25.0.js.map +1 -0
- package/dist/migration/AnalysisSession-v0.26.0.d.ts +61 -0
- package/dist/migration/AnalysisSession-v0.26.0.d.ts.map +1 -0
- package/dist/migration/AnalysisSession-v0.26.0.js +150 -0
- package/dist/migration/AnalysisSession-v0.26.0.js.map +1 -0
- package/dist/schema/AnalysisSessionSchema.d.ts +147 -0
- package/dist/schema/AnalysisSessionSchema.d.ts.map +1 -0
- package/dist/schema/AnalysisSessionSchema.js +50 -0
- package/dist/schema/AnalysisSessionSchema.js.map +1 -0
- package/dist/schema/UIMessageSchema.d.ts +252 -0
- package/dist/schema/UIMessageSchema.d.ts.map +1 -0
- package/dist/schema/UIMessageSchema.js +138 -0
- package/dist/schema/UIMessageSchema.js.map +1 -0
- package/package.json +3 -4
- package/dist/AnalysisSessionSchema.d.ts +0 -498
- package/dist/AnalysisSessionSchema.d.ts.map +0 -1
- package/dist/AnalysisSessionSchema.js +0 -88
- package/dist/AnalysisSessionSchema.js.map +0 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration function to convert old format of AnalysisSession to new format.
|
|
3
|
+
*
|
|
4
|
+
* Version: 0.24.14
|
|
5
|
+
* Introduced: Migration from 'ollamaBaseUrl' to 'baseUrl' field
|
|
6
|
+
*
|
|
7
|
+
* SessionSchema:
|
|
8
|
+
*
|
|
9
|
+
* OLD SCHEMA (legacy format):
|
|
10
|
+
* {
|
|
11
|
+
* id: string,
|
|
12
|
+
* name: string,
|
|
13
|
+
* modelProvider: string,
|
|
14
|
+
* model: string,
|
|
15
|
+
* customModelName?: string,
|
|
16
|
+
* ollamaBaseUrl?: string, // OLD FIELD
|
|
17
|
+
* analysisResults: AnalysisResult[],
|
|
18
|
+
* createdAt?: Date
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* NEW SCHEMA (current format):
|
|
22
|
+
* {
|
|
23
|
+
* id: string,
|
|
24
|
+
* name: string,
|
|
25
|
+
* modelProvider: string,
|
|
26
|
+
* model: string,
|
|
27
|
+
* customModelName?: string,
|
|
28
|
+
* baseUrl?: string, // NEW FIELD
|
|
29
|
+
* analysisResults: AnalysisResult[],
|
|
30
|
+
* createdAt?: Date
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* Key changes:
|
|
34
|
+
* - Renamed 'ollamaBaseUrl' field to 'baseUrl' for better generic naming
|
|
35
|
+
* - The field serves the same purpose but with a more provider-agnostic name
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Helper function to detect if data needs migration from v0.24.14 format
|
|
39
|
+
*/
|
|
40
|
+
declare function needsV0_24_14Migration(data: unknown): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Helper function to migrate data from v0.24.14 format
|
|
43
|
+
*/
|
|
44
|
+
declare function migrateFromV0_24_14(data: unknown): {
|
|
45
|
+
baseUrl: string;
|
|
46
|
+
};
|
|
47
|
+
export { needsV0_24_14Migration, migrateFromV0_24_14 };
|
|
48
|
+
//# sourceMappingURL=AnalysisSession-v0.24.14.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnalysisSession-v0.24.14.d.ts","sourceRoot":"","sources":["../../src/migration/AnalysisSession-v0.24.14.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH;;GAEG;AACH,iBAAS,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAOtD;AAED;;GAEG;AACH,iBAAS,mBAAmB,CAAC,IAAI,EAAE,OAAO;;EAUzC;AAGD,OAAO,EAAC,sBAAsB,EAAE,mBAAmB,EAAC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration function to convert old format of AnalysisSession to new format.
|
|
3
|
+
*
|
|
4
|
+
* Version: 0.24.14
|
|
5
|
+
* Introduced: Migration from 'ollamaBaseUrl' to 'baseUrl' field
|
|
6
|
+
*
|
|
7
|
+
* SessionSchema:
|
|
8
|
+
*
|
|
9
|
+
* OLD SCHEMA (legacy format):
|
|
10
|
+
* {
|
|
11
|
+
* id: string,
|
|
12
|
+
* name: string,
|
|
13
|
+
* modelProvider: string,
|
|
14
|
+
* model: string,
|
|
15
|
+
* customModelName?: string,
|
|
16
|
+
* ollamaBaseUrl?: string, // OLD FIELD
|
|
17
|
+
* analysisResults: AnalysisResult[],
|
|
18
|
+
* createdAt?: Date
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* NEW SCHEMA (current format):
|
|
22
|
+
* {
|
|
23
|
+
* id: string,
|
|
24
|
+
* name: string,
|
|
25
|
+
* modelProvider: string,
|
|
26
|
+
* model: string,
|
|
27
|
+
* customModelName?: string,
|
|
28
|
+
* baseUrl?: string, // NEW FIELD
|
|
29
|
+
* analysisResults: AnalysisResult[],
|
|
30
|
+
* createdAt?: Date
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* Key changes:
|
|
34
|
+
* - Renamed 'ollamaBaseUrl' field to 'baseUrl' for better generic naming
|
|
35
|
+
* - The field serves the same purpose but with a more provider-agnostic name
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Helper function to detect if data needs migration from v0.24.14 format
|
|
39
|
+
*/
|
|
40
|
+
function needsV0_24_14Migration(data) {
|
|
41
|
+
return (data !== null &&
|
|
42
|
+
typeof data === 'object' &&
|
|
43
|
+
'ollamaBaseUrl' in data &&
|
|
44
|
+
!('baseUrl' in data));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Helper function to migrate data from v0.24.14 format
|
|
48
|
+
*/
|
|
49
|
+
function migrateFromV0_24_14(data) {
|
|
50
|
+
// migrate from old ollamaBaseUrl to new baseUrl
|
|
51
|
+
const { ollamaBaseUrl, ...rest } = data;
|
|
52
|
+
return {
|
|
53
|
+
...rest,
|
|
54
|
+
baseUrl: ollamaBaseUrl,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
// Export individual migration functions for use in centralized migration
|
|
58
|
+
export { needsV0_24_14Migration, migrateFromV0_24_14 };
|
|
59
|
+
//# sourceMappingURL=AnalysisSession-v0.24.14.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnalysisSession-v0.24.14.js","sourceRoot":"","sources":["../../src/migration/AnalysisSession-v0.24.14.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAa;IAC3C,OAAO,CACL,IAAI,KAAK,IAAI;QACb,OAAO,IAAI,KAAK,QAAQ;QACxB,eAAe,IAAI,IAAI;QACvB,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CACrB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAa;IACxC,gDAAgD;IAChD,MAAM,EAAC,aAAa,EAAE,GAAG,IAAI,EAAC,GAAG,IAGhC,CAAC;IACF,OAAO;QACL,GAAG,IAAI;QACP,OAAO,EAAE,aAAa;KACvB,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,OAAO,EAAC,sBAAsB,EAAE,mBAAmB,EAAC,CAAC","sourcesContent":["/**\n * Migration function to convert old format of AnalysisSession to new format.\n *\n * Version: 0.24.14\n * Introduced: Migration from 'ollamaBaseUrl' to 'baseUrl' field\n *\n * SessionSchema:\n *\n * OLD SCHEMA (legacy format):\n * {\n * id: string,\n * name: string,\n * modelProvider: string,\n * model: string,\n * customModelName?: string,\n * ollamaBaseUrl?: string, // OLD FIELD\n * analysisResults: AnalysisResult[],\n * createdAt?: Date\n * }\n *\n * NEW SCHEMA (current format):\n * {\n * id: string,\n * name: string,\n * modelProvider: string,\n * model: string,\n * customModelName?: string,\n * baseUrl?: string, // NEW FIELD\n * analysisResults: AnalysisResult[],\n * createdAt?: Date\n * }\n *\n * Key changes:\n * - Renamed 'ollamaBaseUrl' field to 'baseUrl' for better generic naming\n * - The field serves the same purpose but with a more provider-agnostic name\n */\n\n/**\n * Helper function to detect if data needs migration from v0.24.14 format\n */\nfunction needsV0_24_14Migration(data: unknown): boolean {\n return (\n data !== null &&\n typeof data === 'object' &&\n 'ollamaBaseUrl' in data &&\n !('baseUrl' in data)\n );\n}\n\n/**\n * Helper function to migrate data from v0.24.14 format\n */\nfunction migrateFromV0_24_14(data: unknown) {\n // migrate from old ollamaBaseUrl to new baseUrl\n const {ollamaBaseUrl, ...rest} = data as {ollamaBaseUrl: string} & Record<\n string,\n unknown\n >;\n return {\n ...rest,\n baseUrl: ollamaBaseUrl,\n };\n}\n\n// Export individual migration functions for use in centralized migration\nexport {needsV0_24_14Migration, migrateFromV0_24_14};\n"]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration function to migrate AnalysisResult.streamMessage to new streamMessage format.
|
|
3
|
+
*
|
|
4
|
+
* Version: 0.25.0
|
|
5
|
+
* Introduced: migrate old openassistant toolCallMessages to Vercel AI SDK v4 toolInvocation format
|
|
6
|
+
*
|
|
7
|
+
* AnalysisResult:
|
|
8
|
+
* {
|
|
9
|
+
* id: string,
|
|
10
|
+
* prompt: string,
|
|
11
|
+
* errorMessage?: ErrorMessageSchema,
|
|
12
|
+
* isCompleted: boolean,
|
|
13
|
+
* streamMessage: StreamMessageSchema, //<-- migrate from old streamMessage to new streamMessage
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* OLD SCHEMA (legacy format, introduced in ai package v0.8.0):
|
|
17
|
+
* {
|
|
18
|
+
* id: string,
|
|
19
|
+
* prompt: string,
|
|
20
|
+
* isCompleted: boolean,
|
|
21
|
+
* errorMessage?: { error: string },
|
|
22
|
+
* streamMessage: {
|
|
23
|
+
* text: string, // DEPRECATED
|
|
24
|
+
* reasoning?: string, // DEPRECATED
|
|
25
|
+
* analysis?: string, // DEPRECATED
|
|
26
|
+
* toolCallMessages: Array<{ // DEPRECATED
|
|
27
|
+
* toolCallId: string,
|
|
28
|
+
* toolName: string,
|
|
29
|
+
* args: unknown,
|
|
30
|
+
* llmResult: unknown,
|
|
31
|
+
* additionalData?: unknown,
|
|
32
|
+
* isCompleted: boolean,
|
|
33
|
+
* }>,
|
|
34
|
+
* parts: Array<{
|
|
35
|
+
* | { type: 'text', text: string }
|
|
36
|
+
* | { // OLD FORMAT
|
|
37
|
+
* type: 'tool',
|
|
38
|
+
* toolCallMessages: Array<{
|
|
39
|
+
* toolCallId: string,
|
|
40
|
+
* toolName: string,
|
|
41
|
+
* args: unknown,
|
|
42
|
+
* llmResult: unknown,
|
|
43
|
+
* additionalData?: unknown,
|
|
44
|
+
* isCompleted: boolean,
|
|
45
|
+
* }>,
|
|
46
|
+
* }
|
|
47
|
+
* }>,
|
|
48
|
+
* },
|
|
49
|
+
* }
|
|
50
|
+
*
|
|
51
|
+
* NEW SCHEMA (current format):
|
|
52
|
+
* {
|
|
53
|
+
* id: string,
|
|
54
|
+
* prompt: string,
|
|
55
|
+
* isCompleted: boolean,
|
|
56
|
+
* errorMessage?: { error: string },
|
|
57
|
+
* streamMessage: {
|
|
58
|
+
* parts: Array<{
|
|
59
|
+
* | { type: 'text', text: string }
|
|
60
|
+
* | { // NEW FORMAT
|
|
61
|
+
* type: 'tool-invocation',
|
|
62
|
+
* toolInvocation: {
|
|
63
|
+
* toolCallId: string,
|
|
64
|
+
* toolName: string,
|
|
65
|
+
* args: unknown,
|
|
66
|
+
* state: 'call' | 'result',
|
|
67
|
+
* result: unknown,
|
|
68
|
+
* },
|
|
69
|
+
* additionalData?: unknown,
|
|
70
|
+
* isCompleted: boolean,
|
|
71
|
+
* }
|
|
72
|
+
* }>,
|
|
73
|
+
* },
|
|
74
|
+
* }
|
|
75
|
+
*
|
|
76
|
+
*/
|
|
77
|
+
/**
|
|
78
|
+
* Helper function to detect if session needs migration from v0.25.0 format
|
|
79
|
+
*/
|
|
80
|
+
declare function needsV0_25_0Migration(data: unknown): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Helper function to migrate session data from v0.25.0 format
|
|
83
|
+
*/
|
|
84
|
+
declare function migrateFromV0_25_0(data: unknown): unknown;
|
|
85
|
+
export { needsV0_25_0Migration, migrateFromV0_25_0 };
|
|
86
|
+
//# sourceMappingURL=AnalysisSession-v0.25.0.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnalysisSession-v0.25.0.d.ts","sourceRoot":"","sources":["../../src/migration/AnalysisSession-v0.25.0.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAoEH;;GAEG;AACH,iBAAS,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAuBrD;AAED;;GAEG;AACH,iBAAS,kBAAkB,CAAC,IAAI,EAAE,OAAO,WAyBxC;AAGD,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,CAAC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration function to migrate AnalysisResult.streamMessage to new streamMessage format.
|
|
3
|
+
*
|
|
4
|
+
* Version: 0.25.0
|
|
5
|
+
* Introduced: migrate old openassistant toolCallMessages to Vercel AI SDK v4 toolInvocation format
|
|
6
|
+
*
|
|
7
|
+
* AnalysisResult:
|
|
8
|
+
* {
|
|
9
|
+
* id: string,
|
|
10
|
+
* prompt: string,
|
|
11
|
+
* errorMessage?: ErrorMessageSchema,
|
|
12
|
+
* isCompleted: boolean,
|
|
13
|
+
* streamMessage: StreamMessageSchema, //<-- migrate from old streamMessage to new streamMessage
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* OLD SCHEMA (legacy format, introduced in ai package v0.8.0):
|
|
17
|
+
* {
|
|
18
|
+
* id: string,
|
|
19
|
+
* prompt: string,
|
|
20
|
+
* isCompleted: boolean,
|
|
21
|
+
* errorMessage?: { error: string },
|
|
22
|
+
* streamMessage: {
|
|
23
|
+
* text: string, // DEPRECATED
|
|
24
|
+
* reasoning?: string, // DEPRECATED
|
|
25
|
+
* analysis?: string, // DEPRECATED
|
|
26
|
+
* toolCallMessages: Array<{ // DEPRECATED
|
|
27
|
+
* toolCallId: string,
|
|
28
|
+
* toolName: string,
|
|
29
|
+
* args: unknown,
|
|
30
|
+
* llmResult: unknown,
|
|
31
|
+
* additionalData?: unknown,
|
|
32
|
+
* isCompleted: boolean,
|
|
33
|
+
* }>,
|
|
34
|
+
* parts: Array<{
|
|
35
|
+
* | { type: 'text', text: string }
|
|
36
|
+
* | { // OLD FORMAT
|
|
37
|
+
* type: 'tool',
|
|
38
|
+
* toolCallMessages: Array<{
|
|
39
|
+
* toolCallId: string,
|
|
40
|
+
* toolName: string,
|
|
41
|
+
* args: unknown,
|
|
42
|
+
* llmResult: unknown,
|
|
43
|
+
* additionalData?: unknown,
|
|
44
|
+
* isCompleted: boolean,
|
|
45
|
+
* }>,
|
|
46
|
+
* }
|
|
47
|
+
* }>,
|
|
48
|
+
* },
|
|
49
|
+
* }
|
|
50
|
+
*
|
|
51
|
+
* NEW SCHEMA (current format):
|
|
52
|
+
* {
|
|
53
|
+
* id: string,
|
|
54
|
+
* prompt: string,
|
|
55
|
+
* isCompleted: boolean,
|
|
56
|
+
* errorMessage?: { error: string },
|
|
57
|
+
* streamMessage: {
|
|
58
|
+
* parts: Array<{
|
|
59
|
+
* | { type: 'text', text: string }
|
|
60
|
+
* | { // NEW FORMAT
|
|
61
|
+
* type: 'tool-invocation',
|
|
62
|
+
* toolInvocation: {
|
|
63
|
+
* toolCallId: string,
|
|
64
|
+
* toolName: string,
|
|
65
|
+
* args: unknown,
|
|
66
|
+
* state: 'call' | 'result',
|
|
67
|
+
* result: unknown,
|
|
68
|
+
* },
|
|
69
|
+
* additionalData?: unknown,
|
|
70
|
+
* isCompleted: boolean,
|
|
71
|
+
* }
|
|
72
|
+
* }>,
|
|
73
|
+
* },
|
|
74
|
+
* }
|
|
75
|
+
*
|
|
76
|
+
*/
|
|
77
|
+
/**
|
|
78
|
+
* Helper function to detect if streamMessage needs migration from v0.25.0 format
|
|
79
|
+
*/
|
|
80
|
+
function needsStreamMessageMigration(streamMessage) {
|
|
81
|
+
return (streamMessage !== null &&
|
|
82
|
+
typeof streamMessage === 'object' &&
|
|
83
|
+
'toolCallMessages' in streamMessage &&
|
|
84
|
+
'parts' in streamMessage);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Helper function to migrate a single streamMessage from v0.25.0 format
|
|
88
|
+
*/
|
|
89
|
+
function migrateStreamMessage(streamMessage) {
|
|
90
|
+
if (!needsStreamMessageMigration(streamMessage)) {
|
|
91
|
+
return streamMessage;
|
|
92
|
+
}
|
|
93
|
+
const parts = streamMessage.parts;
|
|
94
|
+
const newParts = [];
|
|
95
|
+
for (const part of parts) {
|
|
96
|
+
if (part.type === 'text') {
|
|
97
|
+
const text = part.text;
|
|
98
|
+
newParts.push({
|
|
99
|
+
type: 'text',
|
|
100
|
+
text,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else if (part.type === 'tool') {
|
|
104
|
+
const toolCallMessages = part.toolCallMessages;
|
|
105
|
+
for (const toolCallMessage of toolCallMessages) {
|
|
106
|
+
const toolCallId = toolCallMessage.toolCallId;
|
|
107
|
+
const toolName = toolCallMessage.toolName;
|
|
108
|
+
const args = toolCallMessage.args;
|
|
109
|
+
const isCompleted = toolCallMessage.isCompleted;
|
|
110
|
+
const llmResult = toolCallMessage.llmResult;
|
|
111
|
+
const additionalData = toolCallMessage.additionalData;
|
|
112
|
+
const toolInvocation = {
|
|
113
|
+
toolCallId,
|
|
114
|
+
toolName,
|
|
115
|
+
args,
|
|
116
|
+
state: isCompleted ? 'result' : 'call',
|
|
117
|
+
result: llmResult,
|
|
118
|
+
};
|
|
119
|
+
newParts.push({
|
|
120
|
+
type: 'tool-invocation',
|
|
121
|
+
toolInvocation,
|
|
122
|
+
additionalData,
|
|
123
|
+
isCompleted,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
parts: newParts,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Helper function to detect if session needs migration from v0.25.0 format
|
|
134
|
+
*/
|
|
135
|
+
function needsV0_25_0Migration(data) {
|
|
136
|
+
if (data === null ||
|
|
137
|
+
typeof data !== 'object' ||
|
|
138
|
+
!('analysisResults' in data)) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
const session = data;
|
|
142
|
+
const analysisResults = session.analysisResults;
|
|
143
|
+
if (!Array.isArray(analysisResults)) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
// Check if any analysisResult has a streamMessage that needs migration
|
|
147
|
+
return analysisResults.some((result) => {
|
|
148
|
+
if (result && typeof result === 'object' && 'streamMessage' in result) {
|
|
149
|
+
return needsStreamMessageMigration(result.streamMessage);
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Helper function to migrate session data from v0.25.0 format
|
|
156
|
+
*/
|
|
157
|
+
function migrateFromV0_25_0(data) {
|
|
158
|
+
if (!needsV0_25_0Migration(data)) {
|
|
159
|
+
return data;
|
|
160
|
+
}
|
|
161
|
+
const session = data;
|
|
162
|
+
const analysisResults = session.analysisResults;
|
|
163
|
+
const migratedAnalysisResults = analysisResults.map((result) => {
|
|
164
|
+
if (result && typeof result === 'object' && 'streamMessage' in result) {
|
|
165
|
+
const streamMessage = result.streamMessage;
|
|
166
|
+
if (needsStreamMessageMigration(streamMessage)) {
|
|
167
|
+
return {
|
|
168
|
+
...result,
|
|
169
|
+
streamMessage: migrateStreamMessage(streamMessage),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return result;
|
|
174
|
+
});
|
|
175
|
+
return {
|
|
176
|
+
...session,
|
|
177
|
+
analysisResults: migratedAnalysisResults,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
// Export individual migration functions for use in centralized migration
|
|
181
|
+
export { needsV0_25_0Migration, migrateFromV0_25_0 };
|
|
182
|
+
//# sourceMappingURL=AnalysisSession-v0.25.0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnalysisSession-v0.25.0.js","sourceRoot":"","sources":["../../src/migration/AnalysisSession-v0.25.0.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Migration function to migrate AnalysisResult.streamMessage to new streamMessage format.\n *\n * Version: 0.25.0\n * Introduced: migrate old openassistant toolCallMessages to Vercel AI SDK v4 toolInvocation format\n *\n * AnalysisResult:\n * {\n * id: string,\n * prompt: string,\n * errorMessage?: ErrorMessageSchema,\n * isCompleted: boolean,\n * streamMessage: StreamMessageSchema, //<-- migrate from old streamMessage to new streamMessage\n * }\n *\n * OLD SCHEMA (legacy format, introduced in ai package v0.8.0):\n * {\n * id: string,\n * prompt: string,\n * isCompleted: boolean,\n * errorMessage?: { error: string },\n * streamMessage: {\n * text: string, // DEPRECATED\n * reasoning?: string, // DEPRECATED\n * analysis?: string, // DEPRECATED\n * toolCallMessages: Array<{ // DEPRECATED\n * toolCallId: string,\n * toolName: string,\n * args: unknown,\n * llmResult: unknown,\n * additionalData?: unknown,\n * isCompleted: boolean,\n * }>,\n * parts: Array<{\n * | { type: 'text', text: string }\n * | { // OLD FORMAT\n * type: 'tool',\n * toolCallMessages: Array<{\n * toolCallId: string,\n * toolName: string,\n * args: unknown,\n * llmResult: unknown,\n * additionalData?: unknown,\n * isCompleted: boolean,\n * }>,\n * }\n * }>,\n * },\n * }\n *\n * NEW SCHEMA (current format):\n * {\n * id: string,\n * prompt: string,\n * isCompleted: boolean,\n * errorMessage?: { error: string },\n * streamMessage: {\n * parts: Array<{\n * | { type: 'text', text: string }\n * | { // NEW FORMAT\n * type: 'tool-invocation',\n * toolInvocation: {\n * toolCallId: string,\n * toolName: string,\n * args: unknown,\n * state: 'call' | 'result',\n * result: unknown,\n * },\n * additionalData?: unknown,\n * isCompleted: boolean,\n * }\n * }>,\n * },\n * }\n *\n */\n\n/**\n * Helper function to detect if streamMessage needs migration from v0.25.0 format\n */\nfunction needsStreamMessageMigration(streamMessage: unknown): boolean {\n return (\n streamMessage !== null &&\n typeof streamMessage === 'object' &&\n 'toolCallMessages' in streamMessage &&\n 'parts' in streamMessage\n );\n}\n\n/**\n * Helper function to migrate a single streamMessage from v0.25.0 format\n */\nfunction migrateStreamMessage(streamMessage: unknown) {\n if (!needsStreamMessageMigration(streamMessage)) {\n return streamMessage;\n }\n\n const parts = (streamMessage as {parts: Record<string, unknown>[]}).parts;\n const newParts = [];\n\n for (const part of parts) {\n if (part.type === 'text') {\n const text = part.text;\n newParts.push({\n type: 'text',\n text,\n });\n } else if (part.type === 'tool') {\n const toolCallMessages = part.toolCallMessages as Record<\n string,\n unknown\n >[];\n for (const toolCallMessage of toolCallMessages) {\n const toolCallId = toolCallMessage.toolCallId;\n const toolName = toolCallMessage.toolName;\n const args = toolCallMessage.args;\n const isCompleted = toolCallMessage.isCompleted;\n const llmResult = toolCallMessage.llmResult;\n const additionalData = toolCallMessage.additionalData;\n\n const toolInvocation = {\n toolCallId,\n toolName,\n args,\n state: isCompleted ? 'result' : 'call',\n result: llmResult,\n };\n\n newParts.push({\n type: 'tool-invocation',\n toolInvocation,\n additionalData,\n isCompleted,\n });\n }\n }\n }\n\n return {\n parts: newParts,\n };\n}\n\n/**\n * Helper function to detect if session needs migration from v0.25.0 format\n */\nfunction needsV0_25_0Migration(data: unknown): boolean {\n if (\n data === null ||\n typeof data !== 'object' ||\n !('analysisResults' in data)\n ) {\n return false;\n }\n\n const session = data as Record<string, unknown>;\n const analysisResults = session.analysisResults;\n\n if (!Array.isArray(analysisResults)) {\n return false;\n }\n\n // Check if any analysisResult has a streamMessage that needs migration\n return analysisResults.some((result) => {\n if (result && typeof result === 'object' && 'streamMessage' in result) {\n return needsStreamMessageMigration(result.streamMessage);\n }\n return false;\n });\n}\n\n/**\n * Helper function to migrate session data from v0.25.0 format\n */\nfunction migrateFromV0_25_0(data: unknown) {\n if (!needsV0_25_0Migration(data)) {\n return data;\n }\n\n const session = data as Record<string, unknown>;\n const analysisResults = session.analysisResults as Record<string, unknown>[];\n\n const migratedAnalysisResults = analysisResults.map((result) => {\n if (result && typeof result === 'object' && 'streamMessage' in result) {\n const streamMessage = result.streamMessage;\n if (needsStreamMessageMigration(streamMessage)) {\n return {\n ...result,\n streamMessage: migrateStreamMessage(streamMessage),\n };\n }\n }\n return result;\n });\n\n return {\n ...session,\n analysisResults: migratedAnalysisResults,\n };\n}\n\n// Export individual migration functions for use in centralized migration\nexport {needsV0_25_0Migration, migrateFromV0_25_0};\n"]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration function to convert old AnalysisSession to new format
|
|
3
|
+
*
|
|
4
|
+
* Version: 0.26.x
|
|
5
|
+
*
|
|
6
|
+
* Changes:
|
|
7
|
+
* - add uiMessages (AI SDK v5) to AnalysisSession along with legacy analysisResults
|
|
8
|
+
* - add toolAdditionalData to AnalysisSession to store tool call additional data per session
|
|
9
|
+
* - deprecate the following properties in AnalysisResult:
|
|
10
|
+
* - streamMessage
|
|
11
|
+
*
|
|
12
|
+
* OLD SCHEMA (legacy format):
|
|
13
|
+
* {
|
|
14
|
+
* id: string,
|
|
15
|
+
* name: string,
|
|
16
|
+
* modelProvider: string,
|
|
17
|
+
* model: string,
|
|
18
|
+
* customModelName?: string,
|
|
19
|
+
* baseUrl?: string,
|
|
20
|
+
* createdAt?: Date
|
|
21
|
+
* analysisResults: Array<{
|
|
22
|
+
* id: string,
|
|
23
|
+
* prompt: string,
|
|
24
|
+
* isCompleted: boolean,
|
|
25
|
+
* errorMessage?: { error: string },
|
|
26
|
+
* streamMessage: StreamMessageSchema, //<-- OLD FIELD, DEPRECATED
|
|
27
|
+
* }>,
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* NEW SCHEMA (current format):
|
|
31
|
+
* {
|
|
32
|
+
* id: string,
|
|
33
|
+
* name: string,
|
|
34
|
+
* modelProvider: string,
|
|
35
|
+
* model: string,
|
|
36
|
+
* customModelName?: string,
|
|
37
|
+
* baseUrl?: string,
|
|
38
|
+
* createdAt?: Date
|
|
39
|
+
* analysisResults: Array<{
|
|
40
|
+
* id: string,
|
|
41
|
+
* prompt: string,
|
|
42
|
+
* isCompleted: boolean,
|
|
43
|
+
* errorMessage?: { error: string },
|
|
44
|
+
* }>,
|
|
45
|
+
* uiMessages: Array<UIMessageSchema>, //<-- NEW FIELD
|
|
46
|
+
* toolAdditionalData: Record<string, unknown>, //<-- NEW FIELD
|
|
47
|
+
* }
|
|
48
|
+
*/
|
|
49
|
+
type UnknownRecord = Record<string, unknown>;
|
|
50
|
+
/** Detect if session needs migration to UI messages */
|
|
51
|
+
declare function needsV0_26_0Migration(data: unknown): boolean;
|
|
52
|
+
/** Perform migration to AI SDK v5 uiMessages/toolAdditionalData */
|
|
53
|
+
declare function migrateFromV0_26_0(data: unknown): {
|
|
54
|
+
analysisResults: {
|
|
55
|
+
[x: string]: unknown;
|
|
56
|
+
}[];
|
|
57
|
+
uiMessages: UnknownRecord[];
|
|
58
|
+
toolAdditionalData: UnknownRecord;
|
|
59
|
+
};
|
|
60
|
+
export { needsV0_26_0Migration, migrateFromV0_26_0 };
|
|
61
|
+
//# sourceMappingURL=AnalysisSession-v0.26.0.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnalysisSession-v0.26.0.d.ts","sourceRoot":"","sources":["../../src/migration/AnalysisSession-v0.26.0.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAM7C,uDAAuD;AACvD,iBAAS,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAQrD;AAED,mEAAmE;AACnE,iBAAS,kBAAkB,CAAC,IAAI,EAAE,OAAO;;;;;;EA8FxC;AAED,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration function to convert old AnalysisSession to new format
|
|
3
|
+
*
|
|
4
|
+
* Version: 0.26.x
|
|
5
|
+
*
|
|
6
|
+
* Changes:
|
|
7
|
+
* - add uiMessages (AI SDK v5) to AnalysisSession along with legacy analysisResults
|
|
8
|
+
* - add toolAdditionalData to AnalysisSession to store tool call additional data per session
|
|
9
|
+
* - deprecate the following properties in AnalysisResult:
|
|
10
|
+
* - streamMessage
|
|
11
|
+
*
|
|
12
|
+
* OLD SCHEMA (legacy format):
|
|
13
|
+
* {
|
|
14
|
+
* id: string,
|
|
15
|
+
* name: string,
|
|
16
|
+
* modelProvider: string,
|
|
17
|
+
* model: string,
|
|
18
|
+
* customModelName?: string,
|
|
19
|
+
* baseUrl?: string,
|
|
20
|
+
* createdAt?: Date
|
|
21
|
+
* analysisResults: Array<{
|
|
22
|
+
* id: string,
|
|
23
|
+
* prompt: string,
|
|
24
|
+
* isCompleted: boolean,
|
|
25
|
+
* errorMessage?: { error: string },
|
|
26
|
+
* streamMessage: StreamMessageSchema, //<-- OLD FIELD, DEPRECATED
|
|
27
|
+
* }>,
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* NEW SCHEMA (current format):
|
|
31
|
+
* {
|
|
32
|
+
* id: string,
|
|
33
|
+
* name: string,
|
|
34
|
+
* modelProvider: string,
|
|
35
|
+
* model: string,
|
|
36
|
+
* customModelName?: string,
|
|
37
|
+
* baseUrl?: string,
|
|
38
|
+
* createdAt?: Date
|
|
39
|
+
* analysisResults: Array<{
|
|
40
|
+
* id: string,
|
|
41
|
+
* prompt: string,
|
|
42
|
+
* isCompleted: boolean,
|
|
43
|
+
* errorMessage?: { error: string },
|
|
44
|
+
* }>,
|
|
45
|
+
* uiMessages: Array<UIMessageSchema>, //<-- NEW FIELD
|
|
46
|
+
* toolAdditionalData: Record<string, unknown>, //<-- NEW FIELD
|
|
47
|
+
* }
|
|
48
|
+
*/
|
|
49
|
+
function isObject(value) {
|
|
50
|
+
return typeof value === 'object' && value !== null;
|
|
51
|
+
}
|
|
52
|
+
/** Detect if session needs migration to UI messages */
|
|
53
|
+
function needsV0_26_0Migration(data) {
|
|
54
|
+
if (!isObject(data))
|
|
55
|
+
return false;
|
|
56
|
+
const uiMessages = data.uiMessages;
|
|
57
|
+
const toolAdditionalData = data.toolAdditionalData;
|
|
58
|
+
// Session needs migration if either field is missing
|
|
59
|
+
return !Array.isArray(uiMessages) || toolAdditionalData === undefined;
|
|
60
|
+
}
|
|
61
|
+
/** Perform migration to AI SDK v5 uiMessages/toolAdditionalData */
|
|
62
|
+
function migrateFromV0_26_0(data) {
|
|
63
|
+
const session = { ...data };
|
|
64
|
+
const analysisResults = session.analysisResults || [];
|
|
65
|
+
const existingUiMessages = session.uiMessages || [];
|
|
66
|
+
const toolAdditionalData = session.toolAdditionalData || {};
|
|
67
|
+
const synthesizedMessages = [];
|
|
68
|
+
for (const result of analysisResults) {
|
|
69
|
+
if (!isObject(result))
|
|
70
|
+
continue;
|
|
71
|
+
const id = result.id || '';
|
|
72
|
+
const prompt = result.prompt || '';
|
|
73
|
+
const streamMessage = result.streamMessage || {};
|
|
74
|
+
const parts = streamMessage.parts || [];
|
|
75
|
+
// Create user message for the prompt
|
|
76
|
+
if (prompt) {
|
|
77
|
+
synthesizedMessages.push({
|
|
78
|
+
id,
|
|
79
|
+
role: 'user',
|
|
80
|
+
parts: [{ type: 'text', text: prompt }],
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// Create assistant message mapping the parts
|
|
84
|
+
const assistantParts = [];
|
|
85
|
+
for (const part of parts) {
|
|
86
|
+
if (part.type === 'text') {
|
|
87
|
+
const text = part.text;
|
|
88
|
+
assistantParts.push({ type: 'text', text });
|
|
89
|
+
}
|
|
90
|
+
else if (part.type === 'tool-invocation') {
|
|
91
|
+
const toolInvocation = part.toolInvocation;
|
|
92
|
+
if (isObject(toolInvocation)) {
|
|
93
|
+
const toolCallId = toolInvocation.toolCallId;
|
|
94
|
+
const toolName = toolInvocation.toolName;
|
|
95
|
+
const state = toolInvocation.state;
|
|
96
|
+
const args = toolInvocation.args;
|
|
97
|
+
const llmResult = toolInvocation.result;
|
|
98
|
+
const additional = part.additionalData;
|
|
99
|
+
// Persist additionalData per toolCallId into session-level toolAdditionalData
|
|
100
|
+
if (toolCallId && additional !== undefined && toolAdditionalData) {
|
|
101
|
+
toolAdditionalData[toolCallId] = additional;
|
|
102
|
+
}
|
|
103
|
+
// Map state to AI SDK v5 tool-* parts
|
|
104
|
+
if (state === 'call') {
|
|
105
|
+
assistantParts.push({
|
|
106
|
+
type: `tool-${toolName}`,
|
|
107
|
+
toolCallId,
|
|
108
|
+
state: 'input-available',
|
|
109
|
+
input: args,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// Fallback: treat other states as result
|
|
114
|
+
assistantParts.push({
|
|
115
|
+
type: `tool-${toolName}`,
|
|
116
|
+
toolCallId,
|
|
117
|
+
state: 'output-available',
|
|
118
|
+
input: args,
|
|
119
|
+
output: llmResult,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Unknown legacy part types are ignored
|
|
125
|
+
}
|
|
126
|
+
if (assistantParts.length > 0) {
|
|
127
|
+
synthesizedMessages.push({
|
|
128
|
+
id: `${id}-assistant`,
|
|
129
|
+
role: 'assistant',
|
|
130
|
+
parts: assistantParts,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Remove deprecated streamMessage field from analysisResults
|
|
135
|
+
const cleanedAnalysisResults = analysisResults.map((result) => {
|
|
136
|
+
if (!isObject(result))
|
|
137
|
+
return result;
|
|
138
|
+
// eslint-disable-line @typescript-eslint/no-unused-vars
|
|
139
|
+
const { streamMessage, ...rest } = result;
|
|
140
|
+
return rest;
|
|
141
|
+
});
|
|
142
|
+
return {
|
|
143
|
+
...session,
|
|
144
|
+
analysisResults: cleanedAnalysisResults,
|
|
145
|
+
uiMessages: [...existingUiMessages, ...synthesizedMessages],
|
|
146
|
+
toolAdditionalData,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export { needsV0_26_0Migration, migrateFromV0_26_0 };
|
|
150
|
+
//# sourceMappingURL=AnalysisSession-v0.26.0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnalysisSession-v0.26.0.js","sourceRoot":"","sources":["../../src/migration/AnalysisSession-v0.26.0.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Migration function to convert old AnalysisSession to new format\n *\n * Version: 0.26.x\n *\n * Changes:\n * - add uiMessages (AI SDK v5) to AnalysisSession along with legacy analysisResults\n * - add toolAdditionalData to AnalysisSession to store tool call additional data per session\n * - deprecate the following properties in AnalysisResult:\n * - streamMessage\n *\n * OLD SCHEMA (legacy format):\n * {\n * id: string,\n * name: string,\n * modelProvider: string,\n * model: string,\n * customModelName?: string,\n * baseUrl?: string,\n * createdAt?: Date\n * analysisResults: Array<{\n * id: string,\n * prompt: string,\n * isCompleted: boolean,\n * errorMessage?: { error: string },\n * streamMessage: StreamMessageSchema, //<-- OLD FIELD, DEPRECATED\n * }>,\n * }\n *\n * NEW SCHEMA (current format):\n * {\n * id: string,\n * name: string,\n * modelProvider: string,\n * model: string,\n * customModelName?: string,\n * baseUrl?: string,\n * createdAt?: Date\n * analysisResults: Array<{\n * id: string,\n * prompt: string,\n * isCompleted: boolean,\n * errorMessage?: { error: string },\n * }>,\n * uiMessages: Array<UIMessageSchema>, //<-- NEW FIELD\n * toolAdditionalData: Record<string, unknown>, //<-- NEW FIELD\n * }\n */\n\ntype UnknownRecord = Record<string, unknown>;\n\nfunction isObject(value: unknown): value is UnknownRecord {\n return typeof value === 'object' && value !== null;\n}\n\n/** Detect if session needs migration to UI messages */\nfunction needsV0_26_0Migration(data: unknown): boolean {\n if (!isObject(data)) return false;\n\n const uiMessages = (data as UnknownRecord).uiMessages;\n const toolAdditionalData = (data as UnknownRecord).toolAdditionalData;\n\n // Session needs migration if either field is missing\n return !Array.isArray(uiMessages) || toolAdditionalData === undefined;\n}\n\n/** Perform migration to AI SDK v5 uiMessages/toolAdditionalData */\nfunction migrateFromV0_26_0(data: unknown) {\n const session = {...(data as UnknownRecord)};\n const analysisResults = (session.analysisResults as UnknownRecord[]) || [];\n const existingUiMessages = (session.uiMessages as UnknownRecord[]) || [];\n const toolAdditionalData =\n (session.toolAdditionalData as UnknownRecord) || {};\n\n const synthesizedMessages: UnknownRecord[] = [];\n\n for (const result of analysisResults) {\n if (!isObject(result)) continue;\n const id = (result.id as string) || '';\n const prompt = (result.prompt as string) || '';\n const streamMessage = (result.streamMessage as UnknownRecord) || {};\n const parts = (streamMessage.parts as UnknownRecord[]) || [];\n\n // Create user message for the prompt\n if (prompt) {\n synthesizedMessages.push({\n id,\n role: 'user',\n parts: [{type: 'text', text: prompt}],\n });\n }\n\n // Create assistant message mapping the parts\n const assistantParts: UnknownRecord[] = [];\n for (const part of parts) {\n if (part.type === 'text') {\n const text = part.text as string;\n assistantParts.push({type: 'text', text});\n } else if (part.type === 'tool-invocation') {\n const toolInvocation = part.toolInvocation;\n if (isObject(toolInvocation)) {\n const toolCallId = toolInvocation.toolCallId as string;\n const toolName = toolInvocation.toolName as string;\n const state = toolInvocation.state as string;\n const args = toolInvocation.args;\n const llmResult = toolInvocation.result;\n const additional = part.additionalData;\n\n // Persist additionalData per toolCallId into session-level toolAdditionalData\n if (toolCallId && additional !== undefined && toolAdditionalData) {\n toolAdditionalData[toolCallId] = additional;\n }\n\n // Map state to AI SDK v5 tool-* parts\n if (state === 'call') {\n assistantParts.push({\n type: `tool-${toolName}`,\n toolCallId,\n state: 'input-available',\n input: args,\n });\n } else {\n // Fallback: treat other states as result\n assistantParts.push({\n type: `tool-${toolName}`,\n toolCallId,\n state: 'output-available',\n input: args,\n output: llmResult,\n });\n }\n }\n }\n // Unknown legacy part types are ignored\n }\n\n if (assistantParts.length > 0) {\n synthesizedMessages.push({\n id: `${id}-assistant`,\n role: 'assistant',\n parts: assistantParts,\n });\n }\n }\n\n // Remove deprecated streamMessage field from analysisResults\n const cleanedAnalysisResults = analysisResults.map((result) => {\n if (!isObject(result)) return result;\n // eslint-disable-line @typescript-eslint/no-unused-vars\n const {streamMessage, ...rest} = result as UnknownRecord & {\n streamMessage?: unknown;\n };\n return rest;\n });\n\n return {\n ...session,\n analysisResults: cleanedAnalysisResults,\n uiMessages: [...existingUiMessages, ...synthesizedMessages],\n toolAdditionalData,\n };\n}\n\nexport {needsV0_26_0Migration, migrateFromV0_26_0};\n"]}
|