@ekairos/story 1.21.27-beta.0 → 1.21.30-beta.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.
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/dist/service.js CHANGED
@@ -75,7 +75,8 @@ class AgentService {
75
75
  }
76
76
  async saveEvent(contextIdentifier, event) {
77
77
  const txs = [
78
- this.db.tx.context_events[event.id].create({
78
+ // Use update instead of create to handle both new and existing events
79
+ this.db.tx.context_events[event.id].update({
79
80
  ...event,
80
81
  status: "stored"
81
82
  })
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { id, init, InstaQLEntity, lookup, type InstantAdminDatabase } from \"@instantdb/admin\"\nimport { storyDomain } from \"./schema\"\nimport { SchemaOf } from \"@ekairos/domain\"\n\nexport type StoredContext<Context> = Omit<InstaQLEntity<typeof storyDomain, 'context_contexts'>, 'content'> & { content: Context | null }\nexport type ContextIdentifier = { id: string; key?: never } | { key: string; id?: never }\n\nexport type ContextEvent = InstaQLEntity<typeof storyDomain, 'context_events'> & { content: any }\n\nexport type StreamChunk = {\n type: string\n messageId?: string\n content?: string\n [key: string]: unknown\n}\n\nexport class AgentService {\n\n private db: InstantAdminDatabase<SchemaOf<typeof storyDomain>>\n\n constructor(db: InstantAdminDatabase<SchemaOf<typeof storyDomain>>) {\n this.db = db\n }\n\n public async getOrCreateContext<C>(contextIdentifier: ContextIdentifier | null): Promise<StoredContext<C>> {\n if (!contextIdentifier) {\n return this.createContext<C>()\n }\n\n let context = await this.getContext<C>(contextIdentifier)\n if (!context) {\n return this.createContext<C>(contextIdentifier.key ? { key: contextIdentifier.key } : null, contextIdentifier.id)\n } else {\n return context\n }\n }\n\n public async createContext<C>(contextKey?: { key: string } | null, contextId?: string): Promise<StoredContext<C>> {\n let contextData: { createdAt: Date; content: Record<string, unknown>; key: string | null; status: \"open\" } = {\n createdAt: new Date(),\n content: {},\n key: null,\n status: \"open\"\n }\n\n const newContextId = contextId ?? id()\n if (contextKey?.key) {\n contextData = {\n ...contextData,\n key: contextKey.key\n }\n }\n\n await this.db.transact([\n this.db.tx.context_contexts[newContextId].create(contextData)\n ])\n return this.getContext<C>({ id: newContextId })\n }\n\n public async getContext<C>(contextIdentifier: ContextIdentifier): Promise<StoredContext<C>> {\n let context;\n try {\n if (contextIdentifier.id) {\n const tRes = await this.db.query({\n context_contexts: {\n $: { where: { id: contextIdentifier.id as any }, limit: 1 }\n }\n })\n context = tRes.context_contexts?.[0]\n }\n\n if (contextIdentifier.key) {\n const tRes = await this.db.query({\n context_contexts: {\n $: { where: { key: contextIdentifier.key } }\n }\n })\n context = tRes.context_contexts?.[0]\n }\n\n return context as unknown as StoredContext<C>\n } catch (error: any) {\n console.error(\"Error getting context\", error)\n throw new Error(\"Error getting context: \" + error.message)\n }\n }\n\n public async updateContextContent<C>(contextIdentifier: ContextIdentifier, content: C): Promise<StoredContext<C>> {\n\n const contextDBIdentifier = contextIdentifier.id ?? lookup(\"key\", contextIdentifier.key)\n\n await this.db.transact([\n this.db.tx.context_contexts[contextDBIdentifier].update({\n content: content,\n updatedAt: new Date()\n })\n ])\n\n return this.getContext<C>(contextIdentifier)\n }\n\n public async saveEvent(contextIdentifier: ContextIdentifier, event: ContextEvent): Promise<ContextEvent> {\n const txs = [\n this.db.tx.context_events[event.id].create({\n ...event,\n status: \"stored\"\n })\n ]\n\n if (contextIdentifier.id) {\n txs.push(this.db.tx.context_events[event.id].link({ context: contextIdentifier.id }))\n } else {\n txs.push(this.db.tx.context_events[event.id].link({ context: lookup(\"key\", contextIdentifier.key) }))\n }\n\n await this.db.transact(txs)\n\n return await this.getEvent(event.id)\n }\n\n public async createExecution(contextIdentifier: ContextIdentifier, triggerEventId: string, reactionEventId: string): Promise<{ id: string }> {\n const executionId = id()\n const execCreate = this.db.tx.story_executions[executionId].create({\n createdAt: new Date(),\n status: \"executing\",\n })\n\n const txs: any[] = [execCreate]\n\n if (contextIdentifier.id) {\n txs.push(this.db.tx.story_executions[executionId].link({ context: contextIdentifier.id }))\n txs.push(this.db.tx.context_contexts[contextIdentifier.id].link({ currentExecution: executionId }))\n } else {\n const ctxLookup = lookup(\"key\", contextIdentifier.key)\n txs.push(this.db.tx.story_executions[executionId].link({ context: ctxLookup }))\n txs.push(this.db.tx.context_contexts[ctxLookup].link({ currentExecution: executionId }))\n }\n\n txs.push(this.db.tx.story_executions[executionId].link({ trigger: triggerEventId }))\n txs.push(this.db.tx.story_executions[executionId].link({ reaction: reactionEventId }))\n\n await this.db.transact(txs)\n\n return { id: executionId }\n }\n\n public async updateContextStatus(contextIdentifier: ContextIdentifier, status: \"open\" | \"streaming\" | \"closed\"): Promise<void> {\n const txs: any[] = []\n \n if (contextIdentifier.id) {\n txs.push(this.db.tx.context_contexts[contextIdentifier.id].update({ status, updatedAt: new Date() }))\n } else {\n txs.push(this.db.tx.context_contexts[lookup(\"key\", contextIdentifier.key)].update({ status, updatedAt: new Date() }))\n }\n\n await this.db.transact(txs)\n }\n\n public async completeExecution(contextIdentifier: ContextIdentifier, executionId: string, status: \"completed\" | \"failed\"): Promise<void> {\n const txs: any[] = []\n txs.push(this.db.tx.story_executions[executionId].update({ status, updatedAt: new Date() }))\n\n // Update context status to \"open\" when execution completes\n if (contextIdentifier.id) {\n txs.push(this.db.tx.context_contexts[contextIdentifier.id].update({ status: \"open\", updatedAt: new Date() }))\n // optionally unlink currentExecution if desired\n } else {\n txs.push(this.db.tx.context_contexts[lookup(\"key\", contextIdentifier.key)].update({ status: \"open\", updatedAt: new Date() }))\n }\n\n await this.db.transact(txs)\n }\n\n public async updateEvent(eventId: string, event: ContextEvent): Promise<ContextEvent> {\n await this.db.transact([\n this.db.tx.context_events[eventId].update(event)\n ])\n return await this.getEvent(eventId)\n }\n\n public async getEvent(eventId: string): Promise<ContextEvent> {\n const event = await this.db.query({\n context_events: {\n $: { \n where: { id: eventId as any }\n }\n }\n })\n return event.context_events?.[0] as ContextEvent\n }\n\n public async getEvents(contextIdentifier: ContextIdentifier): Promise<ContextEvent[]> {\n\n let contextWhere: { context: string } | { context: ReturnType<typeof lookup> };\n if (contextIdentifier.id) {\n contextWhere = { context: contextIdentifier.id }\n } else {\n contextWhere = { context: lookup(\"key\", contextIdentifier.key) }\n }\n\n const events = await this.db.query({\n context_events: {\n $: {\n where: contextWhere as any,\n limit: 30,\n order: {\n createdAt: 'asc',\n },\n }\n }\n })\n return events.context_events as ContextEvent[]\n }\n\n public async readEventStream(stream: ReadableStream): Promise<{\n eventId: string | undefined\n chunks: StreamChunk[]\n persistedEvent: any\n }> {\n const reader = stream.getReader()\n const chunks: StreamChunk[] = []\n let firstChunk: StreamChunk | undefined\n\n while (true) {\n const { value, done } = await reader.read()\n if (done) {\n break\n }\n const currentChunk = value as StreamChunk\n if (!firstChunk) {\n firstChunk = currentChunk\n }\n chunks.push(currentChunk)\n }\n\n if (!firstChunk) {\n throw new Error(\"No chunks received from stream\")\n }\n\n const eventId = firstChunk.messageId\n\n if (!eventId || typeof eventId !== 'string') {\n throw new Error(\"Event ID not found in stream chunks\")\n }\n\n const query = await this.db.query({\n context_events: {\n $: {\n where: { id: eventId as any },\n limit: 1,\n fields: [\"id\", \"channel\", \"type\", \"status\", \"createdAt\", \"content\"],\n },\n },\n })\n\n const persistedEvent = Array.isArray(query.context_events) ? query.context_events[0] : undefined\n\n return {\n eventId,\n chunks,\n persistedEvent,\n }\n }\n}"]}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { id, init, InstaQLEntity, lookup, type InstantAdminDatabase } from \"@instantdb/admin\"\nimport { storyDomain } from \"./schema\"\nimport { SchemaOf } from \"@ekairos/domain\"\n\nexport type StoredContext<Context> = Omit<InstaQLEntity<typeof storyDomain, 'context_contexts'>, 'content'> & { content: Context | null }\nexport type ContextIdentifier = { id: string; key?: never } | { key: string; id?: never }\n\nexport type ContextEvent = InstaQLEntity<typeof storyDomain, 'context_events'> & { content: any }\n\nexport type StreamChunk = {\n type: string\n messageId?: string\n content?: string\n [key: string]: unknown\n}\n\nexport class AgentService {\n\n private db: InstantAdminDatabase<SchemaOf<typeof storyDomain>>\n\n constructor(db: InstantAdminDatabase<SchemaOf<typeof storyDomain>>) {\n this.db = db\n }\n\n public async getOrCreateContext<C>(contextIdentifier: ContextIdentifier | null): Promise<StoredContext<C>> {\n if (!contextIdentifier) {\n return this.createContext<C>()\n }\n\n let context = await this.getContext<C>(contextIdentifier)\n if (!context) {\n return this.createContext<C>(contextIdentifier.key ? { key: contextIdentifier.key } : null, contextIdentifier.id)\n } else {\n return context\n }\n }\n\n public async createContext<C>(contextKey?: { key: string } | null, contextId?: string): Promise<StoredContext<C>> {\n let contextData: { createdAt: Date; content: Record<string, unknown>; key: string | null; status: \"open\" } = {\n createdAt: new Date(),\n content: {},\n key: null,\n status: \"open\"\n }\n\n const newContextId = contextId ?? id()\n if (contextKey?.key) {\n contextData = {\n ...contextData,\n key: contextKey.key\n }\n }\n\n await this.db.transact([\n this.db.tx.context_contexts[newContextId].create(contextData)\n ])\n return this.getContext<C>({ id: newContextId })\n }\n\n public async getContext<C>(contextIdentifier: ContextIdentifier): Promise<StoredContext<C>> {\n let context;\n try {\n if (contextIdentifier.id) {\n const tRes = await this.db.query({\n context_contexts: {\n $: { where: { id: contextIdentifier.id as any }, limit: 1 }\n }\n })\n context = tRes.context_contexts?.[0]\n }\n\n if (contextIdentifier.key) {\n const tRes = await this.db.query({\n context_contexts: {\n $: { where: { key: contextIdentifier.key } }\n }\n })\n context = tRes.context_contexts?.[0]\n }\n\n return context as unknown as StoredContext<C>\n } catch (error: any) {\n console.error(\"Error getting context\", error)\n throw new Error(\"Error getting context: \" + error.message)\n }\n }\n\n public async updateContextContent<C>(contextIdentifier: ContextIdentifier, content: C): Promise<StoredContext<C>> {\n\n const contextDBIdentifier = contextIdentifier.id ?? lookup(\"key\", contextIdentifier.key)\n\n await this.db.transact([\n this.db.tx.context_contexts[contextDBIdentifier].update({\n content: content,\n updatedAt: new Date()\n })\n ])\n\n return this.getContext<C>(contextIdentifier)\n }\n\n public async saveEvent(contextIdentifier: ContextIdentifier, event: ContextEvent): Promise<ContextEvent> {\n const txs = [\n // Use update instead of create to handle both new and existing events\n this.db.tx.context_events[event.id].update({\n ...event,\n status: \"stored\"\n })\n ]\n\n if (contextIdentifier.id) {\n txs.push(this.db.tx.context_events[event.id].link({ context: contextIdentifier.id }))\n } else {\n txs.push(this.db.tx.context_events[event.id].link({ context: lookup(\"key\", contextIdentifier.key) }))\n }\n\n await this.db.transact(txs)\n\n return await this.getEvent(event.id)\n }\n\n public async createExecution(contextIdentifier: ContextIdentifier, triggerEventId: string, reactionEventId: string): Promise<{ id: string }> {\n const executionId = id()\n const execCreate = this.db.tx.story_executions[executionId].create({\n createdAt: new Date(),\n status: \"executing\",\n })\n\n const txs: any[] = [execCreate]\n\n if (contextIdentifier.id) {\n txs.push(this.db.tx.story_executions[executionId].link({ context: contextIdentifier.id }))\n txs.push(this.db.tx.context_contexts[contextIdentifier.id].link({ currentExecution: executionId }))\n } else {\n const ctxLookup = lookup(\"key\", contextIdentifier.key)\n txs.push(this.db.tx.story_executions[executionId].link({ context: ctxLookup }))\n txs.push(this.db.tx.context_contexts[ctxLookup].link({ currentExecution: executionId }))\n }\n\n txs.push(this.db.tx.story_executions[executionId].link({ trigger: triggerEventId }))\n txs.push(this.db.tx.story_executions[executionId].link({ reaction: reactionEventId }))\n\n await this.db.transact(txs)\n\n return { id: executionId }\n }\n\n public async updateContextStatus(contextIdentifier: ContextIdentifier, status: \"open\" | \"streaming\" | \"closed\"): Promise<void> {\n const txs: any[] = []\n \n if (contextIdentifier.id) {\n txs.push(this.db.tx.context_contexts[contextIdentifier.id].update({ status, updatedAt: new Date() }))\n } else {\n txs.push(this.db.tx.context_contexts[lookup(\"key\", contextIdentifier.key)].update({ status, updatedAt: new Date() }))\n }\n\n await this.db.transact(txs)\n }\n\n public async completeExecution(contextIdentifier: ContextIdentifier, executionId: string, status: \"completed\" | \"failed\"): Promise<void> {\n const txs: any[] = []\n txs.push(this.db.tx.story_executions[executionId].update({ status, updatedAt: new Date() }))\n\n // Update context status to \"open\" when execution completes\n if (contextIdentifier.id) {\n txs.push(this.db.tx.context_contexts[contextIdentifier.id].update({ status: \"open\", updatedAt: new Date() }))\n // optionally unlink currentExecution if desired\n } else {\n txs.push(this.db.tx.context_contexts[lookup(\"key\", contextIdentifier.key)].update({ status: \"open\", updatedAt: new Date() }))\n }\n\n await this.db.transact(txs)\n }\n\n public async updateEvent(eventId: string, event: ContextEvent): Promise<ContextEvent> {\n await this.db.transact([\n this.db.tx.context_events[eventId].update(event)\n ])\n return await this.getEvent(eventId)\n }\n\n public async getEvent(eventId: string): Promise<ContextEvent> {\n const event = await this.db.query({\n context_events: {\n $: { \n where: { id: eventId as any }\n }\n }\n })\n return event.context_events?.[0] as ContextEvent\n }\n\n public async getEvents(contextIdentifier: ContextIdentifier): Promise<ContextEvent[]> {\n\n let contextWhere: { context: string } | { context: ReturnType<typeof lookup> };\n if (contextIdentifier.id) {\n contextWhere = { context: contextIdentifier.id }\n } else {\n contextWhere = { context: lookup(\"key\", contextIdentifier.key) }\n }\n\n const events = await this.db.query({\n context_events: {\n $: {\n where: contextWhere as any,\n limit: 30,\n order: {\n createdAt: 'asc',\n },\n }\n }\n })\n return events.context_events as ContextEvent[]\n }\n\n public async readEventStream(stream: ReadableStream): Promise<{\n eventId: string | undefined\n chunks: StreamChunk[]\n persistedEvent: any\n }> {\n const reader = stream.getReader()\n const chunks: StreamChunk[] = []\n let firstChunk: StreamChunk | undefined\n\n while (true) {\n const { value, done } = await reader.read()\n if (done) {\n break\n }\n const currentChunk = value as StreamChunk\n if (!firstChunk) {\n firstChunk = currentChunk\n }\n chunks.push(currentChunk)\n }\n\n if (!firstChunk) {\n throw new Error(\"No chunks received from stream\")\n }\n\n const eventId = firstChunk.messageId\n\n if (!eventId || typeof eventId !== 'string') {\n throw new Error(\"Event ID not found in stream chunks\")\n }\n\n const query = await this.db.query({\n context_events: {\n $: {\n where: { id: eventId as any },\n limit: 1,\n fields: [\"id\", \"channel\", \"type\", \"status\", \"createdAt\", \"content\"],\n },\n },\n })\n\n const persistedEvent = Array.isArray(query.context_events) ? query.context_events[0] : undefined\n\n return {\n eventId,\n chunks,\n persistedEvent,\n }\n }\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekairos/story",
3
- "version": "1.21.27-beta.0",
3
+ "version": "1.21.30-beta.0",
4
4
  "description": "Pulzar Story - Workflow-based AI Stories",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@ai-sdk/openai": "^2.0.52",
36
- "@ekairos/domain": "^1.21.27-beta.0",
36
+ "@ekairos/domain": "^1.21.30-beta.0",
37
37
  "@instantdb/admin": "^0.22.13",
38
38
  "@instantdb/core": "^0.22.13",
39
39
  "@vercel/sandbox": "^0.0.23",