@looopy-ai/core 1.0.1

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 (132) hide show
  1. package/LICENSE +9 -0
  2. package/dist/core/agent.d.ts +53 -0
  3. package/dist/core/agent.js +416 -0
  4. package/dist/core/cleanup.d.ts +12 -0
  5. package/dist/core/cleanup.js +45 -0
  6. package/dist/core/index.d.ts +3 -0
  7. package/dist/core/index.js +3 -0
  8. package/dist/core/iteration.d.ts +5 -0
  9. package/dist/core/iteration.js +60 -0
  10. package/dist/core/logger.d.ts +11 -0
  11. package/dist/core/logger.js +31 -0
  12. package/dist/core/loop.d.ts +5 -0
  13. package/dist/core/loop.js +125 -0
  14. package/dist/core/tools.d.ts +4 -0
  15. package/dist/core/tools.js +78 -0
  16. package/dist/core/types.d.ts +30 -0
  17. package/dist/core/types.js +1 -0
  18. package/dist/events/index.d.ts +3 -0
  19. package/dist/events/index.js +2 -0
  20. package/dist/events/utils.d.ts +250 -0
  21. package/dist/events/utils.js +263 -0
  22. package/dist/index.d.ts +8 -0
  23. package/dist/index.js +8 -0
  24. package/dist/observability/index.d.ts +1 -0
  25. package/dist/observability/index.js +1 -0
  26. package/dist/observability/spans/agent-turn.d.ts +31 -0
  27. package/dist/observability/spans/agent-turn.js +94 -0
  28. package/dist/observability/spans/index.d.ts +5 -0
  29. package/dist/observability/spans/index.js +5 -0
  30. package/dist/observability/spans/iteration.d.ts +14 -0
  31. package/dist/observability/spans/iteration.js +41 -0
  32. package/dist/observability/spans/llm-call.d.ts +14 -0
  33. package/dist/observability/spans/llm-call.js +50 -0
  34. package/dist/observability/spans/loop.d.ts +14 -0
  35. package/dist/observability/spans/loop.js +40 -0
  36. package/dist/observability/spans/tool.d.ts +14 -0
  37. package/dist/observability/spans/tool.js +44 -0
  38. package/dist/observability/tracing.d.ts +58 -0
  39. package/dist/observability/tracing.js +203 -0
  40. package/dist/providers/chat-completions/aggregate.d.ts +4 -0
  41. package/dist/providers/chat-completions/aggregate.js +152 -0
  42. package/dist/providers/chat-completions/content.d.ts +25 -0
  43. package/dist/providers/chat-completions/content.js +229 -0
  44. package/dist/providers/chat-completions/index.d.ts +4 -0
  45. package/dist/providers/chat-completions/index.js +4 -0
  46. package/dist/providers/chat-completions/streaming.d.ts +12 -0
  47. package/dist/providers/chat-completions/streaming.js +3 -0
  48. package/dist/providers/chat-completions/types.d.ts +39 -0
  49. package/dist/providers/chat-completions/types.js +1 -0
  50. package/dist/providers/index.d.ts +2 -0
  51. package/dist/providers/index.js +1 -0
  52. package/dist/providers/litellm-provider.d.ts +43 -0
  53. package/dist/providers/litellm-provider.js +377 -0
  54. package/dist/server/event-buffer.d.ts +37 -0
  55. package/dist/server/event-buffer.js +116 -0
  56. package/dist/server/event-router.d.ts +31 -0
  57. package/dist/server/event-router.js +91 -0
  58. package/dist/server/index.d.ts +3 -0
  59. package/dist/server/index.js +3 -0
  60. package/dist/server/sse.d.ts +60 -0
  61. package/dist/server/sse.js +159 -0
  62. package/dist/stores/artifacts/artifact-scheduler.d.ts +50 -0
  63. package/dist/stores/artifacts/artifact-scheduler.js +86 -0
  64. package/dist/stores/artifacts/index.d.ts +3 -0
  65. package/dist/stores/artifacts/index.js +3 -0
  66. package/dist/stores/artifacts/internal-event-artifact-store.d.ts +54 -0
  67. package/dist/stores/artifacts/internal-event-artifact-store.js +126 -0
  68. package/dist/stores/artifacts/memory-artifact-store.d.ts +52 -0
  69. package/dist/stores/artifacts/memory-artifact-store.js +268 -0
  70. package/dist/stores/filesystem/filesystem-agent-store.d.ts +18 -0
  71. package/dist/stores/filesystem/filesystem-agent-store.js +61 -0
  72. package/dist/stores/filesystem/filesystem-artifact-store.d.ts +59 -0
  73. package/dist/stores/filesystem/filesystem-artifact-store.js +325 -0
  74. package/dist/stores/filesystem/filesystem-context-store.d.ts +37 -0
  75. package/dist/stores/filesystem/filesystem-context-store.js +245 -0
  76. package/dist/stores/filesystem/filesystem-message-store.d.ts +28 -0
  77. package/dist/stores/filesystem/filesystem-message-store.js +149 -0
  78. package/dist/stores/filesystem/filesystem-task-state-store.d.ts +27 -0
  79. package/dist/stores/filesystem/filesystem-task-state-store.js +220 -0
  80. package/dist/stores/filesystem/index.d.ts +10 -0
  81. package/dist/stores/filesystem/index.js +5 -0
  82. package/dist/stores/index.d.ts +5 -0
  83. package/dist/stores/index.js +5 -0
  84. package/dist/stores/memory/memory-state-store.d.ts +15 -0
  85. package/dist/stores/memory/memory-state-store.js +55 -0
  86. package/dist/stores/messages/hybrid-message-store.d.ts +29 -0
  87. package/dist/stores/messages/hybrid-message-store.js +72 -0
  88. package/dist/stores/messages/index.d.ts +4 -0
  89. package/dist/stores/messages/index.js +4 -0
  90. package/dist/stores/messages/interfaces.d.ts +42 -0
  91. package/dist/stores/messages/interfaces.js +18 -0
  92. package/dist/stores/messages/mem0-message-store.d.ts +34 -0
  93. package/dist/stores/messages/mem0-message-store.js +218 -0
  94. package/dist/stores/messages/memory-message-store.d.ts +27 -0
  95. package/dist/stores/messages/memory-message-store.js +183 -0
  96. package/dist/tools/artifact-tools.d.ts +4 -0
  97. package/dist/tools/artifact-tools.js +277 -0
  98. package/dist/tools/client-tool-provider.d.ts +25 -0
  99. package/dist/tools/client-tool-provider.js +139 -0
  100. package/dist/tools/index.d.ts +4 -0
  101. package/dist/tools/index.js +4 -0
  102. package/dist/tools/local-tools.d.ts +13 -0
  103. package/dist/tools/local-tools.js +70 -0
  104. package/dist/tools/mcp-client.d.ts +29 -0
  105. package/dist/tools/mcp-client.js +62 -0
  106. package/dist/tools/mcp-tool-provider.d.ts +22 -0
  107. package/dist/tools/mcp-tool-provider.js +86 -0
  108. package/dist/types/a2a.d.ts +36 -0
  109. package/dist/types/a2a.js +1 -0
  110. package/dist/types/agent.d.ts +14 -0
  111. package/dist/types/agent.js +1 -0
  112. package/dist/types/artifact.d.ts +126 -0
  113. package/dist/types/artifact.js +1 -0
  114. package/dist/types/context.d.ts +13 -0
  115. package/dist/types/context.js +1 -0
  116. package/dist/types/event.d.ts +360 -0
  117. package/dist/types/event.js +30 -0
  118. package/dist/types/index.d.ts +9 -0
  119. package/dist/types/index.js +9 -0
  120. package/dist/types/llm.d.ts +24 -0
  121. package/dist/types/llm.js +1 -0
  122. package/dist/types/message.d.ts +9 -0
  123. package/dist/types/message.js +1 -0
  124. package/dist/types/state.d.ts +86 -0
  125. package/dist/types/state.js +1 -0
  126. package/dist/types/tools.d.ts +57 -0
  127. package/dist/types/tools.js +53 -0
  128. package/dist/utils/error.d.ts +8 -0
  129. package/dist/utils/error.js +23 -0
  130. package/dist/utils/process-signals.d.ts +3 -0
  131. package/dist/utils/process-signals.js +67 -0
  132. package/package.json +54 -0
@@ -0,0 +1,125 @@
1
+ import { concat, EMPTY, expand, map, mergeMap, of, reduce, share, shareReplay, } from 'rxjs';
2
+ import { createTaskCompleteEvent, createTaskCreatedEvent, createTaskStatusEvent } from '../events';
3
+ import { startAgentLoopSpan } from '../observability/spans';
4
+ import { runIteration } from './iteration';
5
+ export const runLoop = (context, config, history) => {
6
+ const logger = context.logger.child({ component: 'loop' });
7
+ const { traceContext: loopContext, tapFinish } = startAgentLoopSpan({
8
+ agentId: context.agentId,
9
+ contextId: context.contextId,
10
+ taskId: context.taskId,
11
+ prompt: history.filter((m) => m.role === 'user').at(-1)?.content || '',
12
+ parentContext: context.parentContext,
13
+ });
14
+ logger.debug('Starting agent loop');
15
+ const taskEvent = createTaskCreatedEvent({
16
+ contextId: context.contextId,
17
+ taskId: context.taskId,
18
+ initiator: 'user',
19
+ metadata: {
20
+ historyLength: history.length,
21
+ },
22
+ });
23
+ const workingEvent = createTaskStatusEvent({
24
+ contextId: context.contextId,
25
+ taskId: context.taskId,
26
+ status: 'working',
27
+ metadata: {},
28
+ });
29
+ const merged$ = recursiveMerge({
30
+ messages: history,
31
+ completed: false,
32
+ iteration: 0,
33
+ }, (state) => runIteration({ ...context, parentContext: loopContext }, {
34
+ llmProvider: config.llmProvider,
35
+ iterationNumber: state.iteration,
36
+ }, state.messages), (state, { events }) => ({
37
+ ...state,
38
+ messages: [...state.messages, ...eventsToMessages(events)],
39
+ }), (e) => e.kind === 'content-complete' && e.finishReason !== 'tool_calls').pipe(shareReplay());
40
+ const finalSummary$ = merged$.pipe(reduce((last, e) => (e.kind === 'content-complete' ? e : last), null), mergeMap((last) => {
41
+ if (!last)
42
+ return EMPTY;
43
+ return of(createTaskCompleteEvent({
44
+ contextId: context.contextId,
45
+ taskId: context.taskId,
46
+ content: last.content,
47
+ metadata: { finishReason: last.finishReason },
48
+ }));
49
+ }));
50
+ return concat(of(taskEvent, workingEvent), merged$, finalSummary$).pipe(tapFinish);
51
+ };
52
+ function recursiveMerge(initial, eventsFor, next, isStop) {
53
+ const seed = {
54
+ state: initial,
55
+ iteration: 0,
56
+ events$: eventsFor({ ...initial, iteration: 0 }).pipe(shareReplay()),
57
+ };
58
+ const iterations$ = of(seed).pipe(expand(({ state, iteration, events$ }) => events$.pipe(reduce((acc, e) => {
59
+ acc.events.push(e);
60
+ if (isStop(e))
61
+ acc.sawStop = true;
62
+ return acc;
63
+ }, { events: [], sawStop: false }), mergeMap(({ events, sawStop }) => {
64
+ if (sawStop)
65
+ return EMPTY;
66
+ return of(next(state, { iteration, events })).pipe(map((nextState) => {
67
+ const nextIter = iteration + 1;
68
+ return {
69
+ state: nextState,
70
+ iteration: nextIter,
71
+ events$: eventsFor({
72
+ ...nextState,
73
+ iteration: nextIter,
74
+ }).pipe(share()),
75
+ };
76
+ }));
77
+ }))));
78
+ return iterations$.pipe(mergeMap(({ events$ }) => events$));
79
+ }
80
+ const eventsToMessages = (events) => {
81
+ const messages = [];
82
+ for (const event of events) {
83
+ switch (event.kind) {
84
+ case 'content-complete':
85
+ if (event.content) {
86
+ messages.push({
87
+ role: 'assistant',
88
+ content: event.content,
89
+ });
90
+ }
91
+ break;
92
+ case 'tool-call':
93
+ messages.push({
94
+ role: 'assistant',
95
+ content: '',
96
+ toolCalls: [
97
+ {
98
+ id: event.toolCallId,
99
+ type: 'function',
100
+ function: {
101
+ name: event.toolName,
102
+ arguments: event.arguments,
103
+ },
104
+ },
105
+ ],
106
+ });
107
+ break;
108
+ case 'tool-complete':
109
+ messages.push({
110
+ role: 'tool',
111
+ name: event.toolName,
112
+ content: event.success
113
+ ? event.result
114
+ ? JSON.stringify(event.result)
115
+ : 'Success'
116
+ : event.error || 'Error executing tool',
117
+ toolCallId: event.toolCallId,
118
+ });
119
+ break;
120
+ default:
121
+ break;
122
+ }
123
+ }
124
+ return messages;
125
+ };
@@ -0,0 +1,4 @@
1
+ import { type Observable } from 'rxjs';
2
+ import type { ToolCallEvent, ToolExecutionEvent } from '../types/event';
3
+ import type { IterationContext } from './types';
4
+ export declare const runToolCall: (context: IterationContext, toolCall: ToolCallEvent) => Observable<ToolExecutionEvent>;
@@ -0,0 +1,78 @@
1
+ import { concat, defer, of } from 'rxjs';
2
+ import { startToolExecuteSpan } from '../observability/spans';
3
+ export const runToolCall = (context, toolCall) => {
4
+ const logger = context.logger.child({
5
+ component: 'tool-call',
6
+ toolCallId: toolCall.toolCallId,
7
+ toolName: toolCall.toolName,
8
+ });
9
+ const toolStartEvent = {
10
+ kind: 'tool-start',
11
+ contextId: context.contextId,
12
+ taskId: context.taskId,
13
+ toolCallId: toolCall.toolCallId,
14
+ toolName: toolCall.toolName,
15
+ arguments: toolCall.arguments,
16
+ timestamp: new Date().toISOString(),
17
+ };
18
+ const { tapFinish } = startToolExecuteSpan(context, toolStartEvent);
19
+ const toolResultEvents$ = defer(async () => {
20
+ logger.trace('Executing tool');
21
+ const provider = context.toolProviders.find((p) => p.canHandle(toolCall.toolName));
22
+ if (!provider) {
23
+ logger.warn('No provider found for tool');
24
+ const errorMessage = `No provider found for tool: ${toolCall.toolName}`;
25
+ return createToolErrorEvent(context, toolCall, errorMessage);
26
+ }
27
+ try {
28
+ const result = await provider.execute({
29
+ id: toolCall.toolCallId,
30
+ type: 'function',
31
+ function: {
32
+ name: toolCall.toolName,
33
+ arguments: toolCall.arguments,
34
+ },
35
+ }, {
36
+ contextId: context.contextId,
37
+ taskId: context.taskId,
38
+ agentId: context.agentId,
39
+ parentContext: context.parentContext,
40
+ authContext: context.authContext,
41
+ });
42
+ logger.trace({
43
+ success: result.success,
44
+ }, 'Tool execution complete');
45
+ return createToolCompleteEvent(context, toolCall, result.result);
46
+ }
47
+ catch (error) {
48
+ const err = error instanceof Error ? error : new Error(String(error));
49
+ logger.error({
50
+ error: err.message,
51
+ stack: err.stack,
52
+ }, 'Tool execution failed');
53
+ return createToolErrorEvent(context, toolCall, err.message);
54
+ }
55
+ });
56
+ return concat(of(toolStartEvent), toolResultEvents$).pipe(tapFinish);
57
+ };
58
+ const createToolCompleteEvent = (context, toolCall, result) => ({
59
+ kind: 'tool-complete',
60
+ contextId: context.contextId,
61
+ taskId: context.taskId,
62
+ toolCallId: toolCall.toolCallId,
63
+ toolName: toolCall.toolName,
64
+ success: true,
65
+ result: result,
66
+ timestamp: new Date().toISOString(),
67
+ });
68
+ const createToolErrorEvent = (context, toolCall, errorMessage) => ({
69
+ kind: 'tool-complete',
70
+ contextId: context.contextId,
71
+ taskId: context.taskId,
72
+ toolCallId: toolCall.toolCallId,
73
+ toolName: toolCall.toolName,
74
+ success: false,
75
+ result: null,
76
+ error: errorMessage,
77
+ timestamp: new Date().toISOString(),
78
+ });
@@ -0,0 +1,30 @@
1
+ import type pino from 'pino';
2
+ import type { AuthContext } from '../types/context';
3
+ import type { LLMProvider } from '../types/llm';
4
+ import type { ToolProvider } from '../types/tools';
5
+ export type AgentContext = {
6
+ agentId: string;
7
+ contextId: string;
8
+ parentContext: import('@opentelemetry/api').Context;
9
+ authContext?: AuthContext;
10
+ toolProviders: ToolProvider[];
11
+ logger: pino.Logger;
12
+ systemPrompt?: string;
13
+ skillPrompts?: Record<string, string>;
14
+ metadata?: Record<string, unknown>;
15
+ };
16
+ export type TurnContext = AgentContext & {
17
+ taskId: string;
18
+ turnNumber: number;
19
+ };
20
+ export type LoopContext = TurnContext;
21
+ export type IterationContext = TurnContext;
22
+ export type LoopConfig = {
23
+ llmProvider: LLMProvider;
24
+ maxIterations: number;
25
+ stopOnToolError: boolean;
26
+ };
27
+ export type IterationConfig = {
28
+ llmProvider: LLMProvider;
29
+ iterationNumber: number;
30
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export { isArtifactEvent, isAuthenticationEvent, isContentStreamingEvent, isDebugEvent, isExternalEvent, isInputRequestEvent, isSubAgentEvent, isTaskLifecycleEvent, isThoughtStreamEvent, isToolExecutionEvent, } from '../types/event';
2
+ export type { CreateAuthCompletedEventOptions, CreateAuthRequiredEventOptions, CreateContentCompleteEventOptions, CreateContentDeltaEventOptions, CreateDatasetWriteEventOptions, CreateDataWriteEventOptions, CreateFileWriteEventOptions, CreateInputReceivedEventOptions, CreateInputRequiredEventOptions, CreateInternalCheckpointEventOptions, CreateInternalLLMCallEventOptions, CreateInternalThoughtProcessEventOptions, CreateSubtaskCreatedEventOptions, CreateTaskCompleteEventOptions, CreateTaskCreatedEventOptions, CreateTaskStatusEventOptions, CreateThoughtStreamEventOptions, CreateToolCompleteEventOptions, CreateToolProgressEventOptions, CreateToolStartEventOptions, } from './utils';
3
+ export { createAuthCompletedEvent, createAuthRequiredEvent, createContentCompleteEvent, createContentDeltaEvent, createDatasetWriteEvent, createDataWriteEvent, createFileWriteEvent, createInputReceivedEvent, createInputRequiredEvent, createInternalCheckpointEvent, createInternalLLMCallEvent, createInternalThoughtProcessEvent, createSubtaskCreatedEvent, createTaskCompleteEvent, createTaskCreatedEvent, createTaskStatusEvent, createThoughtStreamEvent, createToolCompleteEvent, createToolProgressEvent, createToolStartEvent, filterByContextId, filterByKind, filterByTaskId, filterExternalEvents, generateEventId, } from './utils';
@@ -0,0 +1,2 @@
1
+ export { isArtifactEvent, isAuthenticationEvent, isContentStreamingEvent, isDebugEvent, isExternalEvent, isInputRequestEvent, isSubAgentEvent, isTaskLifecycleEvent, isThoughtStreamEvent, isToolExecutionEvent, } from '../types/event';
2
+ export { createAuthCompletedEvent, createAuthRequiredEvent, createContentCompleteEvent, createContentDeltaEvent, createDatasetWriteEvent, createDataWriteEvent, createFileWriteEvent, createInputReceivedEvent, createInputRequiredEvent, createInternalCheckpointEvent, createInternalLLMCallEvent, createInternalThoughtProcessEvent, createSubtaskCreatedEvent, createTaskCompleteEvent, createTaskCreatedEvent, createTaskStatusEvent, createThoughtStreamEvent, createToolCompleteEvent, createToolProgressEvent, createToolStartEvent, filterByContextId, filterByKind, filterByTaskId, filterExternalEvents, generateEventId, } from './utils';
@@ -0,0 +1,250 @@
1
+ import type { AnyEvent, AuthCompletedEvent, AuthRequiredEvent, AuthType, ContentCompleteEvent, ContentDeltaEvent, DatasetWriteEvent, DataWriteEvent, FileWriteEvent, FinishReason, InputProvider, InputReceivedEvent, InputRequiredEvent, InputType, InternalCheckpointEvent, InternalLLMCallEvent, InternalThoughtProcessEvent, JSONSchema, SubtaskCreatedEvent, TaskCompleteEvent, TaskCreatedEvent, TaskInitiator, TaskStatus, TaskStatusEvent, ThoughtStreamEvent, ThoughtType, ThoughtVerbosity, ToolCompleteEvent, ToolProgressEvent, ToolStartEvent } from '../types/event';
2
+ export declare function generateEventId(): string;
3
+ export interface CreateTaskCreatedEventOptions {
4
+ contextId: string;
5
+ taskId: string;
6
+ parentTaskId?: string;
7
+ initiator: TaskInitiator;
8
+ metadata?: {
9
+ agentId?: string;
10
+ model?: string;
11
+ [key: string]: unknown;
12
+ };
13
+ }
14
+ export declare function createTaskCreatedEvent(options: CreateTaskCreatedEventOptions): TaskCreatedEvent;
15
+ export interface CreateTaskStatusEventOptions {
16
+ contextId: string;
17
+ taskId: string;
18
+ status: TaskStatus;
19
+ message?: string;
20
+ metadata?: {
21
+ reason?: string;
22
+ blockedBy?: string;
23
+ [key: string]: unknown;
24
+ };
25
+ }
26
+ export declare function createTaskStatusEvent(options: CreateTaskStatusEventOptions): TaskStatusEvent;
27
+ export interface CreateTaskCompleteEventOptions {
28
+ contextId: string;
29
+ taskId: string;
30
+ content?: string;
31
+ artifacts?: string[];
32
+ metadata?: {
33
+ duration?: number;
34
+ iterations?: number;
35
+ tokensUsed?: number;
36
+ [key: string]: unknown;
37
+ };
38
+ }
39
+ export declare function createTaskCompleteEvent(options: CreateTaskCompleteEventOptions): TaskCompleteEvent;
40
+ export interface CreateContentDeltaEventOptions {
41
+ contextId: string;
42
+ taskId: string;
43
+ delta: string;
44
+ index: number;
45
+ }
46
+ export declare function createContentDeltaEvent(options: CreateContentDeltaEventOptions): ContentDeltaEvent;
47
+ export interface CreateContentCompleteEventOptions {
48
+ contextId: string;
49
+ taskId: string;
50
+ content: string;
51
+ finishReason?: FinishReason;
52
+ }
53
+ export declare function createContentCompleteEvent(options: CreateContentCompleteEventOptions): ContentCompleteEvent;
54
+ export interface CreateToolStartEventOptions {
55
+ contextId: string;
56
+ taskId: string;
57
+ toolCallId: string;
58
+ toolName: string;
59
+ arguments: Record<string, unknown>;
60
+ metadata?: {
61
+ provider?: string;
62
+ concurrent?: boolean;
63
+ [key: string]: unknown;
64
+ };
65
+ }
66
+ export declare function createToolStartEvent(options: CreateToolStartEventOptions): ToolStartEvent;
67
+ export interface CreateToolProgressEventOptions {
68
+ contextId: string;
69
+ taskId: string;
70
+ toolCallId: string;
71
+ progress: number;
72
+ message?: string;
73
+ metadata?: {
74
+ step?: string;
75
+ stepsCompleted?: number;
76
+ stepsTotal?: number;
77
+ [key: string]: unknown;
78
+ };
79
+ }
80
+ export declare function createToolProgressEvent(options: CreateToolProgressEventOptions): ToolProgressEvent;
81
+ export interface CreateToolCompleteEventOptions {
82
+ contextId: string;
83
+ taskId: string;
84
+ toolCallId: string;
85
+ toolName: string;
86
+ success: boolean;
87
+ result?: unknown;
88
+ error?: string;
89
+ metadata?: {
90
+ duration?: number;
91
+ cached?: boolean;
92
+ retries?: number;
93
+ [key: string]: unknown;
94
+ };
95
+ }
96
+ export declare function createToolCompleteEvent(options: CreateToolCompleteEventOptions): ToolCompleteEvent;
97
+ export interface CreateInputRequiredEventOptions {
98
+ contextId: string;
99
+ taskId: string;
100
+ inputId: string;
101
+ requireUser?: boolean;
102
+ inputType: InputType;
103
+ prompt: string;
104
+ schema?: JSONSchema;
105
+ options?: unknown[];
106
+ metadata?: Record<string, unknown>;
107
+ }
108
+ export declare function createInputRequiredEvent(options: CreateInputRequiredEventOptions): InputRequiredEvent;
109
+ export interface CreateInputReceivedEventOptions {
110
+ contextId: string;
111
+ taskId: string;
112
+ inputId: string;
113
+ providedBy: InputProvider;
114
+ userId?: string;
115
+ agentId?: string;
116
+ metadata?: {
117
+ duration?: number;
118
+ [key: string]: unknown;
119
+ };
120
+ }
121
+ export declare function createInputReceivedEvent(options: CreateInputReceivedEventOptions): InputReceivedEvent;
122
+ export interface CreateAuthRequiredEventOptions {
123
+ contextId: string;
124
+ taskId: string;
125
+ authId: string;
126
+ authType: AuthType;
127
+ provider?: string;
128
+ scopes?: string[];
129
+ prompt: string;
130
+ authUrl?: string;
131
+ metadata?: {
132
+ expiresIn?: number;
133
+ [key: string]: unknown;
134
+ };
135
+ }
136
+ export declare function createAuthRequiredEvent(options: CreateAuthRequiredEventOptions): AuthRequiredEvent;
137
+ export interface CreateAuthCompletedEventOptions {
138
+ contextId: string;
139
+ taskId: string;
140
+ authId: string;
141
+ userId: string;
142
+ metadata?: {
143
+ expiresAt?: string;
144
+ [key: string]: unknown;
145
+ };
146
+ }
147
+ export declare function createAuthCompletedEvent(options: CreateAuthCompletedEventOptions): AuthCompletedEvent;
148
+ export interface CreateFileWriteEventOptions {
149
+ contextId: string;
150
+ taskId: string;
151
+ artifactId: string;
152
+ data: string;
153
+ index: number;
154
+ complete: boolean;
155
+ name?: string;
156
+ description?: string;
157
+ mimeType?: string;
158
+ encoding?: 'utf-8' | 'base64';
159
+ metadata?: {
160
+ toolCallId?: string;
161
+ totalSize?: number;
162
+ [key: string]: unknown;
163
+ };
164
+ }
165
+ export declare function createFileWriteEvent(options: CreateFileWriteEventOptions): FileWriteEvent;
166
+ export interface CreateDataWriteEventOptions {
167
+ contextId: string;
168
+ taskId: string;
169
+ artifactId: string;
170
+ data: Record<string, unknown>;
171
+ name?: string;
172
+ description?: string;
173
+ metadata?: {
174
+ toolCallId?: string;
175
+ version?: number;
176
+ [key: string]: unknown;
177
+ };
178
+ }
179
+ export declare function createDataWriteEvent(options: CreateDataWriteEventOptions): DataWriteEvent;
180
+ export interface CreateDatasetWriteEventOptions {
181
+ contextId: string;
182
+ taskId: string;
183
+ artifactId: string;
184
+ rows: Record<string, unknown>[];
185
+ index: number;
186
+ complete: boolean;
187
+ name?: string;
188
+ description?: string;
189
+ schema?: JSONSchema;
190
+ metadata?: {
191
+ toolCallId?: string;
192
+ totalRows?: number;
193
+ batchSize?: number;
194
+ [key: string]: unknown;
195
+ };
196
+ }
197
+ export declare function createDatasetWriteEvent(options: CreateDatasetWriteEventOptions): DatasetWriteEvent;
198
+ export interface CreateSubtaskCreatedEventOptions {
199
+ contextId: string;
200
+ taskId: string;
201
+ subtaskId: string;
202
+ agentId?: string;
203
+ prompt: string;
204
+ }
205
+ export declare function createSubtaskCreatedEvent(options: CreateSubtaskCreatedEventOptions): SubtaskCreatedEvent;
206
+ export interface CreateThoughtStreamEventOptions {
207
+ contextId: string;
208
+ taskId: string;
209
+ thoughtId: string;
210
+ thoughtType: ThoughtType;
211
+ verbosity: ThoughtVerbosity;
212
+ content: string;
213
+ index: number;
214
+ metadata?: {
215
+ confidence?: number;
216
+ alternatives?: string[];
217
+ relatedTo?: string;
218
+ [key: string]: unknown;
219
+ };
220
+ }
221
+ export declare function createThoughtStreamEvent(options: CreateThoughtStreamEventOptions): ThoughtStreamEvent;
222
+ export interface CreateInternalThoughtProcessEventOptions {
223
+ contextId: string;
224
+ taskId: string;
225
+ iteration: number;
226
+ stage: 'pre-llm' | 'post-llm' | 'pre-tool' | 'post-tool';
227
+ reasoning: string;
228
+ state: Record<string, unknown>;
229
+ }
230
+ export declare function createInternalThoughtProcessEvent(options: CreateInternalThoughtProcessEventOptions): InternalThoughtProcessEvent;
231
+ export interface CreateInternalLLMCallEventOptions {
232
+ contextId: string;
233
+ taskId: string;
234
+ iteration: number;
235
+ messageCount: number;
236
+ toolCount: number;
237
+ }
238
+ export declare function createInternalLLMCallEvent(options: CreateInternalLLMCallEventOptions): InternalLLMCallEvent;
239
+ export interface CreateInternalCheckpointEventOptions {
240
+ contextId: string;
241
+ taskId: string;
242
+ iteration: number;
243
+ }
244
+ export declare function createInternalCheckpointEvent(options: CreateInternalCheckpointEventOptions): InternalCheckpointEvent;
245
+ export declare function filterExternalEvents(events: AnyEvent[]): AnyEvent[];
246
+ export declare function filterByTaskId(events: AnyEvent[], taskId: string): AnyEvent[];
247
+ export declare function filterByContextId(events: AnyEvent[], contextId: string): AnyEvent[];
248
+ export declare function filterByKind<K extends AnyEvent['kind']>(events: AnyEvent[], kind: K): Extract<AnyEvent, {
249
+ kind: K;
250
+ }>[];