@sqlrooms/ai-config 0.27.0-rc.0 → 0.27.0-rc.2

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.
@@ -130,6 +130,8 @@ export declare const AiSliceConfig: z.ZodObject<{
130
130
  }, z.core.$strip>>;
131
131
  toolAdditionalData: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
132
132
  messagesRevision: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
133
+ prompt: z.ZodDefault<z.ZodString>;
134
+ isRunning: z.ZodDefault<z.ZodBoolean>;
133
135
  }, z.core.$strip>>>;
134
136
  currentSessionId: z.ZodOptional<z.ZodString>;
135
137
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"AiSliceConfig.d.ts","sourceRoot":"","sources":["../src/AiSliceConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wBAAgB,qBAAqB,CACnC,KAAK,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC7B,aAAa,CAmBf"}
1
+ {"version":3,"file":"AiSliceConfig.d.ts","sourceRoot":"","sources":["../src/AiSliceConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wBAAgB,qBAAqB,CACnC,KAAK,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC7B,aAAa,CAqBf"}
@@ -19,6 +19,8 @@ export function createDefaultAiConfig(props) {
19
19
  uiMessages: [],
20
20
  toolAdditionalData: {},
21
21
  messagesRevision: 0,
22
+ prompt: '',
23
+ isRunning: false,
22
24
  },
23
25
  ],
24
26
  currentSessionId: defaultSessionId,
@@ -1 +1 @@
1
- {"version":3,"file":"AiSliceConfig.js","sourceRoot":"","sources":["../src/AiSliceConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IACxC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAGH,MAAM,UAAU,qBAAqB,CACnC,KAA8B;IAE9B,MAAM,gBAAgB,GAAG,QAAQ,EAAE,CAAC;IACpC,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,EAAE,EAAE,gBAAgB;gBACpB,IAAI,EAAE,iBAAiB;gBACvB,aAAa,EAAE,QAAQ;gBACvB,KAAK,EAAE,SAAS;gBAChB,eAAe,EAAE,EAAE;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,UAAU,EAAE,EAAE;gBACd,kBAAkB,EAAE,EAAE;gBACtB,gBAAgB,EAAE,CAAC;aACpB;SACF;QACD,gBAAgB,EAAE,gBAAgB;QAClC,GAAG,KAAK;KACT,CAAC;AACJ,CAAC","sourcesContent":["import {z} from 'zod';\nimport {AnalysisSessionSchema} from './schema/AnalysisSessionSchema';\nimport {createId} from '@paralleldrive/cuid2';\n\nexport const AiSliceConfig = z.object({\n sessions: z.array(AnalysisSessionSchema),\n currentSessionId: z.string().optional(),\n});\nexport type AiSliceConfig = z.infer<typeof AiSliceConfig>;\n\nexport function createDefaultAiConfig(\n props?: Partial<AiSliceConfig>,\n): AiSliceConfig {\n const defaultSessionId = createId();\n return {\n sessions: [\n {\n id: defaultSessionId,\n name: 'Default Session',\n modelProvider: 'openai',\n model: 'gpt-4.1',\n analysisResults: [],\n createdAt: new Date(),\n uiMessages: [],\n toolAdditionalData: {},\n messagesRevision: 0,\n },\n ],\n currentSessionId: defaultSessionId,\n ...props,\n };\n}\n"]}
1
+ {"version":3,"file":"AiSliceConfig.js","sourceRoot":"","sources":["../src/AiSliceConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IACxC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAGH,MAAM,UAAU,qBAAqB,CACnC,KAA8B;IAE9B,MAAM,gBAAgB,GAAG,QAAQ,EAAE,CAAC;IACpC,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,EAAE,EAAE,gBAAgB;gBACpB,IAAI,EAAE,iBAAiB;gBACvB,aAAa,EAAE,QAAQ;gBACvB,KAAK,EAAE,SAAS;gBAChB,eAAe,EAAE,EAAE;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,UAAU,EAAE,EAAE;gBACd,kBAAkB,EAAE,EAAE;gBACtB,gBAAgB,EAAE,CAAC;gBACnB,MAAM,EAAE,EAAE;gBACV,SAAS,EAAE,KAAK;aACjB;SACF;QACD,gBAAgB,EAAE,gBAAgB;QAClC,GAAG,KAAK;KACT,CAAC;AACJ,CAAC","sourcesContent":["import {z} from 'zod';\nimport {AnalysisSessionSchema} from './schema/AnalysisSessionSchema';\nimport {createId} from '@paralleldrive/cuid2';\n\nexport const AiSliceConfig = z.object({\n sessions: z.array(AnalysisSessionSchema),\n currentSessionId: z.string().optional(),\n});\nexport type AiSliceConfig = z.infer<typeof AiSliceConfig>;\n\nexport function createDefaultAiConfig(\n props?: Partial<AiSliceConfig>,\n): AiSliceConfig {\n const defaultSessionId = createId();\n return {\n sessions: [\n {\n id: defaultSessionId,\n name: 'Default Session',\n modelProvider: 'openai',\n model: 'gpt-4.1',\n analysisResults: [],\n createdAt: new Date(),\n uiMessages: [],\n toolAdditionalData: {},\n messagesRevision: 0,\n prompt: '',\n isRunning: false,\n },\n ],\n currentSessionId: defaultSessionId,\n ...props,\n };\n}\n"]}
@@ -44,6 +44,9 @@
44
44
  * }>,
45
45
  * uiMessages: Array<UIMessageSchema>, //<-- NEW FIELD
46
46
  * toolAdditionalData: Record<string, unknown>, //<-- NEW FIELD
47
+ * messagesRevision?: number, //<-- NEW FIELD
48
+ * prompt: string, //<-- NEW FIELD
49
+ * isRunning: boolean, //<-- NEW FIELD
47
50
  * }
48
51
  */
49
52
  type UnknownRecord = Record<string, unknown>;
@@ -56,6 +59,8 @@ declare function migrateFromV0_26_0(data: unknown): {
56
59
  }[];
57
60
  uiMessages: UnknownRecord[];
58
61
  toolAdditionalData: UnknownRecord;
62
+ prompt: string;
63
+ isRunning: boolean;
59
64
  };
60
65
  export { needsV0_26_0Migration, migrateFromV0_26_0 };
61
66
  //# sourceMappingURL=AnalysisSession-v0.26.0.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"AnalysisSession-v0.26.0.d.ts","sourceRoot":"","sources":["../../src/migration/AnalysisSession-v0.26.0.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;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;;;;;;;;EAgGxC;AAED,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,CAAC"}
@@ -44,6 +44,9 @@
44
44
  * }>,
45
45
  * uiMessages: Array<UIMessageSchema>, //<-- NEW FIELD
46
46
  * toolAdditionalData: Record<string, unknown>, //<-- NEW FIELD
47
+ * messagesRevision?: number, //<-- NEW FIELD
48
+ * prompt: string, //<-- NEW FIELD
49
+ * isRunning: boolean, //<-- NEW FIELD
47
50
  * }
48
51
  */
49
52
  function isObject(value) {
@@ -143,6 +146,8 @@ function migrateFromV0_26_0(data) {
143
146
  analysisResults: cleanedAnalysisResults,
144
147
  uiMessages: [...existingUiMessages, ...synthesizedMessages],
145
148
  toolAdditionalData,
149
+ prompt: '',
150
+ isRunning: false,
146
151
  };
147
152
  }
148
153
  export { needsV0_26_0Migration, migrateFromV0_26_0 };
@@ -1 +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\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"]}
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 * messagesRevision?: number, //<-- NEW FIELD\n * prompt: string, //<-- NEW FIELD\n * isRunning: boolean, //<-- 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\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 prompt: '',\n isRunning: false,\n };\n}\n\nexport {needsV0_26_0Migration, migrateFromV0_26_0};\n"]}
@@ -142,6 +142,8 @@ export declare const AnalysisSessionSchema: z.ZodPipe<z.ZodTransform<unknown, un
142
142
  }, z.core.$strip>>;
143
143
  toolAdditionalData: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
144
144
  messagesRevision: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
145
+ prompt: z.ZodDefault<z.ZodString>;
146
+ isRunning: z.ZodDefault<z.ZodBoolean>;
145
147
  }, z.core.$strip>>;
146
148
  export type AnalysisSessionSchema = z.infer<typeof AnalysisSessionSchema>;
147
149
  //# sourceMappingURL=AnalysisSessionSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnalysisSessionSchema.d.ts","sourceRoot":"","sources":["../../src/schema/AnalysisSessionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAetB,eAAO,MAAM,kBAAkB;;iBAE7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,oBAAoB;;;;;;;iBAK/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AA0CxE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAyB,CAAC;AAC5D,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"AnalysisSessionSchema.d.ts","sourceRoot":"","sources":["../../src/schema/AnalysisSessionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAetB,eAAO,MAAM,kBAAkB;;iBAE7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,oBAAoB;;;;;;;iBAK/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AA8CxE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAyB,CAAC;AAC5D,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -25,6 +25,10 @@ const AnalysisSessionBaseSchema = z.object({
25
25
  toolAdditionalData: z.record(z.string(), z.unknown()).optional(),
26
26
  /** Revision counter that increments when messages are deleted, used to force useChat reset */
27
27
  messagesRevision: z.number().optional().default(0),
28
+ /** Per-session analysis prompt text */
29
+ prompt: z.string().default(''),
30
+ /** Per-session flag indicating if analysis is running */
31
+ isRunning: z.boolean().default(false),
28
32
  });
29
33
  /**
30
34
  * Apply all migrations in sequence from oldest to newest.
@@ -1 +1 @@
1
- {"version":3,"file":"AnalysisSessionSchema.js","sourceRoot":"","sources":["../../src/schema/AnalysisSessionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,4DAA4D;IAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;CACzB,CAAC,CAAC;AAGH,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACpC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChE,8FAA8F;IAC9F,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACnD,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE;IACnD,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,qDAAqD;IACrD,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,wDAAwD;IACxD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,kEAAkE;IAClE,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,EAAE,yBAAyB,CAAC,CAAC;AAE9B,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC","sourcesContent":["import {z} from 'zod';\nimport {UIMessageSchema} from './UIMessageSchema';\nimport {\n needsV0_24_14Migration,\n migrateFromV0_24_14,\n} from '../migration/AnalysisSession-v0.24.14';\nimport {\n needsV0_25_0Migration,\n migrateFromV0_25_0,\n} from '../migration/AnalysisSession-v0.25.0';\nimport {\n needsV0_26_0Migration,\n migrateFromV0_26_0,\n} from '../migration/AnalysisSession-v0.26.0';\n\nexport const ErrorMessageSchema = z.object({\n error: z.string(),\n});\nexport type ErrorMessageSchema = z.infer<typeof ErrorMessageSchema>;\n\nexport const AnalysisResultSchema = z.object({\n id: z.string(), // allow any string ID to match UI message ID from AI SDK v5\n prompt: z.string(),\n errorMessage: ErrorMessageSchema.optional(),\n isCompleted: z.boolean(),\n});\nexport type AnalysisResultSchema = z.infer<typeof AnalysisResultSchema>;\n\nconst AnalysisSessionBaseSchema = z.object({\n id: z.string(),\n name: z.string(),\n modelProvider: z.string(),\n model: z.string(),\n customModelName: z.string().optional(),\n baseUrl: z.string().optional(),\n analysisResults: z.array(AnalysisResultSchema),\n createdAt: z.coerce.date().optional(),\n uiMessages: z.array(UIMessageSchema),\n toolAdditionalData: z.record(z.string(), z.unknown()).optional(),\n /** Revision counter that increments when messages are deleted, used to force useChat reset */\n messagesRevision: z.number().optional().default(0),\n});\n\n/**\n * Apply all migrations in sequence from oldest to newest.\n * This ensures that old data can be migrated through multiple versions.\n */\nconst migrateAnalysisSession = z.preprocess((data) => {\n let migrated = data;\n\n // Apply v0.24.14 migration (ollamaBaseUrl → baseUrl)\n if (needsV0_24_14Migration(migrated)) {\n migrated = migrateFromV0_24_14(migrated);\n }\n\n // Apply v0.25.0 migration (streamMessage format change)\n if (needsV0_25_0Migration(migrated)) {\n migrated = migrateFromV0_25_0(migrated);\n }\n\n // Apply v0.26.0 migration (add uiMessages and toolAdditionalData)\n if (needsV0_26_0Migration(migrated)) {\n migrated = migrateFromV0_26_0(migrated);\n }\n\n return migrated;\n}, AnalysisSessionBaseSchema);\n\nexport const AnalysisSessionSchema = migrateAnalysisSession;\nexport type AnalysisSessionSchema = z.infer<typeof AnalysisSessionSchema>;\n"]}
1
+ {"version":3,"file":"AnalysisSessionSchema.js","sourceRoot":"","sources":["../../src/schema/AnalysisSessionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,4DAA4D;IAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;CACzB,CAAC,CAAC;AAGH,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACpC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChE,8FAA8F;IAC9F,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,uCAAuC;IACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,yDAAyD;IACzD,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACtC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE;IACnD,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,qDAAqD;IACrD,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,wDAAwD;IACxD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,kEAAkE;IAClE,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,EAAE,yBAAyB,CAAC,CAAC;AAE9B,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC","sourcesContent":["import {z} from 'zod';\nimport {UIMessageSchema} from './UIMessageSchema';\nimport {\n needsV0_24_14Migration,\n migrateFromV0_24_14,\n} from '../migration/AnalysisSession-v0.24.14';\nimport {\n needsV0_25_0Migration,\n migrateFromV0_25_0,\n} from '../migration/AnalysisSession-v0.25.0';\nimport {\n needsV0_26_0Migration,\n migrateFromV0_26_0,\n} from '../migration/AnalysisSession-v0.26.0';\n\nexport const ErrorMessageSchema = z.object({\n error: z.string(),\n});\nexport type ErrorMessageSchema = z.infer<typeof ErrorMessageSchema>;\n\nexport const AnalysisResultSchema = z.object({\n id: z.string(), // allow any string ID to match UI message ID from AI SDK v5\n prompt: z.string(),\n errorMessage: ErrorMessageSchema.optional(),\n isCompleted: z.boolean(),\n});\nexport type AnalysisResultSchema = z.infer<typeof AnalysisResultSchema>;\n\nconst AnalysisSessionBaseSchema = z.object({\n id: z.string(),\n name: z.string(),\n modelProvider: z.string(),\n model: z.string(),\n customModelName: z.string().optional(),\n baseUrl: z.string().optional(),\n analysisResults: z.array(AnalysisResultSchema),\n createdAt: z.coerce.date().optional(),\n uiMessages: z.array(UIMessageSchema),\n toolAdditionalData: z.record(z.string(), z.unknown()).optional(),\n /** Revision counter that increments when messages are deleted, used to force useChat reset */\n messagesRevision: z.number().optional().default(0),\n /** Per-session analysis prompt text */\n prompt: z.string().default(''),\n /** Per-session flag indicating if analysis is running */\n isRunning: z.boolean().default(false),\n});\n\n/**\n * Apply all migrations in sequence from oldest to newest.\n * This ensures that old data can be migrated through multiple versions.\n */\nconst migrateAnalysisSession = z.preprocess((data) => {\n let migrated = data;\n\n // Apply v0.24.14 migration (ollamaBaseUrl → baseUrl)\n if (needsV0_24_14Migration(migrated)) {\n migrated = migrateFromV0_24_14(migrated);\n }\n\n // Apply v0.25.0 migration (streamMessage format change)\n if (needsV0_25_0Migration(migrated)) {\n migrated = migrateFromV0_25_0(migrated);\n }\n\n // Apply v0.26.0 migration (add uiMessages and toolAdditionalData)\n if (needsV0_26_0Migration(migrated)) {\n migrated = migrateFromV0_26_0(migrated);\n }\n\n return migrated;\n}, AnalysisSessionBaseSchema);\n\nexport const AnalysisSessionSchema = migrateAnalysisSession;\nexport type AnalysisSessionSchema = z.infer<typeof AnalysisSessionSchema>;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sqlrooms/ai-config",
3
- "version": "0.27.0-rc.0",
3
+ "version": "0.27.0-rc.2",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "module": "dist/index.js",
@@ -29,5 +29,5 @@
29
29
  "typecheck": "tsc --noEmit",
30
30
  "typedoc": "typedoc"
31
31
  },
32
- "gitHead": "ceafff23c197b8188040f8c93baf4e7d3dd4b081"
32
+ "gitHead": "eec06537352a9e760de21d7bcc77d9aa2db2a5ec"
33
33
  }