open-agent-sdk 0.1.0-alpha.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 (196) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +284 -0
  3. package/README.zh.md +285 -0
  4. package/dist/agent/agent-definition.d.ts +107 -0
  5. package/dist/agent/agent-definition.d.ts.map +1 -0
  6. package/dist/agent/agent-definition.js +90 -0
  7. package/dist/agent/agent-definition.js.map +1 -0
  8. package/dist/agent/react-loop.d.ts +117 -0
  9. package/dist/agent/react-loop.d.ts.map +1 -0
  10. package/dist/agent/react-loop.js +674 -0
  11. package/dist/agent/react-loop.js.map +1 -0
  12. package/dist/agent/subagent-runner.d.ts +67 -0
  13. package/dist/agent/subagent-runner.d.ts.map +1 -0
  14. package/dist/agent/subagent-runner.js +168 -0
  15. package/dist/agent/subagent-runner.js.map +1 -0
  16. package/dist/hooks/index.d.ts +8 -0
  17. package/dist/hooks/index.d.ts.map +1 -0
  18. package/dist/hooks/index.js +9 -0
  19. package/dist/hooks/index.js.map +1 -0
  20. package/dist/hooks/inputs.d.ts +56 -0
  21. package/dist/hooks/inputs.d.ts.map +1 -0
  22. package/dist/hooks/inputs.js +150 -0
  23. package/dist/hooks/inputs.js.map +1 -0
  24. package/dist/hooks/manager.d.ts +63 -0
  25. package/dist/hooks/manager.d.ts.map +1 -0
  26. package/dist/hooks/manager.js +137 -0
  27. package/dist/hooks/manager.js.map +1 -0
  28. package/dist/hooks/types.d.ts +191 -0
  29. package/dist/hooks/types.d.ts.map +1 -0
  30. package/dist/hooks/types.js +6 -0
  31. package/dist/hooks/types.js.map +1 -0
  32. package/dist/index.d.ts +109 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +218 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/mcp/errors.d.ts +26 -0
  37. package/dist/mcp/errors.d.ts.map +1 -0
  38. package/dist/mcp/errors.js +43 -0
  39. package/dist/mcp/errors.js.map +1 -0
  40. package/dist/mcp/index.d.ts +11 -0
  41. package/dist/mcp/index.d.ts.map +1 -0
  42. package/dist/mcp/index.js +13 -0
  43. package/dist/mcp/index.js.map +1 -0
  44. package/dist/mcp/manager.d.ts +50 -0
  45. package/dist/mcp/manager.d.ts.map +1 -0
  46. package/dist/mcp/manager.js +170 -0
  47. package/dist/mcp/manager.js.map +1 -0
  48. package/dist/mcp/server-registry.d.ts +48 -0
  49. package/dist/mcp/server-registry.d.ts.map +1 -0
  50. package/dist/mcp/server-registry.js +121 -0
  51. package/dist/mcp/server-registry.js.map +1 -0
  52. package/dist/mcp/tool-adapter.d.ts +42 -0
  53. package/dist/mcp/tool-adapter.d.ts.map +1 -0
  54. package/dist/mcp/tool-adapter.js +89 -0
  55. package/dist/mcp/tool-adapter.js.map +1 -0
  56. package/dist/mcp/types.d.ts +74 -0
  57. package/dist/mcp/types.d.ts.map +1 -0
  58. package/dist/mcp/types.js +21 -0
  59. package/dist/mcp/types.js.map +1 -0
  60. package/dist/permissions/index.d.ts +3 -0
  61. package/dist/permissions/index.d.ts.map +1 -0
  62. package/dist/permissions/index.js +4 -0
  63. package/dist/permissions/index.js.map +1 -0
  64. package/dist/permissions/manager.d.ts +40 -0
  65. package/dist/permissions/manager.d.ts.map +1 -0
  66. package/dist/permissions/manager.js +115 -0
  67. package/dist/permissions/manager.js.map +1 -0
  68. package/dist/permissions/types.d.ts +124 -0
  69. package/dist/permissions/types.d.ts.map +1 -0
  70. package/dist/permissions/types.js +25 -0
  71. package/dist/permissions/types.js.map +1 -0
  72. package/dist/providers/anthropic.d.ts +18 -0
  73. package/dist/providers/anthropic.d.ts.map +1 -0
  74. package/dist/providers/anthropic.js +126 -0
  75. package/dist/providers/anthropic.js.map +1 -0
  76. package/dist/providers/base.d.ts +85 -0
  77. package/dist/providers/base.d.ts.map +1 -0
  78. package/dist/providers/base.js +36 -0
  79. package/dist/providers/base.js.map +1 -0
  80. package/dist/providers/google.d.ts +12 -0
  81. package/dist/providers/google.d.ts.map +1 -0
  82. package/dist/providers/google.js +123 -0
  83. package/dist/providers/google.js.map +1 -0
  84. package/dist/providers/openai.d.ts +12 -0
  85. package/dist/providers/openai.d.ts.map +1 -0
  86. package/dist/providers/openai.js +110 -0
  87. package/dist/providers/openai.js.map +1 -0
  88. package/dist/session/factory.d.ts +156 -0
  89. package/dist/session/factory.d.ts.map +1 -0
  90. package/dist/session/factory.js +311 -0
  91. package/dist/session/factory.js.map +1 -0
  92. package/dist/session/index.d.ts +8 -0
  93. package/dist/session/index.d.ts.map +1 -0
  94. package/dist/session/index.js +7 -0
  95. package/dist/session/index.js.map +1 -0
  96. package/dist/session/session.d.ts +144 -0
  97. package/dist/session/session.d.ts.map +1 -0
  98. package/dist/session/session.js +319 -0
  99. package/dist/session/session.js.map +1 -0
  100. package/dist/session/storage.d.ts +105 -0
  101. package/dist/session/storage.d.ts.map +1 -0
  102. package/dist/session/storage.js +148 -0
  103. package/dist/session/storage.js.map +1 -0
  104. package/dist/tools/ask-user-question.d.ts +31 -0
  105. package/dist/tools/ask-user-question.d.ts.map +1 -0
  106. package/dist/tools/ask-user-question.js +66 -0
  107. package/dist/tools/ask-user-question.js.map +1 -0
  108. package/dist/tools/bash-output.d.ts +22 -0
  109. package/dist/tools/bash-output.d.ts.map +1 -0
  110. package/dist/tools/bash-output.js +43 -0
  111. package/dist/tools/bash-output.js.map +1 -0
  112. package/dist/tools/bash.d.ts +36 -0
  113. package/dist/tools/bash.d.ts.map +1 -0
  114. package/dist/tools/bash.js +161 -0
  115. package/dist/tools/bash.js.map +1 -0
  116. package/dist/tools/edit.d.ts +24 -0
  117. package/dist/tools/edit.d.ts.map +1 -0
  118. package/dist/tools/edit.js +83 -0
  119. package/dist/tools/edit.js.map +1 -0
  120. package/dist/tools/glob.d.ts +22 -0
  121. package/dist/tools/glob.d.ts.map +1 -0
  122. package/dist/tools/glob.js +248 -0
  123. package/dist/tools/glob.js.map +1 -0
  124. package/dist/tools/grep.d.ts +39 -0
  125. package/dist/tools/grep.d.ts.map +1 -0
  126. package/dist/tools/grep.js +312 -0
  127. package/dist/tools/grep.js.map +1 -0
  128. package/dist/tools/kill-bash.d.ts +19 -0
  129. package/dist/tools/kill-bash.d.ts.map +1 -0
  130. package/dist/tools/kill-bash.js +64 -0
  131. package/dist/tools/kill-bash.js.map +1 -0
  132. package/dist/tools/read.d.ts +26 -0
  133. package/dist/tools/read.d.ts.map +1 -0
  134. package/dist/tools/read.js +87 -0
  135. package/dist/tools/read.js.map +1 -0
  136. package/dist/tools/registry.d.ts +32 -0
  137. package/dist/tools/registry.d.ts.map +1 -0
  138. package/dist/tools/registry.js +91 -0
  139. package/dist/tools/registry.js.map +1 -0
  140. package/dist/tools/task-create.d.ts +22 -0
  141. package/dist/tools/task-create.d.ts.map +1 -0
  142. package/dist/tools/task-create.js +42 -0
  143. package/dist/tools/task-create.js.map +1 -0
  144. package/dist/tools/task-get.d.ts +19 -0
  145. package/dist/tools/task-get.d.ts.map +1 -0
  146. package/dist/tools/task-get.js +38 -0
  147. package/dist/tools/task-get.js.map +1 -0
  148. package/dist/tools/task-list.d.ts +18 -0
  149. package/dist/tools/task-list.d.ts.map +1 -0
  150. package/dist/tools/task-list.js +27 -0
  151. package/dist/tools/task-list.js.map +1 -0
  152. package/dist/tools/task-storage.d.ts +6 -0
  153. package/dist/tools/task-storage.d.ts.map +1 -0
  154. package/dist/tools/task-storage.js +83 -0
  155. package/dist/tools/task-storage.js.map +1 -0
  156. package/dist/tools/task-update.d.ts +28 -0
  157. package/dist/tools/task-update.d.ts.map +1 -0
  158. package/dist/tools/task-update.js +118 -0
  159. package/dist/tools/task-update.js.map +1 -0
  160. package/dist/tools/task.d.ts +80 -0
  161. package/dist/tools/task.d.ts.map +1 -0
  162. package/dist/tools/task.js +99 -0
  163. package/dist/tools/task.js.map +1 -0
  164. package/dist/tools/web-fetch.d.ts +21 -0
  165. package/dist/tools/web-fetch.d.ts.map +1 -0
  166. package/dist/tools/web-fetch.js +124 -0
  167. package/dist/tools/web-fetch.js.map +1 -0
  168. package/dist/tools/web-search.d.ts +20 -0
  169. package/dist/tools/web-search.d.ts.map +1 -0
  170. package/dist/tools/web-search.js +127 -0
  171. package/dist/tools/web-search.js.map +1 -0
  172. package/dist/tools/write.d.ts +22 -0
  173. package/dist/tools/write.d.ts.map +1 -0
  174. package/dist/tools/write.js +46 -0
  175. package/dist/tools/write.js.map +1 -0
  176. package/dist/types/messages.d.ts +138 -0
  177. package/dist/types/messages.d.ts.map +1 -0
  178. package/dist/types/messages.js +88 -0
  179. package/dist/types/messages.js.map +1 -0
  180. package/dist/types/task.d.ts +29 -0
  181. package/dist/types/task.d.ts.map +1 -0
  182. package/dist/types/task.js +5 -0
  183. package/dist/types/task.js.map +1 -0
  184. package/dist/types/tools.d.ts +56 -0
  185. package/dist/types/tools.d.ts.map +1 -0
  186. package/dist/types/tools.js +25 -0
  187. package/dist/types/tools.js.map +1 -0
  188. package/dist/utils/logger.d.ts +19 -0
  189. package/dist/utils/logger.d.ts.map +1 -0
  190. package/dist/utils/logger.js +46 -0
  191. package/dist/utils/logger.js.map +1 -0
  192. package/dist/utils/uuid.d.ts +3 -0
  193. package/dist/utils/uuid.d.ts.map +1 -0
  194. package/dist/utils/uuid.js +5 -0
  195. package/dist/utils/uuid.js.map +1 -0
  196. package/package.json +38 -0
@@ -0,0 +1,110 @@
1
+ import { createOpenAI } from '@ai-sdk/openai';
2
+ import { streamText, jsonSchema } from 'ai';
3
+ import { LLMProvider } from './base';
4
+ export class OpenAIProvider extends LLMProvider {
5
+ openAI;
6
+ constructor(config) {
7
+ super(config);
8
+ this.openAI = createOpenAI({
9
+ apiKey: config.apiKey,
10
+ baseURL: config.baseURL,
11
+ });
12
+ }
13
+ async *chat(messages, tools, signal, options) {
14
+ // Convert message format
15
+ const coreMessages = this.convertToCoreMessages(messages);
16
+ // Convert tools to Vercel AI SDK format
17
+ // ToolDefinition format: { type: 'function', function: { name, description, parameters } }
18
+ // Vercel AI SDK expects: { [name]: { description, inputSchema: Schema } }
19
+ const vercelTools = tools?.length
20
+ ? Object.fromEntries(tools.map((toolDef) => [
21
+ toolDef.function.name,
22
+ {
23
+ description: toolDef.function.description,
24
+ inputSchema: jsonSchema(toolDef.function.parameters),
25
+ },
26
+ ]))
27
+ : undefined;
28
+ // Use Vercel AI SDK's streamText
29
+ // When using a custom baseURL (e.g., Gemini's OpenAI-compatible endpoint),
30
+ // use openai.chat() to explicitly use Chat Completions API instead of Responses API
31
+ const model = this.config.baseURL
32
+ ? this.openAI.chat(this.config.model)
33
+ : this.openAI(this.config.model);
34
+ const result = streamText({
35
+ model,
36
+ messages: coreMessages,
37
+ system: options?.systemInstruction,
38
+ maxOutputTokens: this.config.maxTokens,
39
+ temperature: this.config.temperature,
40
+ abortSignal: signal,
41
+ tools: vercelTools,
42
+ });
43
+ // Process stream response
44
+ for await (const textDelta of result.textStream) {
45
+ yield { type: 'content', delta: textDelta };
46
+ }
47
+ // Get tool calls after stream completes (they are complete at this point)
48
+ const toolCalls = await result.toolCalls;
49
+ for (const toolCall of toolCalls) {
50
+ yield {
51
+ type: 'tool_call',
52
+ tool_call: {
53
+ id: toolCall.toolCallId,
54
+ name: toolCall.toolName,
55
+ // input can be undefined if the tool has no parameters, default to empty object
56
+ arguments: JSON.stringify(toolCall.input ?? {}),
57
+ },
58
+ };
59
+ }
60
+ // Get usage stats
61
+ const usage = await result.usage;
62
+ yield {
63
+ type: 'usage',
64
+ usage: {
65
+ input_tokens: usage.inputTokens ?? 0,
66
+ output_tokens: usage.outputTokens ?? 0,
67
+ },
68
+ };
69
+ yield { type: 'done' };
70
+ }
71
+ convertToCoreMessages(messages) {
72
+ return messages
73
+ .filter((msg) => msg.type !== 'system')
74
+ .map((msg) => {
75
+ switch (msg.type) {
76
+ case 'user':
77
+ return { role: 'user', content: msg.message.content };
78
+ case 'assistant': {
79
+ const text = msg.message.content
80
+ .filter((c) => c.type === 'text')
81
+ .map((c) => c.text)
82
+ .join('');
83
+ return { role: 'assistant', content: text };
84
+ }
85
+ case 'tool_result': {
86
+ // Get tool name from the tool call in the previous assistant message
87
+ const toolName = msg.tool_use_id ? 'Tool' : 'unknown';
88
+ // Output must be wrapped in {type, value} format per Vercel AI SDK schema
89
+ const outputValue = typeof msg.result === 'string' ? msg.result : JSON.stringify(msg.result);
90
+ return {
91
+ role: 'tool',
92
+ content: [{
93
+ type: 'tool-result',
94
+ toolCallId: msg.tool_use_id,
95
+ toolName,
96
+ output: {
97
+ type: 'text',
98
+ value: outputValue,
99
+ },
100
+ }],
101
+ };
102
+ }
103
+ default:
104
+ return null;
105
+ }
106
+ })
107
+ .filter((m) => m !== null);
108
+ }
109
+ }
110
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Session factory functions
3
+ * Provides createSession() and resumeSession() for managing session lifecycle
4
+ */
5
+ import { Session } from './session';
6
+ import { type SessionStorage } from './storage';
7
+ import { type LogLevel } from '../utils/logger';
8
+ import type { HooksConfig } from '../hooks/types';
9
+ import type { PermissionMode, CanUseTool } from '../permissions/types';
10
+ /** Options for creating a new session */
11
+ export interface CreateSessionOptions {
12
+ /** Model identifier (e.g., 'gpt-4o', 'gemini-2.0-flash') */
13
+ model: string;
14
+ /** Provider to use: 'openai', 'google', or 'anthropic' (auto-detected from model name if not specified) */
15
+ provider?: 'openai' | 'google' | 'anthropic';
16
+ /** API key (defaults to OPENAI_API_KEY or GEMINI_API_KEY env var based on provider) */
17
+ apiKey?: string;
18
+ /** Maximum conversation turns (default: 10) */
19
+ maxTurns?: number;
20
+ /** Allowed tools whitelist (default: all) */
21
+ allowedTools?: string[];
22
+ /** System prompt for the agent */
23
+ systemPrompt?: string;
24
+ /** Working directory (default: process.cwd()) */
25
+ cwd?: string;
26
+ /** Environment variables */
27
+ env?: Record<string, string>;
28
+ /** AbortController for cancellation */
29
+ abortController?: AbortController;
30
+ /** Storage implementation (default: InMemoryStorage) */
31
+ storage?: SessionStorage;
32
+ /** Permission mode for the session (default: 'default') */
33
+ permissionMode?: PermissionMode;
34
+ /** Required to be true when using bypassPermissions mode */
35
+ allowDangerouslySkipPermissions?: boolean;
36
+ /** Custom callback for tool permission checks */
37
+ canUseTool?: CanUseTool;
38
+ /** MCP servers configuration */
39
+ mcpServers?: Record<string, unknown>;
40
+ /** Log level: 'debug' | 'info' | 'warn' | 'error' | 'silent' (default: 'info') */
41
+ logLevel?: LogLevel;
42
+ /** Hooks configuration */
43
+ hooks?: HooksConfig;
44
+ }
45
+ /** Options for resuming an existing session */
46
+ export interface ResumeSessionOptions {
47
+ /** Storage implementation (default: InMemoryStorage) */
48
+ storage?: SessionStorage;
49
+ /** API key override (optional) */
50
+ apiKey?: string;
51
+ /** Log level: 'debug' | 'info' | 'warn' | 'error' | 'silent' (default: 'info') */
52
+ logLevel?: LogLevel;
53
+ /** Permission mode override (optional) */
54
+ permissionMode?: PermissionMode;
55
+ /** Required to be true when using bypassPermissions mode (optional) */
56
+ allowDangerouslySkipPermissions?: boolean;
57
+ /** Custom callback for tool permission checks (optional) */
58
+ canUseTool?: CanUseTool;
59
+ /** Hooks configuration (optional) */
60
+ hooks?: HooksConfig;
61
+ }
62
+ /** Options for forking an existing session */
63
+ export interface ForkSessionOptions {
64
+ /** API key override (optional) */
65
+ apiKey?: string;
66
+ /** Storage implementation (defaults to InMemoryStorage) */
67
+ storage?: SessionStorage;
68
+ /** Log level: 'debug' | 'info' | 'warn' | 'error' | 'silent' (default: 'info') */
69
+ logLevel?: LogLevel;
70
+ /** Model override (optional) */
71
+ model?: string;
72
+ /** Provider override (optional) */
73
+ provider?: 'openai' | 'google' | 'anthropic';
74
+ /** Permission mode override (optional) */
75
+ permissionMode?: PermissionMode;
76
+ /** Required to be true when using bypassPermissions mode (optional) */
77
+ allowDangerouslySkipPermissions?: boolean;
78
+ /** Custom callback for tool permission checks (optional) */
79
+ canUseTool?: CanUseTool;
80
+ /** Hooks configuration (optional) */
81
+ hooks?: HooksConfig;
82
+ }
83
+ /**
84
+ * Create a new session with the specified options
85
+ * Automatically creates ReActLoop and persists initial session data
86
+ *
87
+ * @param options - Session configuration options
88
+ * @returns Promise resolving to a new Session instance
89
+ * @throws Error if API key is not provided and not found in environment
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * const session = await createSession({
94
+ * model: 'gpt-4o',
95
+ * apiKey: process.env.OPENAI_API_KEY,
96
+ * systemPrompt: 'You are a helpful assistant',
97
+ * });
98
+ *
99
+ * await session.send('Hello!');
100
+ * for await (const message of session.stream()) {
101
+ * console.log(message);
102
+ * }
103
+ * await session.close();
104
+ * ```
105
+ */
106
+ export declare function createSession(options: CreateSessionOptions): Promise<Session>;
107
+ /**
108
+ * Resume an existing session from storage
109
+ * Restores message history and session state
110
+ *
111
+ * @param sessionId - ID of the session to resume
112
+ * @param options - Optional configuration for resuming
113
+ * @returns Promise resolving to the resumed Session instance
114
+ * @throws Error if session is not found in storage
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * // Resume a previous session
119
+ * const session = await resumeSession('session-id-123', {
120
+ * storage: fileStorage,
121
+ * });
122
+ *
123
+ * // Continue the conversation
124
+ * await session.send('Continuing from where we left off...');
125
+ * for await (const message of session.stream()) {
126
+ * console.log(message);
127
+ * }
128
+ * await session.close();
129
+ * ```
130
+ */
131
+ export declare function resumeSession(sessionId: string, options?: ResumeSessionOptions): Promise<Session>;
132
+ /**
133
+ * Fork an existing session, creating a new session with copied message history
134
+ * The new session can optionally override model, provider, and other options
135
+ *
136
+ * @param sourceSessionId - ID of the session to fork
137
+ * @param options - Optional configuration for the forked session
138
+ * @returns Promise resolving to the forked Session instance
139
+ * @throws Error if source session is not found in storage
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * // Fork a session to try a different approach
144
+ * const forked = await forkSession('original-session-id', {
145
+ * storage: fileStorage,
146
+ * model: 'claude-sonnet-4', // Try with different model
147
+ * });
148
+ *
149
+ * // The forked session has the same message history as the original
150
+ * for await (const message of forked.stream()) {
151
+ * console.log(message);
152
+ * }
153
+ * ```
154
+ */
155
+ export declare function forkSession(sourceSessionId: string, options?: ForkSessionOptions): Promise<Session>;
156
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/session/factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Session factory functions
3
+ * Provides createSession() and resumeSession() for managing session lifecycle
4
+ */
5
+ import { OpenAIProvider } from '../providers/openai';
6
+ import { GoogleProvider } from '../providers/google';
7
+ import { AnthropicProvider } from '../providers/anthropic';
8
+ import { createDefaultRegistry } from '../tools/registry';
9
+ import { ReActLoop } from '../agent/react-loop';
10
+ import { Session } from './session';
11
+ import { InMemoryStorage } from './storage';
12
+ import { logger } from '../utils/logger';
13
+ import { generateUUID } from '../utils/uuid';
14
+ /**
15
+ * Create a new session with the specified options
16
+ * Automatically creates ReActLoop and persists initial session data
17
+ *
18
+ * @param options - Session configuration options
19
+ * @returns Promise resolving to a new Session instance
20
+ * @throws Error if API key is not provided and not found in environment
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const session = await createSession({
25
+ * model: 'gpt-4o',
26
+ * apiKey: process.env.OPENAI_API_KEY,
27
+ * systemPrompt: 'You are a helpful assistant',
28
+ * });
29
+ *
30
+ * await session.send('Hello!');
31
+ * for await (const message of session.stream()) {
32
+ * console.log(message);
33
+ * }
34
+ * await session.close();
35
+ * ```
36
+ */
37
+ export async function createSession(options) {
38
+ // Set log level from options or environment variable
39
+ const logLevel = options.logLevel ??
40
+ process.env.OPEN_AGENT_SDK_LOG_LEVEL ??
41
+ 'info';
42
+ logger.setLevel(logLevel);
43
+ // Auto-detect provider from model name if not specified
44
+ const modelLower = options.model.toLowerCase();
45
+ const providerType = options.provider ??
46
+ (modelLower.includes('gemini') ? 'google' :
47
+ modelLower.includes('claude') ? 'anthropic' : 'openai');
48
+ // Get API key based on provider
49
+ const apiKey = options.apiKey ??
50
+ (providerType === 'google' ? process.env.GEMINI_API_KEY :
51
+ providerType === 'anthropic' ? process.env.ANTHROPIC_API_KEY : process.env.OPENAI_API_KEY);
52
+ if (!apiKey) {
53
+ const keyName = providerType === 'google' ? 'GEMINI_API_KEY' :
54
+ providerType === 'anthropic' ? 'ANTHROPIC_API_KEY' : 'OPENAI_API_KEY';
55
+ throw new Error(`${providerType} API key is required. Provide it via options.apiKey or ${keyName} environment variable.`);
56
+ }
57
+ // Create storage (default to InMemoryStorage)
58
+ const storage = options.storage ?? new InMemoryStorage();
59
+ // Create provider
60
+ let provider;
61
+ if (providerType === 'google') {
62
+ provider = new GoogleProvider({ apiKey, model: options.model });
63
+ }
64
+ else if (providerType === 'anthropic') {
65
+ provider = new AnthropicProvider({ apiKey, model: options.model });
66
+ }
67
+ else {
68
+ provider = new OpenAIProvider({ apiKey, model: options.model });
69
+ }
70
+ // Create tool registry with default tools
71
+ const toolRegistry = createDefaultRegistry();
72
+ // Create ReAct loop
73
+ const loop = new ReActLoop(provider, toolRegistry, {
74
+ maxTurns: options.maxTurns ?? 10,
75
+ systemPrompt: options.systemPrompt,
76
+ allowedTools: options.allowedTools,
77
+ cwd: options.cwd,
78
+ env: options.env,
79
+ abortController: options.abortController,
80
+ permissionMode: options.permissionMode,
81
+ allowDangerouslySkipPermissions: options.allowDangerouslySkipPermissions,
82
+ canUseTool: options.canUseTool,
83
+ mcpServers: options.mcpServers,
84
+ hooks: options.hooks,
85
+ });
86
+ // Create session
87
+ const session = new Session(loop, {
88
+ model: options.model,
89
+ provider: providerType,
90
+ }, storage);
91
+ // Save initial session data to storage
92
+ const sessionData = {
93
+ id: session.id,
94
+ model: session.model,
95
+ provider: session.provider,
96
+ createdAt: session.createdAt,
97
+ updatedAt: Date.now(),
98
+ messages: [],
99
+ options: {
100
+ model: options.model,
101
+ provider: providerType,
102
+ apiKey: options.apiKey,
103
+ maxTurns: options.maxTurns,
104
+ allowedTools: options.allowedTools,
105
+ systemPrompt: options.systemPrompt,
106
+ cwd: options.cwd,
107
+ env: options.env,
108
+ permissionMode: options.permissionMode,
109
+ allowDangerouslySkipPermissions: options.allowDangerouslySkipPermissions,
110
+ mcpServers: options.mcpServers,
111
+ hooks: options.hooks,
112
+ },
113
+ };
114
+ await storage.save(sessionData);
115
+ return session;
116
+ }
117
+ /**
118
+ * Resume an existing session from storage
119
+ * Restores message history and session state
120
+ *
121
+ * @param sessionId - ID of the session to resume
122
+ * @param options - Optional configuration for resuming
123
+ * @returns Promise resolving to the resumed Session instance
124
+ * @throws Error if session is not found in storage
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * // Resume a previous session
129
+ * const session = await resumeSession('session-id-123', {
130
+ * storage: fileStorage,
131
+ * });
132
+ *
133
+ * // Continue the conversation
134
+ * await session.send('Continuing from where we left off...');
135
+ * for await (const message of session.stream()) {
136
+ * console.log(message);
137
+ * }
138
+ * await session.close();
139
+ * ```
140
+ */
141
+ export async function resumeSession(sessionId, options) {
142
+ // Note: The permissionMode, allowDangerouslySkipPermissions, canUseTool, hooks from options
143
+ // will override the saved session options when passed
144
+ // Set log level from options or environment variable
145
+ const logLevel = options?.logLevel ??
146
+ process.env.OPEN_AGENT_SDK_LOG_LEVEL ??
147
+ 'info';
148
+ logger.setLevel(logLevel);
149
+ // Get storage (default to InMemoryStorage)
150
+ const storage = options?.storage ?? new InMemoryStorage();
151
+ // Load session data from storage
152
+ const sessionData = await storage.load(sessionId);
153
+ if (!sessionData) {
154
+ throw new Error(`Session with ID "${sessionId}" not found in storage.`);
155
+ }
156
+ // Get API key (use override or from options, or env var)
157
+ const providerType = sessionData.provider;
158
+ const apiKey = options?.apiKey ??
159
+ sessionData.options.apiKey ??
160
+ (providerType === 'google' ? process.env.GEMINI_API_KEY :
161
+ providerType === 'anthropic' ? process.env.ANTHROPIC_API_KEY : process.env.OPENAI_API_KEY);
162
+ if (!apiKey) {
163
+ const keyName = providerType === 'google' ? 'GEMINI_API_KEY' :
164
+ providerType === 'anthropic' ? 'ANTHROPIC_API_KEY' : 'OPENAI_API_KEY';
165
+ throw new Error(`${providerType} API key is required. Provide it via options.apiKey, saved session options, or ${keyName} environment variable.`);
166
+ }
167
+ // Create provider
168
+ let provider;
169
+ if (providerType === 'google') {
170
+ provider = new GoogleProvider({ apiKey, model: sessionData.model });
171
+ }
172
+ else if (providerType === 'anthropic') {
173
+ provider = new AnthropicProvider({ apiKey, model: sessionData.model });
174
+ }
175
+ else {
176
+ provider = new OpenAIProvider({ apiKey, model: sessionData.model });
177
+ }
178
+ // Create tool registry with default tools
179
+ const toolRegistry = createDefaultRegistry();
180
+ // Create ReAct loop with saved options, overridden by new options
181
+ const loop = new ReActLoop(provider, toolRegistry, {
182
+ maxTurns: sessionData.options.maxTurns ?? 10,
183
+ systemPrompt: sessionData.options.systemPrompt,
184
+ allowedTools: sessionData.options.allowedTools,
185
+ cwd: sessionData.options.cwd,
186
+ env: sessionData.options.env,
187
+ permissionMode: options?.permissionMode ?? sessionData.options.permissionMode,
188
+ allowDangerouslySkipPermissions: options?.allowDangerouslySkipPermissions ?? sessionData.options.allowDangerouslySkipPermissions,
189
+ canUseTool: options?.canUseTool,
190
+ mcpServers: sessionData.options.mcpServers,
191
+ hooks: options?.hooks,
192
+ });
193
+ // Restore session from storage
194
+ const session = await Session.loadFromStorage(sessionId, storage, loop);
195
+ if (!session) {
196
+ throw new Error(`Failed to load session with ID "${sessionId}".`);
197
+ }
198
+ return session;
199
+ }
200
+ /**
201
+ * Fork an existing session, creating a new session with copied message history
202
+ * The new session can optionally override model, provider, and other options
203
+ *
204
+ * @param sourceSessionId - ID of the session to fork
205
+ * @param options - Optional configuration for the forked session
206
+ * @returns Promise resolving to the forked Session instance
207
+ * @throws Error if source session is not found in storage
208
+ *
209
+ * @example
210
+ * ```typescript
211
+ * // Fork a session to try a different approach
212
+ * const forked = await forkSession('original-session-id', {
213
+ * storage: fileStorage,
214
+ * model: 'claude-sonnet-4', // Try with different model
215
+ * });
216
+ *
217
+ * // The forked session has the same message history as the original
218
+ * for await (const message of forked.stream()) {
219
+ * console.log(message);
220
+ * }
221
+ * ```
222
+ */
223
+ export async function forkSession(sourceSessionId, options = {}) {
224
+ // Set log level from options or environment variable
225
+ const logLevel = options.logLevel ??
226
+ process.env.OPEN_AGENT_SDK_LOG_LEVEL ??
227
+ 'info';
228
+ logger.setLevel(logLevel);
229
+ // Get storage (default to InMemoryStorage)
230
+ const storage = options.storage ?? new InMemoryStorage();
231
+ // Load source session data from storage
232
+ const sourceData = await storage.load(sourceSessionId);
233
+ if (!sourceData) {
234
+ throw new Error(`Source session "${sourceSessionId}" not found`);
235
+ }
236
+ // Determine provider and model (allow overrides)
237
+ const providerType = options.provider ?? sourceData.provider;
238
+ const model = options.model ?? sourceData.model;
239
+ // Get API key (use override, saved options, or env var)
240
+ const apiKey = options.apiKey ??
241
+ sourceData.options.apiKey ??
242
+ (providerType === 'google' ? process.env.GEMINI_API_KEY :
243
+ providerType === 'anthropic' ? process.env.ANTHROPIC_API_KEY : process.env.OPENAI_API_KEY);
244
+ if (!apiKey) {
245
+ const keyName = providerType === 'google' ? 'GEMINI_API_KEY' :
246
+ providerType === 'anthropic' ? 'ANTHROPIC_API_KEY' : 'OPENAI_API_KEY';
247
+ throw new Error(`${providerType} API key is required. Provide it via options.apiKey, saved session options, or ${keyName} environment variable.`);
248
+ }
249
+ // Create provider
250
+ let provider;
251
+ if (providerType === 'google') {
252
+ provider = new GoogleProvider({ apiKey, model });
253
+ }
254
+ else if (providerType === 'anthropic') {
255
+ provider = new AnthropicProvider({ apiKey, model });
256
+ }
257
+ else {
258
+ provider = new OpenAIProvider({ apiKey, model });
259
+ }
260
+ // Create tool registry with default tools
261
+ const toolRegistry = createDefaultRegistry();
262
+ // Create ReAct loop with inherited options, overridden by new options
263
+ const loop = new ReActLoop(provider, toolRegistry, {
264
+ maxTurns: sourceData.options.maxTurns ?? 10,
265
+ systemPrompt: sourceData.options.systemPrompt,
266
+ allowedTools: sourceData.options.allowedTools,
267
+ cwd: sourceData.options.cwd,
268
+ env: sourceData.options.env,
269
+ permissionMode: options.permissionMode ?? sourceData.options.permissionMode,
270
+ allowDangerouslySkipPermissions: options.allowDangerouslySkipPermissions ?? sourceData.options.allowDangerouslySkipPermissions,
271
+ canUseTool: options.canUseTool,
272
+ mcpServers: sourceData.options.mcpServers,
273
+ hooks: options.hooks ?? sourceData.options.hooks,
274
+ });
275
+ // Generate new session ID and fork timestamp
276
+ const newId = generateUUID();
277
+ const forkTimestamp = Date.now();
278
+ // Create new Session instance with fork metadata
279
+ const session = new Session(loop, {
280
+ id: newId,
281
+ model,
282
+ provider: providerType,
283
+ parentSessionId: sourceSessionId,
284
+ forkedAt: forkTimestamp,
285
+ }, storage);
286
+ // Copy message history from source session
287
+ session.messages = [...sourceData.messages];
288
+ session.createdAt = forkTimestamp;
289
+ // Save forked session data with parent tracking
290
+ const forkedData = {
291
+ id: newId,
292
+ model,
293
+ provider: providerType,
294
+ createdAt: forkTimestamp,
295
+ updatedAt: forkTimestamp,
296
+ messages: [...sourceData.messages],
297
+ options: {
298
+ ...sourceData.options,
299
+ model,
300
+ provider: providerType,
301
+ permissionMode: options.permissionMode ?? sourceData.options.permissionMode,
302
+ allowDangerouslySkipPermissions: options.allowDangerouslySkipPermissions ?? sourceData.options.allowDangerouslySkipPermissions,
303
+ hooks: options.hooks ?? sourceData.options.hooks,
304
+ },
305
+ parentSessionId: sourceSessionId,
306
+ forkedAt: forkTimestamp,
307
+ };
308
+ await storage.save(forkedData);
309
+ return session;
310
+ }
311
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/session/factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Session module exports
3
+ */
4
+ export { Session, SessionState, SessionError, SessionNotIdleError, SessionNotReadyError, SessionAlreadyStreamingError, SessionClosedError, } from './session';
5
+ export type { SessionOptions } from './session';
6
+ export { InMemoryStorage, FileStorage, type SessionStorage, type SessionData, type FileStorageOptions, } from './storage';
7
+ export { createSession, resumeSession, forkSession, type CreateSessionOptions, type ResumeSessionOptions, type ForkSessionOptions, } from './factory';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EACL,eAAe,EACf,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Session module exports
3
+ */
4
+ export { Session, SessionState, SessionError, SessionNotIdleError, SessionNotReadyError, SessionAlreadyStreamingError, SessionClosedError, } from './session';
5
+ export { InMemoryStorage, FileStorage, } from './storage';
6
+ export { createSession, resumeSession, forkSession, } from './factory';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAInB,OAAO,EACL,eAAe,EACf,WAAW,GAIZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,GAIZ,MAAM,WAAW,CAAC"}