@codeany/open-agent-sdk 0.2.2 → 0.2.3
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/dist/agent.d.ts +113 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +446 -0
- package/dist/agent.js.map +1 -0
- package/dist/engine.d.ts +62 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +496 -0
- package/dist/engine.js.map +1 -0
- package/dist/hooks.d.ts +111 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +179 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +133 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/client.d.ts +19 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +126 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/providers/anthropic.d.ts +17 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +47 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/index.d.ts +20 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +26 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai.d.ts +26 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +212 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/types.d.ts +84 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +11 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/sdk-mcp-server.d.ts +52 -0
- package/dist/sdk-mcp-server.d.ts.map +1 -0
- package/dist/sdk-mcp-server.js +57 -0
- package/dist/sdk-mcp-server.js.map +1 -0
- package/dist/session.d.ts +73 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +159 -0
- package/dist/session.js.map +1 -0
- package/dist/skills/bundled/commit.d.ts +7 -0
- package/dist/skills/bundled/commit.d.ts.map +1 -0
- package/dist/skills/bundled/commit.js +35 -0
- package/dist/skills/bundled/commit.js.map +1 -0
- package/dist/skills/bundled/debug.d.ts +7 -0
- package/dist/skills/bundled/debug.d.ts.map +1 -0
- package/{src/skills/bundled/debug.ts → dist/skills/bundled/debug.js} +20 -22
- package/dist/skills/bundled/debug.js.map +1 -0
- package/dist/skills/bundled/index.d.ts +11 -0
- package/dist/skills/bundled/index.d.ts.map +1 -0
- package/dist/skills/bundled/index.js +26 -0
- package/dist/skills/bundled/index.js.map +1 -0
- package/dist/skills/bundled/review.d.ts +7 -0
- package/dist/skills/bundled/review.d.ts.map +1 -0
- package/{src/skills/bundled/review.ts → dist/skills/bundled/review.js} +18 -21
- package/dist/skills/bundled/review.js.map +1 -0
- package/dist/skills/bundled/simplify.d.ts +8 -0
- package/dist/skills/bundled/simplify.d.ts.map +1 -0
- package/{src/skills/bundled/simplify.ts → dist/skills/bundled/simplify.js} +16 -19
- package/dist/skills/bundled/simplify.js.map +1 -0
- package/dist/skills/bundled/test.d.ts +7 -0
- package/dist/skills/bundled/test.d.ts.map +1 -0
- package/{src/skills/bundled/test.ts → dist/skills/bundled/test.js} +18 -21
- package/dist/skills/bundled/test.js.map +1 -0
- package/dist/skills/index.d.ts +7 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +8 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/registry.d.ts +43 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +111 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/types.d.ts +83 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +8 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/tool-helper.d.ts +73 -0
- package/dist/tool-helper.d.ts.map +1 -0
- package/dist/tool-helper.js +86 -0
- package/dist/tool-helper.js.map +1 -0
- package/dist/tools/agent-tool.d.ts +17 -0
- package/dist/tools/agent-tool.d.ts.map +1 -0
- package/dist/tools/agent-tool.js +146 -0
- package/dist/tools/agent-tool.js.map +1 -0
- package/dist/tools/ask-user.d.ts +18 -0
- package/dist/tools/ask-user.d.ts.map +1 -0
- package/dist/tools/ask-user.js +72 -0
- package/dist/tools/ask-user.js.map +1 -0
- package/dist/tools/bash.d.ts +5 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +67 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/config-tool.d.ts +20 -0
- package/dist/tools/config-tool.d.ts.map +1 -0
- package/dist/tools/config-tool.js +83 -0
- package/dist/tools/config-tool.js.map +1 -0
- package/dist/tools/cron-tools.d.ts +33 -0
- package/dist/tools/cron-tools.d.ts.map +1 -0
- package/dist/tools/cron-tools.js +128 -0
- package/dist/tools/cron-tools.js.map +1 -0
- package/dist/tools/edit.d.ts +5 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +70 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +5 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +75 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +5 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +168 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +45 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +162 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/lsp-tool.d.ts +9 -0
- package/dist/tools/lsp-tool.d.ts.map +1 -0
- package/dist/tools/lsp-tool.js +137 -0
- package/dist/tools/lsp-tool.js.map +1 -0
- package/dist/tools/mcp-resource-tools.d.ts +14 -0
- package/dist/tools/mcp-resource-tools.d.ts.map +1 -0
- package/dist/tools/mcp-resource-tools.js +117 -0
- package/dist/tools/mcp-resource-tools.js.map +1 -0
- package/dist/tools/notebook-edit.d.ts +5 -0
- package/dist/tools/notebook-edit.d.ts.map +1 -0
- package/dist/tools/notebook-edit.js +85 -0
- package/dist/tools/notebook-edit.js.map +1 -0
- package/dist/tools/plan-tools.d.ts +12 -0
- package/dist/tools/plan-tools.d.ts.map +1 -0
- package/dist/tools/plan-tools.js +77 -0
- package/dist/tools/plan-tools.js.map +1 -0
- package/dist/tools/read.d.ts +5 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +66 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/send-message.d.ts +31 -0
- package/dist/tools/send-message.d.ts.map +1 -0
- package/dist/tools/send-message.js +77 -0
- package/dist/tools/send-message.js.map +1 -0
- package/dist/tools/skill-tool.d.ts +9 -0
- package/dist/tools/skill-tool.d.ts.map +1 -0
- package/dist/tools/skill-tool.js +115 -0
- package/dist/tools/skill-tool.js.map +1 -0
- package/dist/tools/task-tools.d.ts +48 -0
- package/dist/tools/task-tools.d.ts.map +1 -0
- package/dist/tools/task-tools.js +242 -0
- package/dist/tools/task-tools.js.map +1 -0
- package/dist/tools/team-tools.d.ts +34 -0
- package/dist/tools/team-tools.d.ts.map +1 -0
- package/dist/tools/team-tools.js +103 -0
- package/dist/tools/team-tools.js.map +1 -0
- package/dist/tools/todo-tool.d.ts +22 -0
- package/dist/tools/todo-tool.d.ts.map +1 -0
- package/dist/tools/todo-tool.js +93 -0
- package/dist/tools/todo-tool.js.map +1 -0
- package/dist/tools/tool-search.d.ts +13 -0
- package/dist/tools/tool-search.d.ts.map +1 -0
- package/dist/tools/tool-search.js +76 -0
- package/dist/tools/tool-search.js.map +1 -0
- package/dist/tools/types.d.ts +29 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +52 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +5 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +60 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +5 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +77 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/worktree-tools.d.ts +10 -0
- package/dist/tools/worktree-tools.d.ts.map +1 -0
- package/dist/tools/worktree-tools.js +130 -0
- package/dist/tools/worktree-tools.js.map +1 -0
- package/dist/tools/write.d.ts +5 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +40 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types.d.ts +423 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/compact.d.ts +44 -0
- package/dist/utils/compact.d.ts.map +1 -0
- package/dist/utils/compact.js +162 -0
- package/dist/utils/compact.js.map +1 -0
- package/dist/utils/context.d.ts +35 -0
- package/dist/utils/context.d.ts.map +1 -0
- package/dist/utils/context.js +174 -0
- package/dist/utils/context.js.map +1 -0
- package/dist/utils/fileCache.d.ts +64 -0
- package/dist/utils/fileCache.d.ts.map +1 -0
- package/dist/utils/fileCache.js +117 -0
- package/dist/utils/fileCache.js.map +1 -0
- package/dist/utils/messages.d.ts +57 -0
- package/dist/utils/messages.d.ts.map +1 -0
- package/dist/utils/messages.js +152 -0
- package/dist/utils/messages.js.map +1 -0
- package/dist/utils/retry.d.ts +48 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +111 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/tokens.d.ts +57 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +134 -0
- package/dist/utils/tokens.js.map +1 -0
- package/package.json +6 -1
- package/.env.example +0 -8
- package/examples/01-simple-query.ts +0 -43
- package/examples/02-multi-tool.ts +0 -44
- package/examples/03-multi-turn.ts +0 -39
- package/examples/04-prompt-api.ts +0 -29
- package/examples/05-custom-system-prompt.ts +0 -26
- package/examples/06-mcp-server.ts +0 -49
- package/examples/07-custom-tools.ts +0 -87
- package/examples/08-official-api-compat.ts +0 -38
- package/examples/09-subagents.ts +0 -48
- package/examples/10-permissions.ts +0 -40
- package/examples/11-custom-mcp-tools.ts +0 -101
- package/examples/12-skills.ts +0 -88
- package/examples/13-hooks.ts +0 -88
- package/examples/14-openai-compat.ts +0 -71
- package/examples/web/index.html +0 -365
- package/examples/web/server.ts +0 -157
- package/src/agent.ts +0 -516
- package/src/engine.ts +0 -633
- package/src/hooks.ts +0 -261
- package/src/index.ts +0 -426
- package/src/mcp/client.ts +0 -150
- package/src/providers/anthropic.ts +0 -60
- package/src/providers/index.ts +0 -34
- package/src/providers/openai.ts +0 -315
- package/src/providers/types.ts +0 -85
- package/src/sdk-mcp-server.ts +0 -78
- package/src/session.ts +0 -227
- package/src/skills/bundled/commit.ts +0 -38
- package/src/skills/bundled/index.ts +0 -28
- package/src/skills/index.ts +0 -25
- package/src/skills/registry.ts +0 -133
- package/src/skills/types.ts +0 -99
- package/src/tool-helper.ts +0 -127
- package/src/tools/agent-tool.ts +0 -164
- package/src/tools/ask-user.ts +0 -79
- package/src/tools/bash.ts +0 -75
- package/src/tools/config-tool.ts +0 -89
- package/src/tools/cron-tools.ts +0 -153
- package/src/tools/edit.ts +0 -74
- package/src/tools/glob.ts +0 -77
- package/src/tools/grep.ts +0 -168
- package/src/tools/index.ts +0 -240
- package/src/tools/lsp-tool.ts +0 -163
- package/src/tools/mcp-resource-tools.ts +0 -125
- package/src/tools/notebook-edit.ts +0 -93
- package/src/tools/plan-tools.ts +0 -88
- package/src/tools/read.ts +0 -73
- package/src/tools/send-message.ts +0 -96
- package/src/tools/skill-tool.ts +0 -133
- package/src/tools/task-tools.ts +0 -290
- package/src/tools/team-tools.ts +0 -128
- package/src/tools/todo-tool.ts +0 -112
- package/src/tools/tool-search.ts +0 -87
- package/src/tools/types.ts +0 -66
- package/src/tools/web-fetch.ts +0 -66
- package/src/tools/web-search.ts +0 -86
- package/src/tools/worktree-tools.ts +0 -140
- package/src/tools/write.ts +0 -42
- package/src/types.ts +0 -486
- package/src/utils/compact.ts +0 -207
- package/src/utils/context.ts +0 -191
- package/src/utils/fileCache.ts +0 -148
- package/src/utils/messages.ts +0 -195
- package/src/utils/retry.ts +0 -140
- package/src/utils/tokens.ts +0 -145
- package/tsconfig.json +0 -19
package/dist/agent.d.ts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent - High-level API
|
|
3
|
+
*
|
|
4
|
+
* Provides createAgent() and query() interfaces compatible with
|
|
5
|
+
* open-agent-sdk.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { createAgent } from 'open-agent-sdk'
|
|
9
|
+
* const agent = createAgent({ model: 'claude-sonnet-4-6' })
|
|
10
|
+
* for await (const event of agent.query('Hello')) { ... }
|
|
11
|
+
*
|
|
12
|
+
* // OpenAI-compatible models
|
|
13
|
+
* const agent = createAgent({
|
|
14
|
+
* apiType: 'openai-completions',
|
|
15
|
+
* model: 'gpt-4o',
|
|
16
|
+
* apiKey: 'sk-...',
|
|
17
|
+
* baseURL: 'https://api.openai.com/v1',
|
|
18
|
+
* })
|
|
19
|
+
*/
|
|
20
|
+
import type { AgentOptions, QueryResult, SDKMessage, Message, PermissionMode } from './types.js';
|
|
21
|
+
import { type ApiType } from './providers/index.js';
|
|
22
|
+
export declare class Agent {
|
|
23
|
+
private cfg;
|
|
24
|
+
private toolPool;
|
|
25
|
+
private modelId;
|
|
26
|
+
private apiType;
|
|
27
|
+
private apiCredentials;
|
|
28
|
+
private provider;
|
|
29
|
+
private mcpLinks;
|
|
30
|
+
private history;
|
|
31
|
+
private messageLog;
|
|
32
|
+
private setupDone;
|
|
33
|
+
private sid;
|
|
34
|
+
private abortCtrl;
|
|
35
|
+
private currentEngine;
|
|
36
|
+
private hookRegistry;
|
|
37
|
+
constructor(options?: AgentOptions);
|
|
38
|
+
/**
|
|
39
|
+
* Resolve API type from options, env, or model name heuristic.
|
|
40
|
+
*/
|
|
41
|
+
private resolveApiType;
|
|
42
|
+
/** Pick API key and base URL from options or CODEANY_* env vars. */
|
|
43
|
+
private pickCredentials;
|
|
44
|
+
/** Read a value from process.env (returns undefined if missing). */
|
|
45
|
+
private readEnv;
|
|
46
|
+
/** Assemble the available tool set based on options. */
|
|
47
|
+
private buildToolPool;
|
|
48
|
+
/**
|
|
49
|
+
* Async initialization: connect MCP servers, register agents, resume sessions.
|
|
50
|
+
*/
|
|
51
|
+
private setup;
|
|
52
|
+
/**
|
|
53
|
+
* Run a query with streaming events.
|
|
54
|
+
*/
|
|
55
|
+
query(prompt: string, overrides?: Partial<AgentOptions>): AsyncGenerator<SDKMessage, void>;
|
|
56
|
+
/**
|
|
57
|
+
* Convenience method: send a prompt and collect the final answer as a single object.
|
|
58
|
+
* Internally iterates through the streaming query and aggregates the outcome.
|
|
59
|
+
*/
|
|
60
|
+
prompt(text: string, overrides?: Partial<AgentOptions>): Promise<QueryResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Get conversation messages.
|
|
63
|
+
*/
|
|
64
|
+
getMessages(): Message[];
|
|
65
|
+
/**
|
|
66
|
+
* Reset conversation history.
|
|
67
|
+
*/
|
|
68
|
+
clear(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Interrupt the current query.
|
|
71
|
+
*/
|
|
72
|
+
interrupt(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Change the model during a session.
|
|
75
|
+
*/
|
|
76
|
+
setModel(model?: string): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Change the permission mode during a session.
|
|
79
|
+
*/
|
|
80
|
+
setPermissionMode(mode: PermissionMode): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Set maximum thinking tokens.
|
|
83
|
+
*/
|
|
84
|
+
setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Get the session ID.
|
|
87
|
+
*/
|
|
88
|
+
getSessionId(): string;
|
|
89
|
+
/**
|
|
90
|
+
* Get the current API type.
|
|
91
|
+
*/
|
|
92
|
+
getApiType(): ApiType;
|
|
93
|
+
/**
|
|
94
|
+
* Stop a background task.
|
|
95
|
+
*/
|
|
96
|
+
stopTask(taskId: string): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Close MCP connections and clean up.
|
|
99
|
+
* Optionally persist session to disk.
|
|
100
|
+
*/
|
|
101
|
+
close(): Promise<void>;
|
|
102
|
+
}
|
|
103
|
+
/** Factory: shorthand for `new Agent(options)`. */
|
|
104
|
+
export declare function createAgent(options?: AgentOptions): Agent;
|
|
105
|
+
/**
|
|
106
|
+
* Execute a single agentic query without managing an Agent instance.
|
|
107
|
+
* The agent is created, used, and cleaned up automatically.
|
|
108
|
+
*/
|
|
109
|
+
export declare function query(params: {
|
|
110
|
+
prompt: string;
|
|
111
|
+
options?: AgentOptions;
|
|
112
|
+
}): AsyncGenerator<SDKMessage, void>;
|
|
113
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EAGV,OAAO,EACP,cAAc,EACf,MAAM,YAAY,CAAA;AAYnB,OAAO,EAAoC,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAOrF,qBAAa,KAAK;IAChB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,YAAY,CAAc;gBAEtB,OAAO,GAAE,YAAiB;IAkDtC;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB,oEAAoE;IACpE,OAAO,CAAC,eAAe;IAgBvB,oEAAoE;IACpE,OAAO,CAAC,OAAO;IAIf,wDAAwD;IACxD,OAAO,CAAC,aAAa;IAerB;;OAEG;YACW,KAAK;IAsCnB;;OAEG;IACI,KAAK,CACV,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAChC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC;IAqHnC;;;OAGG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAChC,OAAO,CAAC,WAAW,CAAC;IA+BvB;;OAEG;IACH,WAAW,IAAI,OAAO,EAAE;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;OAEG;IACG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D;;OAEG;IACG,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3E;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB7B;AAMD,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,OAAO,GAAE,YAAiB,GAAG,KAAK,CAE7D;AAMD;;;GAGG;AACH,wBAAuB,KAAK,CAAC,MAAM,EAAE;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAOnC"}
|
package/dist/agent.js
ADDED
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent - High-level API
|
|
3
|
+
*
|
|
4
|
+
* Provides createAgent() and query() interfaces compatible with
|
|
5
|
+
* open-agent-sdk.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { createAgent } from 'open-agent-sdk'
|
|
9
|
+
* const agent = createAgent({ model: 'claude-sonnet-4-6' })
|
|
10
|
+
* for await (const event of agent.query('Hello')) { ... }
|
|
11
|
+
*
|
|
12
|
+
* // OpenAI-compatible models
|
|
13
|
+
* const agent = createAgent({
|
|
14
|
+
* apiType: 'openai-completions',
|
|
15
|
+
* model: 'gpt-4o',
|
|
16
|
+
* apiKey: 'sk-...',
|
|
17
|
+
* baseURL: 'https://api.openai.com/v1',
|
|
18
|
+
* })
|
|
19
|
+
*/
|
|
20
|
+
import { QueryEngine } from './engine.js';
|
|
21
|
+
import { getAllBaseTools, filterTools } from './tools/index.js';
|
|
22
|
+
import { connectMCPServer } from './mcp/client.js';
|
|
23
|
+
import { isSdkServerConfig } from './sdk-mcp-server.js';
|
|
24
|
+
import { registerAgents } from './tools/agent-tool.js';
|
|
25
|
+
import { saveSession, loadSession, } from './session.js';
|
|
26
|
+
import { createHookRegistry } from './hooks.js';
|
|
27
|
+
import { initBundledSkills } from './skills/index.js';
|
|
28
|
+
import { createProvider } from './providers/index.js';
|
|
29
|
+
// --------------------------------------------------------------------------
|
|
30
|
+
// Agent class
|
|
31
|
+
// --------------------------------------------------------------------------
|
|
32
|
+
export class Agent {
|
|
33
|
+
cfg;
|
|
34
|
+
toolPool;
|
|
35
|
+
modelId;
|
|
36
|
+
apiType;
|
|
37
|
+
apiCredentials;
|
|
38
|
+
provider;
|
|
39
|
+
mcpLinks = [];
|
|
40
|
+
history = [];
|
|
41
|
+
messageLog = [];
|
|
42
|
+
setupDone;
|
|
43
|
+
sid;
|
|
44
|
+
abortCtrl = null;
|
|
45
|
+
currentEngine = null;
|
|
46
|
+
hookRegistry;
|
|
47
|
+
constructor(options = {}) {
|
|
48
|
+
// Shallow copy to avoid mutating caller's object
|
|
49
|
+
this.cfg = { ...options };
|
|
50
|
+
// Merge credentials from options.env map, direct options, and process.env
|
|
51
|
+
this.apiCredentials = this.pickCredentials();
|
|
52
|
+
this.modelId = this.cfg.model ?? this.readEnv('CODEANY_MODEL') ?? 'claude-sonnet-4-6';
|
|
53
|
+
this.sid = this.cfg.sessionId ?? crypto.randomUUID();
|
|
54
|
+
// Resolve API type
|
|
55
|
+
this.apiType = this.resolveApiType();
|
|
56
|
+
// Create LLM provider
|
|
57
|
+
this.provider = createProvider(this.apiType, {
|
|
58
|
+
apiKey: this.apiCredentials.key,
|
|
59
|
+
baseURL: this.apiCredentials.baseUrl,
|
|
60
|
+
});
|
|
61
|
+
// Initialize bundled skills
|
|
62
|
+
initBundledSkills();
|
|
63
|
+
// Build hook registry from options
|
|
64
|
+
this.hookRegistry = createHookRegistry();
|
|
65
|
+
if (this.cfg.hooks) {
|
|
66
|
+
// Convert AgentOptions hooks format to HookConfig
|
|
67
|
+
for (const [event, defs] of Object.entries(this.cfg.hooks)) {
|
|
68
|
+
for (const def of defs) {
|
|
69
|
+
for (const handler of def.hooks) {
|
|
70
|
+
this.hookRegistry.register(event, {
|
|
71
|
+
matcher: def.matcher,
|
|
72
|
+
timeout: def.timeout,
|
|
73
|
+
handler: async (input) => {
|
|
74
|
+
const result = await handler(input, input.toolUseId || '', {
|
|
75
|
+
signal: this.abortCtrl?.signal || new AbortController().signal,
|
|
76
|
+
});
|
|
77
|
+
return result || undefined;
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Build tool pool from options (supports ToolDefinition[], string[], or preset)
|
|
85
|
+
this.toolPool = this.buildToolPool();
|
|
86
|
+
// Kick off async setup (MCP connections, agent registration, session resume)
|
|
87
|
+
this.setupDone = this.setup();
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Resolve API type from options, env, or model name heuristic.
|
|
91
|
+
*/
|
|
92
|
+
resolveApiType() {
|
|
93
|
+
// Explicit option
|
|
94
|
+
if (this.cfg.apiType)
|
|
95
|
+
return this.cfg.apiType;
|
|
96
|
+
// Env var
|
|
97
|
+
const envType = this.cfg.env?.CODEANY_API_TYPE ??
|
|
98
|
+
this.readEnv('CODEANY_API_TYPE');
|
|
99
|
+
if (envType === 'openai-completions' || envType === 'anthropic-messages') {
|
|
100
|
+
return envType;
|
|
101
|
+
}
|
|
102
|
+
// Heuristic from model name
|
|
103
|
+
const model = this.modelId.toLowerCase();
|
|
104
|
+
if (model.includes('gpt-') ||
|
|
105
|
+
model.includes('o1') ||
|
|
106
|
+
model.includes('o3') ||
|
|
107
|
+
model.includes('o4') ||
|
|
108
|
+
model.includes('deepseek') ||
|
|
109
|
+
model.includes('qwen') ||
|
|
110
|
+
model.includes('yi-') ||
|
|
111
|
+
model.includes('glm') ||
|
|
112
|
+
model.includes('mistral') ||
|
|
113
|
+
model.includes('gemma')) {
|
|
114
|
+
return 'openai-completions';
|
|
115
|
+
}
|
|
116
|
+
return 'anthropic-messages';
|
|
117
|
+
}
|
|
118
|
+
/** Pick API key and base URL from options or CODEANY_* env vars. */
|
|
119
|
+
pickCredentials() {
|
|
120
|
+
const envMap = this.cfg.env;
|
|
121
|
+
return {
|
|
122
|
+
key: this.cfg.apiKey ??
|
|
123
|
+
envMap?.CODEANY_API_KEY ??
|
|
124
|
+
envMap?.CODEANY_AUTH_TOKEN ??
|
|
125
|
+
this.readEnv('CODEANY_API_KEY') ??
|
|
126
|
+
this.readEnv('CODEANY_AUTH_TOKEN'),
|
|
127
|
+
baseUrl: this.cfg.baseURL ??
|
|
128
|
+
envMap?.CODEANY_BASE_URL ??
|
|
129
|
+
this.readEnv('CODEANY_BASE_URL'),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/** Read a value from process.env (returns undefined if missing). */
|
|
133
|
+
readEnv(key) {
|
|
134
|
+
return process.env[key] || undefined;
|
|
135
|
+
}
|
|
136
|
+
/** Assemble the available tool set based on options. */
|
|
137
|
+
buildToolPool() {
|
|
138
|
+
const raw = this.cfg.tools;
|
|
139
|
+
let pool;
|
|
140
|
+
if (!raw || (typeof raw === 'object' && !Array.isArray(raw) && 'type' in raw)) {
|
|
141
|
+
pool = getAllBaseTools();
|
|
142
|
+
}
|
|
143
|
+
else if (Array.isArray(raw) && raw.length > 0 && typeof raw[0] === 'string') {
|
|
144
|
+
pool = filterTools(getAllBaseTools(), raw);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
pool = raw;
|
|
148
|
+
}
|
|
149
|
+
return filterTools(pool, this.cfg.allowedTools, this.cfg.disallowedTools);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Async initialization: connect MCP servers, register agents, resume sessions.
|
|
153
|
+
*/
|
|
154
|
+
async setup() {
|
|
155
|
+
// Register custom agent definitions
|
|
156
|
+
if (this.cfg.agents) {
|
|
157
|
+
registerAgents(this.cfg.agents);
|
|
158
|
+
}
|
|
159
|
+
// Connect MCP servers (supports stdio, SSE, HTTP, and in-process SDK servers)
|
|
160
|
+
if (this.cfg.mcpServers) {
|
|
161
|
+
for (const [name, config] of Object.entries(this.cfg.mcpServers)) {
|
|
162
|
+
try {
|
|
163
|
+
if (isSdkServerConfig(config)) {
|
|
164
|
+
// In-process SDK MCP server - directly add tools
|
|
165
|
+
this.toolPool = [...this.toolPool, ...config.tools];
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// External MCP server
|
|
169
|
+
const connection = await connectMCPServer(name, config);
|
|
170
|
+
this.mcpLinks.push(connection);
|
|
171
|
+
if (connection.status === 'connected' && connection.tools.length > 0) {
|
|
172
|
+
this.toolPool = [...this.toolPool, ...connection.tools];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
console.error(`[MCP] Failed to connect to "${name}": ${err.message}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Resume or continue session
|
|
182
|
+
if (this.cfg.resume) {
|
|
183
|
+
const sessionData = await loadSession(this.cfg.resume);
|
|
184
|
+
if (sessionData) {
|
|
185
|
+
this.history = sessionData.messages;
|
|
186
|
+
this.sid = this.cfg.resume;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Run a query with streaming events.
|
|
192
|
+
*/
|
|
193
|
+
async *query(prompt, overrides) {
|
|
194
|
+
await this.setupDone;
|
|
195
|
+
const opts = { ...this.cfg, ...overrides };
|
|
196
|
+
const cwd = opts.cwd || process.cwd();
|
|
197
|
+
// Create abort controller for this query
|
|
198
|
+
this.abortCtrl = opts.abortController || new AbortController();
|
|
199
|
+
if (opts.abortSignal) {
|
|
200
|
+
opts.abortSignal.addEventListener('abort', () => this.abortCtrl?.abort(), { once: true });
|
|
201
|
+
}
|
|
202
|
+
// Resolve systemPrompt (handle preset object)
|
|
203
|
+
let systemPrompt;
|
|
204
|
+
let appendSystemPrompt = opts.appendSystemPrompt;
|
|
205
|
+
if (typeof opts.systemPrompt === 'object' && opts.systemPrompt?.type === 'preset') {
|
|
206
|
+
systemPrompt = undefined; // Use engine default (default style)
|
|
207
|
+
if (opts.systemPrompt.append) {
|
|
208
|
+
appendSystemPrompt = (appendSystemPrompt || '') + '\n' + opts.systemPrompt.append;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
systemPrompt = opts.systemPrompt;
|
|
213
|
+
}
|
|
214
|
+
// Build canUseTool based on permission mode
|
|
215
|
+
const permMode = opts.permissionMode ?? 'bypassPermissions';
|
|
216
|
+
const canUseTool = opts.canUseTool ?? (async (_tool, _input) => {
|
|
217
|
+
if (permMode === 'bypassPermissions' || permMode === 'dontAsk' || permMode === 'auto') {
|
|
218
|
+
return { behavior: 'allow' };
|
|
219
|
+
}
|
|
220
|
+
if (permMode === 'acceptEdits') {
|
|
221
|
+
return { behavior: 'allow' };
|
|
222
|
+
}
|
|
223
|
+
return { behavior: 'allow' };
|
|
224
|
+
});
|
|
225
|
+
// Resolve tools with overrides
|
|
226
|
+
let tools = this.toolPool;
|
|
227
|
+
if (overrides?.allowedTools || overrides?.disallowedTools) {
|
|
228
|
+
tools = filterTools(tools, overrides.allowedTools, overrides.disallowedTools);
|
|
229
|
+
}
|
|
230
|
+
if (overrides?.tools) {
|
|
231
|
+
const ot = overrides.tools;
|
|
232
|
+
if (Array.isArray(ot) && ot.length > 0 && typeof ot[0] === 'string') {
|
|
233
|
+
tools = filterTools(this.toolPool, ot);
|
|
234
|
+
}
|
|
235
|
+
else if (Array.isArray(ot)) {
|
|
236
|
+
tools = ot;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Recreate provider if overrides change credentials or apiType
|
|
240
|
+
let provider = this.provider;
|
|
241
|
+
if (overrides?.apiType || overrides?.apiKey || overrides?.baseURL) {
|
|
242
|
+
const resolvedApiType = overrides.apiType ?? this.apiType;
|
|
243
|
+
provider = createProvider(resolvedApiType, {
|
|
244
|
+
apiKey: overrides.apiKey ?? this.apiCredentials.key,
|
|
245
|
+
baseURL: overrides.baseURL ?? this.apiCredentials.baseUrl,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
// Create query engine with current conversation state
|
|
249
|
+
const engine = new QueryEngine({
|
|
250
|
+
cwd,
|
|
251
|
+
model: opts.model || this.modelId,
|
|
252
|
+
provider,
|
|
253
|
+
tools,
|
|
254
|
+
systemPrompt,
|
|
255
|
+
appendSystemPrompt,
|
|
256
|
+
maxTurns: opts.maxTurns ?? 10,
|
|
257
|
+
maxBudgetUsd: opts.maxBudgetUsd,
|
|
258
|
+
maxTokens: opts.maxTokens ?? 16384,
|
|
259
|
+
thinking: opts.thinking,
|
|
260
|
+
jsonSchema: opts.jsonSchema,
|
|
261
|
+
canUseTool,
|
|
262
|
+
includePartialMessages: opts.includePartialMessages ?? false,
|
|
263
|
+
abortSignal: this.abortCtrl.signal,
|
|
264
|
+
agents: opts.agents,
|
|
265
|
+
hookRegistry: this.hookRegistry,
|
|
266
|
+
sessionId: this.sid,
|
|
267
|
+
});
|
|
268
|
+
this.currentEngine = engine;
|
|
269
|
+
// Inject existing conversation history
|
|
270
|
+
for (const msg of this.history) {
|
|
271
|
+
engine.messages.push(msg);
|
|
272
|
+
}
|
|
273
|
+
// Run the engine
|
|
274
|
+
for await (const event of engine.submitMessage(prompt)) {
|
|
275
|
+
yield event;
|
|
276
|
+
// Track assistant messages for multi-turn persistence
|
|
277
|
+
if (event.type === 'assistant') {
|
|
278
|
+
const uuid = crypto.randomUUID();
|
|
279
|
+
const timestamp = new Date().toISOString();
|
|
280
|
+
this.messageLog.push({
|
|
281
|
+
type: 'assistant',
|
|
282
|
+
message: event.message,
|
|
283
|
+
uuid,
|
|
284
|
+
timestamp,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// Persist conversation state for multi-turn
|
|
289
|
+
this.history = engine.getMessages();
|
|
290
|
+
// Add user message to tracked messages
|
|
291
|
+
const userUuid = crypto.randomUUID();
|
|
292
|
+
this.messageLog.push({
|
|
293
|
+
type: 'user',
|
|
294
|
+
message: { role: 'user', content: prompt },
|
|
295
|
+
uuid: userUuid,
|
|
296
|
+
timestamp: new Date().toISOString(),
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Convenience method: send a prompt and collect the final answer as a single object.
|
|
301
|
+
* Internally iterates through the streaming query and aggregates the outcome.
|
|
302
|
+
*/
|
|
303
|
+
async prompt(text, overrides) {
|
|
304
|
+
const t0 = performance.now();
|
|
305
|
+
const collected = { text: '', turns: 0, tokens: { in: 0, out: 0 } };
|
|
306
|
+
for await (const ev of this.query(text, overrides)) {
|
|
307
|
+
switch (ev.type) {
|
|
308
|
+
case 'assistant': {
|
|
309
|
+
// Extract the last assistant text (multi-turn: only final answer matters)
|
|
310
|
+
const fragments = ev.message.content
|
|
311
|
+
.filter((c) => c.type === 'text')
|
|
312
|
+
.map((c) => c.text);
|
|
313
|
+
if (fragments.length)
|
|
314
|
+
collected.text = fragments.join('');
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
case 'result':
|
|
318
|
+
collected.turns = ev.num_turns ?? 0;
|
|
319
|
+
collected.tokens.in = ev.usage?.input_tokens ?? 0;
|
|
320
|
+
collected.tokens.out = ev.usage?.output_tokens ?? 0;
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return {
|
|
325
|
+
text: collected.text,
|
|
326
|
+
usage: { input_tokens: collected.tokens.in, output_tokens: collected.tokens.out },
|
|
327
|
+
num_turns: collected.turns,
|
|
328
|
+
duration_ms: Math.round(performance.now() - t0),
|
|
329
|
+
messages: [...this.messageLog],
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Get conversation messages.
|
|
334
|
+
*/
|
|
335
|
+
getMessages() {
|
|
336
|
+
return [...this.messageLog];
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Reset conversation history.
|
|
340
|
+
*/
|
|
341
|
+
clear() {
|
|
342
|
+
this.history = [];
|
|
343
|
+
this.messageLog = [];
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Interrupt the current query.
|
|
347
|
+
*/
|
|
348
|
+
async interrupt() {
|
|
349
|
+
this.abortCtrl?.abort();
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Change the model during a session.
|
|
353
|
+
*/
|
|
354
|
+
async setModel(model) {
|
|
355
|
+
if (model) {
|
|
356
|
+
this.modelId = model;
|
|
357
|
+
this.cfg.model = model;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Change the permission mode during a session.
|
|
362
|
+
*/
|
|
363
|
+
async setPermissionMode(mode) {
|
|
364
|
+
this.cfg.permissionMode = mode;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Set maximum thinking tokens.
|
|
368
|
+
*/
|
|
369
|
+
async setMaxThinkingTokens(maxThinkingTokens) {
|
|
370
|
+
if (maxThinkingTokens === null) {
|
|
371
|
+
this.cfg.thinking = { type: 'disabled' };
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
this.cfg.thinking = { type: 'enabled', budgetTokens: maxThinkingTokens };
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Get the session ID.
|
|
379
|
+
*/
|
|
380
|
+
getSessionId() {
|
|
381
|
+
return this.sid;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Get the current API type.
|
|
385
|
+
*/
|
|
386
|
+
getApiType() {
|
|
387
|
+
return this.apiType;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Stop a background task.
|
|
391
|
+
*/
|
|
392
|
+
async stopTask(taskId) {
|
|
393
|
+
const { getTask } = await import('./tools/task-tools.js');
|
|
394
|
+
const task = getTask(taskId);
|
|
395
|
+
if (task) {
|
|
396
|
+
task.status = 'cancelled';
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Close MCP connections and clean up.
|
|
401
|
+
* Optionally persist session to disk.
|
|
402
|
+
*/
|
|
403
|
+
async close() {
|
|
404
|
+
// Persist session if enabled
|
|
405
|
+
if (this.cfg.persistSession !== false && this.history.length > 0) {
|
|
406
|
+
try {
|
|
407
|
+
await saveSession(this.sid, this.history, {
|
|
408
|
+
cwd: this.cfg.cwd || process.cwd(),
|
|
409
|
+
model: this.modelId,
|
|
410
|
+
summary: undefined,
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
catch {
|
|
414
|
+
// Session persistence is best-effort
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
for (const conn of this.mcpLinks) {
|
|
418
|
+
await conn.close();
|
|
419
|
+
}
|
|
420
|
+
this.mcpLinks = [];
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
// --------------------------------------------------------------------------
|
|
424
|
+
// Factory function
|
|
425
|
+
// --------------------------------------------------------------------------
|
|
426
|
+
/** Factory: shorthand for `new Agent(options)`. */
|
|
427
|
+
export function createAgent(options = {}) {
|
|
428
|
+
return new Agent(options);
|
|
429
|
+
}
|
|
430
|
+
// --------------------------------------------------------------------------
|
|
431
|
+
// Standalone query — one-shot convenience wrapper
|
|
432
|
+
// --------------------------------------------------------------------------
|
|
433
|
+
/**
|
|
434
|
+
* Execute a single agentic query without managing an Agent instance.
|
|
435
|
+
* The agent is created, used, and cleaned up automatically.
|
|
436
|
+
*/
|
|
437
|
+
export async function* query(params) {
|
|
438
|
+
const ephemeral = createAgent(params.options);
|
|
439
|
+
try {
|
|
440
|
+
yield* ephemeral.query(params.prompt);
|
|
441
|
+
}
|
|
442
|
+
finally {
|
|
443
|
+
await ephemeral.close();
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QueryEngine - Core agentic loop
|
|
3
|
+
*
|
|
4
|
+
* Manages the full conversation lifecycle:
|
|
5
|
+
* 1. Take user prompt
|
|
6
|
+
* 2. Build system prompt with context (git status, project context, tools)
|
|
7
|
+
* 3. Call LLM API with tools (via provider abstraction)
|
|
8
|
+
* 4. Stream response
|
|
9
|
+
* 5. Execute tool calls (concurrent for read-only, serial for mutations)
|
|
10
|
+
* 6. Send results back, repeat until done
|
|
11
|
+
* 7. Auto-compact when context exceeds threshold
|
|
12
|
+
* 8. Retry with exponential backoff on transient errors
|
|
13
|
+
*/
|
|
14
|
+
import type { SDKMessage, QueryEngineConfig, TokenUsage } from './types.js';
|
|
15
|
+
import type { NormalizedMessageParam } from './providers/types.js';
|
|
16
|
+
export declare class QueryEngine {
|
|
17
|
+
private config;
|
|
18
|
+
private provider;
|
|
19
|
+
messages: NormalizedMessageParam[];
|
|
20
|
+
private totalUsage;
|
|
21
|
+
private totalCost;
|
|
22
|
+
private turnCount;
|
|
23
|
+
private compactState;
|
|
24
|
+
private sessionId;
|
|
25
|
+
private apiTimeMs;
|
|
26
|
+
private hookRegistry?;
|
|
27
|
+
constructor(config: QueryEngineConfig);
|
|
28
|
+
/**
|
|
29
|
+
* Execute hooks for a lifecycle event.
|
|
30
|
+
* Returns hook outputs; never throws.
|
|
31
|
+
*/
|
|
32
|
+
private executeHooks;
|
|
33
|
+
/**
|
|
34
|
+
* Submit a user message and run the agentic loop.
|
|
35
|
+
* Yields SDKMessage events as the agent works.
|
|
36
|
+
*/
|
|
37
|
+
submitMessage(prompt: string | any[]): AsyncGenerator<SDKMessage>;
|
|
38
|
+
/**
|
|
39
|
+
* Execute tool calls with concurrency control.
|
|
40
|
+
*
|
|
41
|
+
* Read-only tools run concurrently (up to 10 at a time).
|
|
42
|
+
* Mutation tools run sequentially.
|
|
43
|
+
*/
|
|
44
|
+
private executeTools;
|
|
45
|
+
/**
|
|
46
|
+
* Execute a single tool with permission checking.
|
|
47
|
+
*/
|
|
48
|
+
private executeSingleTool;
|
|
49
|
+
/**
|
|
50
|
+
* Get current messages for session persistence.
|
|
51
|
+
*/
|
|
52
|
+
getMessages(): NormalizedMessageParam[];
|
|
53
|
+
/**
|
|
54
|
+
* Get total usage across all turns.
|
|
55
|
+
*/
|
|
56
|
+
getUsage(): TokenUsage;
|
|
57
|
+
/**
|
|
58
|
+
* Get total cost.
|
|
59
|
+
*/
|
|
60
|
+
getCost(): number;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EAIjB,UAAU,EACX,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAGV,sBAAsB,EAEvB,MAAM,sBAAsB,CAAA;AAkH7B,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAa;IACtB,QAAQ,EAAE,sBAAsB,EAAE,CAAK;IAC9C,OAAO,CAAC,UAAU,CAAoD;IACtE,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,YAAY,CAAC,CAAc;gBAEvB,MAAM,EAAE,iBAAiB;IAQrC;;;OAGG;YACW,YAAY;IAiB1B;;;OAGG;IACI,aAAa,CAClB,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GACrB,cAAc,CAAC,UAAU,CAAC;IAsQ7B;;;;;OAKG;YACW,YAAY;IAkD1B;;OAEG;YACW,iBAAiB;IAuG/B;;OAEG;IACH,WAAW,IAAI,sBAAsB,EAAE;IAIvC;;OAEG;IACH,QAAQ,IAAI,UAAU;IAItB;;OAEG;IACH,OAAO,IAAI,MAAM;CAGlB"}
|