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.
- package/LICENSE +21 -0
- package/README.md +284 -0
- package/README.zh.md +285 -0
- package/dist/agent/agent-definition.d.ts +107 -0
- package/dist/agent/agent-definition.d.ts.map +1 -0
- package/dist/agent/agent-definition.js +90 -0
- package/dist/agent/agent-definition.js.map +1 -0
- package/dist/agent/react-loop.d.ts +117 -0
- package/dist/agent/react-loop.d.ts.map +1 -0
- package/dist/agent/react-loop.js +674 -0
- package/dist/agent/react-loop.js.map +1 -0
- package/dist/agent/subagent-runner.d.ts +67 -0
- package/dist/agent/subagent-runner.d.ts.map +1 -0
- package/dist/agent/subagent-runner.js +168 -0
- package/dist/agent/subagent-runner.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/inputs.d.ts +56 -0
- package/dist/hooks/inputs.d.ts.map +1 -0
- package/dist/hooks/inputs.js +150 -0
- package/dist/hooks/inputs.js.map +1 -0
- package/dist/hooks/manager.d.ts +63 -0
- package/dist/hooks/manager.d.ts.map +1 -0
- package/dist/hooks/manager.js +137 -0
- package/dist/hooks/manager.js.map +1 -0
- package/dist/hooks/types.d.ts +191 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +6 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +109 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +218 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/errors.d.ts +26 -0
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/errors.js +43 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/index.d.ts +11 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +13 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/manager.d.ts +50 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +170 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/server-registry.d.ts +48 -0
- package/dist/mcp/server-registry.d.ts.map +1 -0
- package/dist/mcp/server-registry.js +121 -0
- package/dist/mcp/server-registry.js.map +1 -0
- package/dist/mcp/tool-adapter.d.ts +42 -0
- package/dist/mcp/tool-adapter.d.ts.map +1 -0
- package/dist/mcp/tool-adapter.js +89 -0
- package/dist/mcp/tool-adapter.js.map +1 -0
- package/dist/mcp/types.d.ts +74 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +21 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/permissions/index.d.ts +3 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +4 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/permissions/manager.d.ts +40 -0
- package/dist/permissions/manager.d.ts.map +1 -0
- package/dist/permissions/manager.js +115 -0
- package/dist/permissions/manager.js.map +1 -0
- package/dist/permissions/types.d.ts +124 -0
- package/dist/permissions/types.d.ts.map +1 -0
- package/dist/permissions/types.js +25 -0
- package/dist/permissions/types.js.map +1 -0
- package/dist/providers/anthropic.d.ts +18 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +126 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +85 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +36 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/google.d.ts +12 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +123 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/openai.d.ts +12 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +110 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/session/factory.d.ts +156 -0
- package/dist/session/factory.d.ts.map +1 -0
- package/dist/session/factory.js +311 -0
- package/dist/session/factory.js.map +1 -0
- package/dist/session/index.d.ts +8 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +7 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/session.d.ts +144 -0
- package/dist/session/session.d.ts.map +1 -0
- package/dist/session/session.js +319 -0
- package/dist/session/session.js.map +1 -0
- package/dist/session/storage.d.ts +105 -0
- package/dist/session/storage.d.ts.map +1 -0
- package/dist/session/storage.js +148 -0
- package/dist/session/storage.js.map +1 -0
- package/dist/tools/ask-user-question.d.ts +31 -0
- package/dist/tools/ask-user-question.d.ts.map +1 -0
- package/dist/tools/ask-user-question.js +66 -0
- package/dist/tools/ask-user-question.js.map +1 -0
- package/dist/tools/bash-output.d.ts +22 -0
- package/dist/tools/bash-output.d.ts.map +1 -0
- package/dist/tools/bash-output.js +43 -0
- package/dist/tools/bash-output.js.map +1 -0
- package/dist/tools/bash.d.ts +36 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +161 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.d.ts +24 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +83 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +22 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +248 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +39 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +312 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/kill-bash.d.ts +19 -0
- package/dist/tools/kill-bash.d.ts.map +1 -0
- package/dist/tools/kill-bash.js +64 -0
- package/dist/tools/kill-bash.js.map +1 -0
- package/dist/tools/read.d.ts +26 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +87 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/registry.d.ts +32 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +91 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/task-create.d.ts +22 -0
- package/dist/tools/task-create.d.ts.map +1 -0
- package/dist/tools/task-create.js +42 -0
- package/dist/tools/task-create.js.map +1 -0
- package/dist/tools/task-get.d.ts +19 -0
- package/dist/tools/task-get.d.ts.map +1 -0
- package/dist/tools/task-get.js +38 -0
- package/dist/tools/task-get.js.map +1 -0
- package/dist/tools/task-list.d.ts +18 -0
- package/dist/tools/task-list.d.ts.map +1 -0
- package/dist/tools/task-list.js +27 -0
- package/dist/tools/task-list.js.map +1 -0
- package/dist/tools/task-storage.d.ts +6 -0
- package/dist/tools/task-storage.d.ts.map +1 -0
- package/dist/tools/task-storage.js +83 -0
- package/dist/tools/task-storage.js.map +1 -0
- package/dist/tools/task-update.d.ts +28 -0
- package/dist/tools/task-update.d.ts.map +1 -0
- package/dist/tools/task-update.js +118 -0
- package/dist/tools/task-update.js.map +1 -0
- package/dist/tools/task.d.ts +80 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +99 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +21 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +124 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +20 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +127 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/write.d.ts +22 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +46 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types/messages.d.ts +138 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +88 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/task.d.ts +29 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +5 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/tools.d.ts +56 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +25 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +46 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/uuid.d.ts +3 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/uuid.js +5 -0
- package/dist/utils/uuid.js.map +1 -0
- 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"}
|