/**
* Spark Runtime - Core runtime services for Spark applications
*
* This module provides implementations of Spark services including:
* - KV storage (key-value store using IndexedDB)
* - LLM service (language model integration)
* - User authentication
*/
///
import { getStorage } from './storage-service'
export const sparkRuntime = {
llmPrompt: (strings: TemplateStringsArray, ...values: any[]): string => {
let result = strings[0]
for (let i = 0; i < values.length; i++) {
result += String(values[i]) + strings[i + 1]
}
return result
},
llm: async (prompt: string, modelName?: string, jsonMode?: boolean): Promise => {
console.log('Mock LLM called with prompt:', prompt, 'model:', modelName, 'jsonMode:', jsonMode)
if (jsonMode) {
return JSON.stringify({
message: 'This is a mock response from the Spark LLM service.',
model: modelName || 'gpt-4o'
})
}
return 'This is a mock response from the Spark LLM service.'
},
user: async (): Promise<{
avatarUrl: string
email: string
id: string
isOwner: boolean
login: string
}> => {
return {
id: 'mock-user-id',
login: 'mockuser',
email: 'mock@example.com',
avatarUrl: 'https://api.dicebear.com/7.x/avataaars/svg?seed=mockuser',
isOwner: true
}
},
kv: {
get: async (key: string): Promise => {
const storage = getStorage()
return storage.get(key)
},
set: async (key: string, value: T): Promise => {
const storage = getStorage()
return storage.set(key, value)
},
delete: async (key: string): Promise => {
const storage = getStorage()
return storage.delete(key)
},
keys: async (): Promise => {
const storage = getStorage()
return storage.keys()
}
}
}
if (typeof window !== 'undefined') {
(window as any).spark = sparkRuntime;
(globalThis as any).spark = sparkRuntime
}