@ekairos/story 1.6.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.
Files changed (73) hide show
  1. package/dist/agent.d.ts +73 -0
  2. package/dist/agent.d.ts.map +1 -0
  3. package/dist/agent.js +479 -0
  4. package/dist/agent.js.map +1 -0
  5. package/dist/document-parser.d.ts +16 -0
  6. package/dist/document-parser.d.ts.map +1 -0
  7. package/dist/document-parser.js +157 -0
  8. package/dist/document-parser.js.map +1 -0
  9. package/dist/engine.d.ts +22 -0
  10. package/dist/engine.d.ts.map +1 -0
  11. package/dist/engine.js +36 -0
  12. package/dist/engine.js.map +1 -0
  13. package/dist/events.d.ts +28 -0
  14. package/dist/events.d.ts.map +1 -0
  15. package/dist/events.js +204 -0
  16. package/dist/events.js.map +1 -0
  17. package/dist/index.d.ts +14 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +53 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/schema.d.ts +108 -0
  22. package/dist/schema.d.ts.map +1 -0
  23. package/dist/schema.js +64 -0
  24. package/dist/schema.js.map +1 -0
  25. package/dist/service.d.ts +45 -0
  26. package/dist/service.d.ts.map +1 -0
  27. package/dist/service.js +203 -0
  28. package/dist/service.js.map +1 -0
  29. package/dist/steps/ai.d.ts +43 -0
  30. package/dist/steps/ai.d.ts.map +1 -0
  31. package/dist/steps/ai.js +136 -0
  32. package/dist/steps/ai.js.map +1 -0
  33. package/dist/steps/base.d.ts +14 -0
  34. package/dist/steps/base.d.ts.map +1 -0
  35. package/dist/steps/base.js +37 -0
  36. package/dist/steps/base.js.map +1 -0
  37. package/dist/steps/index.d.ts +5 -0
  38. package/dist/steps/index.d.ts.map +1 -0
  39. package/dist/steps/index.js +21 -0
  40. package/dist/steps/index.js.map +1 -0
  41. package/dist/steps/registry.d.ts +5 -0
  42. package/dist/steps/registry.d.ts.map +1 -0
  43. package/dist/steps/registry.js +29 -0
  44. package/dist/steps/registry.js.map +1 -0
  45. package/dist/steps/sampleStep.d.ts +2 -0
  46. package/dist/steps/sampleStep.d.ts.map +1 -0
  47. package/dist/steps/sampleStep.js +16 -0
  48. package/dist/steps/sampleStep.js.map +1 -0
  49. package/dist/steps-context.d.ts +12 -0
  50. package/dist/steps-context.d.ts.map +1 -0
  51. package/dist/steps-context.js +20 -0
  52. package/dist/steps-context.js.map +1 -0
  53. package/dist/story.d.ts +50 -0
  54. package/dist/story.d.ts.map +1 -0
  55. package/dist/story.js +55 -0
  56. package/dist/story.js.map +1 -0
  57. package/dist/storyEngine.d.ts +55 -0
  58. package/dist/storyEngine.d.ts.map +1 -0
  59. package/dist/storyEngine.js +51 -0
  60. package/dist/storyEngine.js.map +1 -0
  61. package/dist/storyRunner.d.ts +8 -0
  62. package/dist/storyRunner.d.ts.map +1 -0
  63. package/dist/storyRunner.js +56 -0
  64. package/dist/storyRunner.js.map +1 -0
  65. package/dist/workflows/index.d.ts +2 -0
  66. package/dist/workflows/index.d.ts.map +1 -0
  67. package/dist/workflows/index.js +18 -0
  68. package/dist/workflows/index.js.map +1 -0
  69. package/dist/workflows/sampleWorkflow.d.ts +8 -0
  70. package/dist/workflows/sampleWorkflow.d.ts.map +1 -0
  71. package/dist/workflows/sampleWorkflow.js +19 -0
  72. package/dist/workflows/sampleWorkflow.js.map +1 -0
  73. package/package.json +52 -0
@@ -0,0 +1,73 @@
1
+ import { Tool, UIMessageStreamWriter } from "ai";
2
+ import { UIMessage } from 'ai';
3
+ import { AgentService, ContextEvent, ContextIdentifier, StoredContext } from "./service";
4
+ export type AgentMessage = UIMessage<never, // metadata type
5
+ {
6
+ weather: {
7
+ city: string;
8
+ weather?: string;
9
+ status: 'loading' | 'success';
10
+ };
11
+ notification: {
12
+ message: string;
13
+ level: 'info' | 'warning' | 'error';
14
+ };
15
+ }>;
16
+ export interface AgentOptions {
17
+ onEventCreated?: (event: any) => void | Promise<void>;
18
+ evaluateToolCalls?: (toolCalls: any[]) => Promise<{
19
+ success: boolean;
20
+ message?: string;
21
+ }>;
22
+ onToolCallExecuted?: (executionEvent: any) => void | Promise<void>;
23
+ onEnd?: (lastEvent: ContextEvent) => void | {
24
+ end?: boolean;
25
+ } | Promise<void | {
26
+ end?: boolean;
27
+ }>;
28
+ }
29
+ export interface ProgressStreamOptions {
30
+ reasoningEffort?: "low" | "medium" | "high";
31
+ webSearch?: boolean;
32
+ }
33
+ export type DataStreamWriter = UIMessageStreamWriter<AgentMessage>;
34
+ export declare abstract class Story<Context> {
35
+ private opts;
36
+ protected db: import("@instantdb/admin").InstantAdminDatabase<import("@instantdb/admin").InstantUnknownSchemaDef, import("@instantdb/admin").InstantConfig<import("@instantdb/admin").InstantUnknownSchemaDef, false>>;
37
+ protected agentService: AgentService;
38
+ constructor(opts?: AgentOptions);
39
+ protected abstract buildSystemPrompt(context: StoredContext<Context>, ...args: any[]): Promise<string> | string;
40
+ protected abstract buildTools(context: StoredContext<Context>, dataStream: DataStreamWriter): Promise<Record<string, Tool>>;
41
+ protected abstract initialize(context: StoredContext<Context>): Promise<Context>;
42
+ protected getModel(context: StoredContext<Context>): string;
43
+ protected includeBaseTools(): {
44
+ createMessage: boolean;
45
+ requestDirection: boolean;
46
+ end: boolean;
47
+ };
48
+ protected getFinalizationToolNames(): Promise<string[]>;
49
+ private static readonly FINAL_TOOL_NAMES;
50
+ protected getBaseTools(dataStream: DataStreamWriter, threadId: string): Record<string, Tool>;
51
+ protected executeCreateMessage(eventId: string, args: {
52
+ message: string;
53
+ type: "info" | "confirmation" | "warning" | "error" | "success";
54
+ includeContext?: boolean;
55
+ }, threadId: string, dataStream?: DataStreamWriter): Promise<any>;
56
+ protected executeRequestDirection(eventId: string, args: {
57
+ issue: string;
58
+ context: string;
59
+ suggestedActions?: string[];
60
+ urgency: "low" | "medium" | "high";
61
+ }, threadId: string, _dataStream?: DataStreamWriter): Promise<any>;
62
+ progressStream(incomingEvent: ContextEvent, contextIdentifier: ContextIdentifier | null, options?: ProgressStreamOptions): Promise<{
63
+ contextId: string;
64
+ triggerEventId: string;
65
+ reactionEventId: string;
66
+ stream: import("stream/web").ReadableStream<any>;
67
+ executionId: string;
68
+ }>;
69
+ private saveMessagesToThread;
70
+ private callOnEnd;
71
+ }
72
+ export { Story as Agent };
73
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/agent.js ADDED
@@ -0,0 +1,479 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Agent = exports.Story = void 0;
4
+ const admin_1 = require("@instantdb/admin");
5
+ const ai_1 = require("ai");
6
+ const openai_1 = require("@ai-sdk/openai");
7
+ const zod_1 = require("zod");
8
+ const braintrust_1 = require("braintrust");
9
+ const service_1 = require("./service");
10
+ const events_1 = require("./events");
11
+ // Inicializar Braintrust logger
12
+ const logger = (0, braintrust_1.initLogger)({
13
+ projectName: "pulzar platform",
14
+ apiKey: process.env.BRAINTRUST_API_KEY,
15
+ });
16
+ const createDataStream = ai_1.createUIMessageStream;
17
+ class Story {
18
+ constructor(opts = {}) {
19
+ this.opts = opts;
20
+ this.db = (0, admin_1.init)({
21
+ appId: process.env.NEXT_PUBLIC_INSTANT_APP_ID,
22
+ adminToken: process.env.INSTANT_APP_ADMIN_TOKEN
23
+ });
24
+ this.agentService = new service_1.AgentService();
25
+ }
26
+ getModel(context) {
27
+ return "openai/gpt-5";
28
+ }
29
+ includeBaseTools() {
30
+ return { createMessage: true, requestDirection: true, end: true };
31
+ }
32
+ async getFinalizationToolNames() {
33
+ return [];
34
+ }
35
+ getBaseTools(dataStream, threadId) {
36
+ const include = this.includeBaseTools();
37
+ const baseTools = {};
38
+ if (include.createMessage) {
39
+ baseTools.createMessage = (0, ai_1.tool)({
40
+ description: "Send a message to the user. Use for final confirmations or information.",
41
+ inputSchema: zod_1.z.object({
42
+ message: zod_1.z.string().describe("Message for the user in markdown format")
43
+ }),
44
+ });
45
+ }
46
+ if (include.requestDirection) {
47
+ baseTools.requestDirection = (0, ai_1.tool)({
48
+ description: "Ask a human for guidance when blocked or unsure.",
49
+ inputSchema: zod_1.z.object({
50
+ issue: zod_1.z.string(),
51
+ context: zod_1.z.string(),
52
+ suggestedActions: zod_1.z.array(zod_1.z.string()).optional(),
53
+ urgency: zod_1.z.enum(["low", "medium", "high"]).default("medium"),
54
+ }),
55
+ });
56
+ }
57
+ if (include.end) {
58
+ baseTools.end = (0, ai_1.tool)({
59
+ description: "End the current interaction loop.",
60
+ inputSchema: zod_1.z.object({}).strict(),
61
+ execute: async () => {
62
+ return { success: true, message: "Ended" };
63
+ },
64
+ });
65
+ }
66
+ return baseTools;
67
+ }
68
+ async executeCreateMessage(eventId, args, threadId, dataStream) {
69
+ const assistantMessage = { id: eventId, role: "assistant", content: args.message, createdAt: new Date() };
70
+ try {
71
+ await this.saveMessagesToThread(threadId, [assistantMessage]);
72
+ }
73
+ catch { }
74
+ if (dataStream) {
75
+ //dataStream.writeData({ type: "user-response", message: args.message, responseType: args.type, includeContext: Boolean(args.includeContext), timestamp: new Date().toISOString() } as any)
76
+ }
77
+ return { success: true, message: args.message, data: { messageId: assistantMessage.id, threadId } };
78
+ }
79
+ async executeRequestDirection(eventId, args, threadId, _dataStream) {
80
+ const systemMessage = { id: eventId, role: "assistant", content: `Direction requested: ${args.issue}\nContext: ${args.context}`, createdAt: new Date() };
81
+ return { success: true, message: "Direction requested", data: { messageId: systemMessage.id, threadId } };
82
+ }
83
+ async progressStream(incomingEvent, contextIdentifier, options) {
84
+ // get or create context
85
+ const currentContext = await this.agentService.getOrCreateContext(contextIdentifier);
86
+ const contextSelector = contextIdentifier?.id
87
+ ? { id: contextIdentifier.id }
88
+ : contextIdentifier?.key
89
+ ? { key: contextIdentifier.key }
90
+ : { id: currentContext.id };
91
+ // save incoming event
92
+ const triggerEvent = await this.agentService.saveEvent(contextSelector, incomingEvent);
93
+ const triggerEventId = triggerEvent.id; // trigger event id
94
+ const eventId = (0, admin_1.id)(); // reaction event id
95
+ // create execution and set context status
96
+ const execution = await this.agentService.createExecution(contextSelector, triggerEventId, eventId);
97
+ const executionId = execution.id;
98
+ let latestReactionEvent = null;
99
+ let executionStatus = "executing";
100
+ const markFailure = async () => {
101
+ if (latestReactionEvent && latestReactionEvent.status !== "failed") {
102
+ try {
103
+ latestReactionEvent = await this.agentService.updateEvent(latestReactionEvent.id, {
104
+ ...latestReactionEvent,
105
+ status: "failed",
106
+ });
107
+ }
108
+ catch (eventError) {
109
+ console.error("Failed to mark reaction event as failed", eventError);
110
+ }
111
+ }
112
+ if (executionStatus === "executing") {
113
+ try {
114
+ await this.agentService.completeExecution(contextSelector, executionId, "failed");
115
+ executionStatus = "failed";
116
+ }
117
+ catch (executionError) {
118
+ console.error("Failed to mark execution as failed", executionError);
119
+ }
120
+ }
121
+ };
122
+ const dataStreamResult = createDataStream({
123
+ execute: async ({ writer: dataStream }) => {
124
+ let loopSafety = 0;
125
+ const MAX_LOOPS = 20;
126
+ // load previous events
127
+ const previousEvents = await this.agentService.getEvents(contextSelector);
128
+ const events = previousEvents;
129
+ const contextId = currentContext.id;
130
+ let reactionEvent = await this.agentService.saveEvent(contextSelector, {
131
+ id: eventId,
132
+ type: "assistant",
133
+ channel: "agent",
134
+ createdAt: new Date().toISOString(),
135
+ content: { parts: [] },
136
+ status: "pending",
137
+ });
138
+ latestReactionEvent = reactionEvent;
139
+ dataStream.write({ type: "event-start", data: { eventId: eventId } });
140
+ while (loopSafety < MAX_LOOPS) {
141
+ dataStream.write({ type: "start-step" });
142
+ loopSafety++;
143
+ // Read context
144
+ const currentContext = await this.agentService.getContext(contextSelector);
145
+ dataStream.write({ type: "data-context-id", data: { contextId: currentContext.id } });
146
+ // Initialize on each loop and get new context data
147
+ const contextContent = await this.initialize(currentContext);
148
+ // Update context
149
+ const updatedContext = await this.agentService.updateContextContent({ id: currentContext.id }, contextContent);
150
+ // Build tools
151
+ const subclassToolsAll = await this.buildTools(updatedContext, dataStream);
152
+ // Build base tools for agent loop control
153
+ const baseTools = this.getBaseTools(dataStream, updatedContext.id);
154
+ const tools = { ...subclassToolsAll, ...baseTools };
155
+ // Add web search if enabled
156
+ if (options?.webSearch) {
157
+ tools.web_search = openai_1.openai.tools.webSearch();
158
+ }
159
+ // Extract execute functions from tools
160
+ const executeMap = {};
161
+ for (const [name, t] of Object.entries(subclassToolsAll)) {
162
+ if (t.execute) {
163
+ executeMap[name] = t.execute;
164
+ }
165
+ }
166
+ const include = this.includeBaseTools();
167
+ if (include.createMessage) {
168
+ executeMap["createMessage"] = (args) => this.executeCreateMessage(eventId, args, updatedContext.id, dataStream);
169
+ }
170
+ if (include.requestDirection) {
171
+ executeMap["requestDirection"] = (args) => this.executeRequestDirection(eventId, args, updatedContext.id, dataStream);
172
+ }
173
+ for (const [, t] of Object.entries(tools)) {
174
+ delete t.execute;
175
+ }
176
+ const messagesForModel = await (0, events_1.convertEventsToModelMessages)(reactionEvent.status !== "pending"
177
+ ? [...events, reactionEvent]
178
+ : [...events]);
179
+ const systemPrompt = await this.buildSystemPrompt(updatedContext);
180
+ const providerOptions = {};
181
+ if (options?.reasoningEffort) {
182
+ providerOptions.openai = {
183
+ reasoningEffort: options.reasoningEffort,
184
+ reasoningSummary: 'detailed',
185
+ };
186
+ }
187
+ const result = (0, ai_1.streamText)({
188
+ model: this.getModel(updatedContext),
189
+ system: systemPrompt,
190
+ messages: messagesForModel,
191
+ tools,
192
+ toolChoice: "required",
193
+ onStepFinish: (step) => {
194
+ console.log("onStepFinish", step);
195
+ },
196
+ stopWhen: (0, ai_1.stepCountIs)(1),
197
+ experimental_transform: (0, ai_1.smoothStream)({
198
+ delayInMs: 30,
199
+ chunking: 'word',
200
+ }),
201
+ ...(Object.keys(providerOptions).length > 0 && { providerOptions }),
202
+ });
203
+ result.consumeStream();
204
+ // create promise
205
+ let resolveFinish;
206
+ let rejectFinish;
207
+ const finishPromise = new Promise((resolve, reject) => {
208
+ resolveFinish = resolve;
209
+ rejectFinish = reject;
210
+ });
211
+ dataStream.merge(result.toUIMessageStream({
212
+ sendStart: false,
213
+ generateMessageId: () => {
214
+ return eventId;
215
+ },
216
+ messageMetadata(options) {
217
+ return {
218
+ eventId: eventId,
219
+ };
220
+ },
221
+ onFinish: ({ messages }) => {
222
+ console.log("messages", messages);
223
+ const lastEvent = (0, events_1.createAssistantEventFromUIMessages)(eventId, messages);
224
+ resolveFinish(lastEvent);
225
+ },
226
+ onError: (e) => {
227
+ console.error("Agent error:", e);
228
+ rejectFinish(e);
229
+ const message = e instanceof Error ? e.message : String(e);
230
+ return message;
231
+ }
232
+ }).pipeThrough(new TransformStream({
233
+ transform(chunk, controller) {
234
+ if (chunk.type === "start") {
235
+ return;
236
+ }
237
+ if (chunk.type === "finish-step") {
238
+ return;
239
+ }
240
+ if (chunk.type === "start-step") {
241
+ return;
242
+ }
243
+ if (chunk.type === "finish") {
244
+ return;
245
+ }
246
+ controller.enqueue(chunk);
247
+ }
248
+ })));
249
+ // wait for the on finish here
250
+ const lastEvent = await finishPromise;
251
+ const toolCalls = lastEvent.content.parts.reduce((acc, p) => {
252
+ if (typeof p.type === "string" && p.type.startsWith("tool-")) {
253
+ const toolName = p.type.split("-")[1];
254
+ acc.push({ toolCallId: p.toolCallId, toolName: toolName, args: p.input });
255
+ }
256
+ return acc;
257
+ }, []);
258
+ console.log("agent.toolCalls.detected", {
259
+ eventId,
260
+ toolCalls: toolCalls.map((call) => ({ toolCallId: call.toolCallId, toolName: call.toolName }))
261
+ });
262
+ if (!toolCalls.length) {
263
+ const shouldEndInteraction = await this.callOnEnd(lastEvent);
264
+ if (shouldEndInteraction) {
265
+ break;
266
+ }
267
+ continue;
268
+ }
269
+ const reactionEventWithParts = {
270
+ ...reactionEvent,
271
+ content: { parts: [...reactionEvent.content.parts, ...lastEvent.content.parts] },
272
+ };
273
+ let currentEventState = await this.agentService.updateEvent(reactionEvent.id, reactionEventWithParts);
274
+ latestReactionEvent = currentEventState;
275
+ const executionResults = await Promise.all(toolCalls.map(async (tc) => {
276
+ console.log("agent.toolCall.selected", {
277
+ eventId,
278
+ toolCallId: tc.toolCallId,
279
+ toolName: tc.toolName
280
+ });
281
+ let execSuccess = true;
282
+ let execMessage = "Executed";
283
+ let execResult = null;
284
+ try {
285
+ const execFn = executeMap[tc.toolName];
286
+ if (execFn) {
287
+ console.log("agent.toolCall.execute.start", { toolCallId: tc.toolCallId, toolName: tc.toolName });
288
+ execResult = await execFn(tc.args);
289
+ execSuccess = execResult?.success !== false;
290
+ execMessage = execResult?.message || execMessage;
291
+ console.log("agent.toolCall.execute.success", {
292
+ toolCallId: tc.toolCallId,
293
+ toolName: tc.toolName,
294
+ success: execSuccess
295
+ });
296
+ console.log("agent.toolCall.execute.result", {
297
+ toolCallId: tc.toolCallId,
298
+ toolName: tc.toolName,
299
+ result: execResult
300
+ });
301
+ }
302
+ }
303
+ catch (err) {
304
+ execSuccess = false;
305
+ execMessage = err.message;
306
+ console.error("agent.toolCall.execute.error", {
307
+ toolCallId: tc.toolCallId,
308
+ toolName: tc.toolName,
309
+ error: err
310
+ });
311
+ }
312
+ return { tc, execSuccess, execMessage, execResult };
313
+ }));
314
+ let exitOuterLoop = false;
315
+ const customFinalizationTools = await this.getFinalizationToolNames();
316
+ const allFinalToolNames = [...Story.FINAL_TOOL_NAMES, ...customFinalizationTools];
317
+ for (const { tc, execSuccess, execMessage, execResult } of executionResults) {
318
+ try {
319
+ if (execSuccess) {
320
+ dataStream.write({
321
+ type: "tool-output-available",
322
+ toolCallId: tc.toolCallId,
323
+ output: execResult,
324
+ });
325
+ }
326
+ else {
327
+ dataStream.write({
328
+ type: "tool-output-error",
329
+ toolCallId: tc.toolCallId,
330
+ errorText: String(execMessage || "Error"),
331
+ });
332
+ }
333
+ }
334
+ catch (e) {
335
+ console.error("Failed to write tool result to stream", e);
336
+ }
337
+ const existingParts = currentEventState?.content?.parts || [];
338
+ const mergedParts = existingParts.map((p) => {
339
+ if (p.type === `tool-${tc.toolName}` && p.toolCallId === tc.toolCallId) {
340
+ if (execSuccess) {
341
+ return {
342
+ ...p,
343
+ state: "output-available",
344
+ output: execResult,
345
+ };
346
+ }
347
+ return {
348
+ ...p,
349
+ state: "output-error",
350
+ errorText: String(execMessage || "Error"),
351
+ };
352
+ }
353
+ return p;
354
+ });
355
+ currentEventState = await this.agentService.updateEvent(currentEventState.id, {
356
+ id: currentEventState.id,
357
+ type: currentEventState.type,
358
+ channel: "agent",
359
+ createdAt: currentEventState.createdAt,
360
+ content: { parts: mergedParts },
361
+ });
362
+ dataStream.write({ type: "finish-step" });
363
+ await this.opts.onToolCallExecuted?.({
364
+ id: currentEventState.id,
365
+ toolCall: tc,
366
+ event: currentEventState.id,
367
+ success: execSuccess,
368
+ message: execMessage,
369
+ result: execResult,
370
+ });
371
+ let shouldEnd = false;
372
+ if (!execSuccess) {
373
+ const shouldEndInteraction = await this.callOnEnd(lastEvent);
374
+ if (shouldEndInteraction) {
375
+ shouldEnd = true;
376
+ }
377
+ }
378
+ if (!shouldEnd) {
379
+ if (allFinalToolNames.includes(tc.toolName)) {
380
+ const shouldEndInteraction = await this.callOnEnd(lastEvent);
381
+ if (shouldEndInteraction) {
382
+ shouldEnd = true;
383
+ }
384
+ }
385
+ }
386
+ if (shouldEnd) {
387
+ dataStream.write({ type: "finish", override: true });
388
+ exitOuterLoop = true;
389
+ break;
390
+ }
391
+ }
392
+ reactionEvent = currentEventState;
393
+ if (exitOuterLoop) {
394
+ break;
395
+ }
396
+ }
397
+ reactionEvent = await this.agentService.updateEvent(reactionEvent.id, {
398
+ ...reactionEvent,
399
+ status: "completed",
400
+ });
401
+ latestReactionEvent = reactionEvent;
402
+ try {
403
+ await this.agentService.completeExecution(contextSelector, executionId, "completed");
404
+ executionStatus = "completed";
405
+ }
406
+ catch (error) {
407
+ console.error("Failed to mark execution as completed", error);
408
+ }
409
+ },
410
+ onError: (error) => {
411
+ console.error("Agent error:", error);
412
+ void markFailure();
413
+ return error instanceof Error ? error.message : String(error);
414
+ },
415
+ onFinish: async () => {
416
+ if (executionStatus === "executing") {
417
+ try {
418
+ await this.agentService.completeExecution(contextSelector, executionId, "completed");
419
+ executionStatus = "completed";
420
+ }
421
+ catch (executionError) {
422
+ console.error("Failed to finalize execution on finish", executionError);
423
+ }
424
+ }
425
+ console.log("Agent finished");
426
+ }
427
+ });
428
+ // start the stream
429
+ const dataStreamFilteredResult = dataStreamResult.pipeThrough(new TransformStream({
430
+ transform(chunk, controller) {
431
+ if (chunk.type === "start") {
432
+ console.log("start", chunk.data);
433
+ return;
434
+ }
435
+ if (chunk.type === "event-start") {
436
+ controller.enqueue({ type: "start", messageId: chunk.data.eventId });
437
+ return;
438
+ }
439
+ controller.enqueue(chunk);
440
+ }
441
+ }));
442
+ return {
443
+ contextId: currentContext.id,
444
+ triggerEventId,
445
+ reactionEventId: eventId,
446
+ stream: dataStreamFilteredResult,
447
+ executionId,
448
+ };
449
+ }
450
+ async saveMessagesToThread(threadId, messages) {
451
+ // Placeholder for persistence hook. Not implemented in current scope.
452
+ return;
453
+ }
454
+ async callOnEnd(lastEvent) {
455
+ if (!this.opts.onEnd) {
456
+ return true;
457
+ }
458
+ try {
459
+ const result = await this.opts.onEnd(lastEvent);
460
+ if (typeof result === "boolean") {
461
+ return result;
462
+ }
463
+ if (result && typeof result === "object") {
464
+ if (Object.prototype.hasOwnProperty.call(result, "end")) {
465
+ return Boolean(result.end);
466
+ }
467
+ }
468
+ return true;
469
+ }
470
+ catch (error) {
471
+ console.error("onEnd callback failed", error);
472
+ return true;
473
+ }
474
+ }
475
+ }
476
+ exports.Story = Story;
477
+ exports.Agent = Story;
478
+ Story.FINAL_TOOL_NAMES = ["createMessage", "requestDirection", "end"];
479
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface DocumentToProcess {
2
+ buffer: Buffer;
3
+ fileName: string;
4
+ path: string;
5
+ fileId: string;
6
+ }
7
+ /**
8
+ * Procesa un documento utilizando LlamaParse y almacena el resultado en la base de datos
9
+ */
10
+ export declare function parseAndStoreDocument(db: any, buffer: Buffer, fileName: string, path: string, fileId: string): Promise<string>;
11
+ /**
12
+ * Procesa un conjunto de documentos en segundo plano
13
+ * Puede ser utilizado con after() en Next.js o en cualquier contexto de procesamiento asíncrono
14
+ */
15
+ export declare function processBatchDocuments(db: any, documents: DocumentToProcess[]): Promise<string[]>;
16
+ //# sourceMappingURL=document-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-parser.d.ts","sourceRoot":"","sources":["../src/document-parser.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AA6GD;;GAEG;AACH,wBAAsB,qBAAqB,CACvC,EAAE,EAAE,GAAG,EACP,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CA+DjB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAatG"}