@meetopenbot/plugin-sdk 1.5.0 → 1.7.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/dist/agent-plugin.d.ts.map +1 -1
- package/dist/agent-plugin.js +4 -0
- package/dist/agent-plugin.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-agent.d.ts +17 -7
- package/dist/mcp-agent.d.ts.map +1 -1
- package/dist/mcp-agent.js +72 -24
- package/dist/mcp-agent.js.map +1 -1
- package/dist/mcp-oauth.d.ts +95 -0
- package/dist/mcp-oauth.d.ts.map +1 -0
- package/dist/mcp-oauth.js +123 -0
- package/dist/mcp-oauth.js.map +1 -0
- package/dist/plugin.d.ts +63 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +6 -0
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-plugin.d.ts","sourceRoot":"","sources":["../src/agent-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAe,kBAAkB,EAAsB,MAAM,cAAc,CAAC;AAEnF,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-plugin.d.ts","sourceRoot":"","sources":["../src/agent-plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-plugin.js
CHANGED
|
@@ -2,6 +2,7 @@ import { creditsErrorMessage } from './credits-auth.js';
|
|
|
2
2
|
import { agentOutput, shouldHandleInvoke, uiWidget, withMeta } from './helpers.js';
|
|
3
3
|
import { modelConfigField } from './model-registry.js';
|
|
4
4
|
import { definePlugin } from './plugin.js';
|
|
5
|
+
import { isConnectionRequiredError } from './mcp-oauth.js';
|
|
5
6
|
function isBusEvent(value) {
|
|
6
7
|
return 'type' in value && typeof value.type === 'string';
|
|
7
8
|
}
|
|
@@ -104,6 +105,9 @@ export async function runAgentTurn(plugin, args) {
|
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
catch (error) {
|
|
108
|
+
// The host turns these into the connect card; they are not chat errors.
|
|
109
|
+
if (isConnectionRequiredError(error))
|
|
110
|
+
throw error;
|
|
107
111
|
const mapped = plugin.mapError?.(error, args);
|
|
108
112
|
if (mapped) {
|
|
109
113
|
const items = Array.isArray(mapped) ? mapped : [mapped];
|
package/dist/agent-plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-plugin.js","sourceRoot":"","sources":["../src/agent-plugin.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAyC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-plugin.js","sourceRoot":"","sources":["../src/agent-plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
|
package/dist/mcp-agent.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { type OAuthClientProvider } from '@ai-sdk/mcp';
|
|
1
2
|
import { type AgentPluginDefinition, type AgentTurnYield } from './agent-plugin.js';
|
|
2
3
|
import { type StreamHint } from './text-reply.js';
|
|
3
|
-
import type { PluginModule } from './plugin.js';
|
|
4
|
+
import type { ApiKeyConnection, OAuthConnection, PluginModule } from './plugin.js';
|
|
4
5
|
export type McpHttpTransport = {
|
|
5
6
|
url: string;
|
|
6
7
|
headers?: (apiKey: string) => Record<string, string>;
|
|
@@ -23,7 +24,9 @@ type McpStreamPart = {
|
|
|
23
24
|
export declare function classifyMcpPart(part: McpStreamPart): StreamHint;
|
|
24
25
|
export declare function runMcpTurn(args: {
|
|
25
26
|
mcp: McpTransport;
|
|
27
|
+
/** Empty when `authProvider` signs requests in instead. */
|
|
26
28
|
apiKey: string;
|
|
29
|
+
authProvider?: OAuthClientProvider;
|
|
27
30
|
model: string;
|
|
28
31
|
system: string;
|
|
29
32
|
prompt: string;
|
|
@@ -32,15 +35,22 @@ export declare function runMcpTurn(args: {
|
|
|
32
35
|
processEnv?: NodeJS.ProcessEnv;
|
|
33
36
|
}): AsyncGenerator<AgentTurnYield>;
|
|
34
37
|
export type McpAgentDefinition = Omit<AgentPluginDefinition, 'run'> & {
|
|
35
|
-
secret: {
|
|
36
|
-
envKeys: string[];
|
|
37
|
-
docsUrl?: string;
|
|
38
|
-
};
|
|
39
|
-
mcp: McpTransport;
|
|
40
38
|
system: string;
|
|
41
39
|
maxSteps?: number;
|
|
42
40
|
history?: boolean;
|
|
43
|
-
}
|
|
41
|
+
} & ({
|
|
42
|
+
/** The API key this agent needs; the host shows it as the plugin's connection. */
|
|
43
|
+
secret: Omit<ApiKeyConnection, 'kind'>;
|
|
44
|
+
oauth?: never;
|
|
45
|
+
mcp: McpTransport;
|
|
46
|
+
} | {
|
|
47
|
+
/** Sign in to `mcp.url` instead of pasting a key. */
|
|
48
|
+
oauth: Omit<OAuthConnection, 'kind' | 'mcpUrl'>;
|
|
49
|
+
secret?: never;
|
|
50
|
+
mcp: McpHttpTransport;
|
|
51
|
+
});
|
|
52
|
+
/** Connect with `apiKey` and list tools: the cheapest call that proves the key works. */
|
|
53
|
+
export declare function verifyMcpCredential(mcp: McpTransport, apiKey: string): Promise<void>;
|
|
44
54
|
/**
|
|
45
55
|
* Specialist agent: secret + MCP + generateText. Model picker comes from `models`.
|
|
46
56
|
*/
|
package/dist/mcp-agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-agent.d.ts","sourceRoot":"","sources":["../src/mcp-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-agent.d.ts","sourceRoot":"","sources":["../src/mcp-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQ3F,OAAO,EAEL,KAAK,qBAAqB,EAE1B,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAA8B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGnF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAMhE,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAsB/D;AAED,wBAAuB,UAAU,CAAC,IAAI,EAAE;IACtC,GAAG,EAAE,YAAY,CAAC;IAClB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC,GAAG,cAAc,CAAC,cAAc,CAAC,CAsCjC;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,GAAG;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,CACE;IACE,kFAAkF;IAClF,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,GAAG,EAAE,YAAY,CAAC;CACnB,GACD;IACE,qDAAqD;IACrD,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,GAAG,EAAE,gBAAgB,CAAC;CACvB,CACJ,CAAC;AA0BJ,yFAAyF;AACzF,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAgF1F"}
|
package/dist/mcp-agent.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createMCPClient } from '@ai-sdk/mcp';
|
|
1
|
+
import { createMCPClient, UnauthorizedError } from '@ai-sdk/mcp';
|
|
2
2
|
import { Experimental_StdioMCPTransport } from '@ai-sdk/mcp/mcp-stdio';
|
|
3
3
|
import { stepCountIs, streamText } from 'ai';
|
|
4
4
|
import { creditsErrorMessage, hasLlmAuth, llmAuthNotConfiguredMessage, } from './credits-auth.js';
|
|
@@ -7,6 +7,7 @@ import { lookupSecret, missingSecretMessage, readConfigModel } from './helpers.j
|
|
|
7
7
|
import { resolveOpenAiModel } from './openai-model.js';
|
|
8
8
|
import { emitTextReplies, textReply } from './text-reply.js';
|
|
9
9
|
import { loadThreadContext } from './thread-context.js';
|
|
10
|
+
import { ConnectionRequiredError } from './mcp-oauth.js';
|
|
10
11
|
function isHttpTransport(transport) {
|
|
11
12
|
return 'url' in transport;
|
|
12
13
|
}
|
|
@@ -36,26 +37,20 @@ export function classifyMcpPart(part) {
|
|
|
36
37
|
return { type: 'skip' };
|
|
37
38
|
}
|
|
38
39
|
export async function* runMcpTurn(args) {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
...baseEnv,
|
|
53
|
-
...args.mcp.env?.(args.apiKey),
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
const client = await createMCPClient({ transport });
|
|
40
|
+
const transport = createMcpTransport(args.mcp, args.apiKey, args.processEnv ?? process.env, args.authProvider);
|
|
41
|
+
let client;
|
|
42
|
+
let tools;
|
|
43
|
+
try {
|
|
44
|
+
client = await createMCPClient({ transport });
|
|
45
|
+
tools = await client.tools();
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
// Tokens were missing, revoked, or could not be refreshed: sign in again.
|
|
49
|
+
if (args.authProvider && error instanceof UnauthorizedError)
|
|
50
|
+
throw new ConnectionRequiredError();
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
57
53
|
try {
|
|
58
|
-
const tools = await client.tools();
|
|
59
54
|
const result = streamText({
|
|
60
55
|
model: resolveOpenAiModel(args.model),
|
|
61
56
|
system: args.system,
|
|
@@ -76,20 +71,72 @@ export async function* runMcpTurn(args) {
|
|
|
76
71
|
await client.close().catch(() => undefined);
|
|
77
72
|
}
|
|
78
73
|
}
|
|
74
|
+
function createMcpTransport(mcp, apiKey, baseEnv, authProvider) {
|
|
75
|
+
return isHttpTransport(mcp)
|
|
76
|
+
? {
|
|
77
|
+
type: 'http',
|
|
78
|
+
url: mcp.url,
|
|
79
|
+
...(authProvider ? { authProvider } : { headers: mcp.headers?.(apiKey) }),
|
|
80
|
+
}
|
|
81
|
+
: new Experimental_StdioMCPTransport({
|
|
82
|
+
command: mcp.command,
|
|
83
|
+
args: mcp.args ?? [],
|
|
84
|
+
env: {
|
|
85
|
+
PATH: baseEnv.PATH || '',
|
|
86
|
+
HOME: baseEnv.HOME || '',
|
|
87
|
+
...baseEnv,
|
|
88
|
+
...mcp.env?.(apiKey),
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/** Connect with `apiKey` and list tools: the cheapest call that proves the key works. */
|
|
93
|
+
export async function verifyMcpCredential(mcp, apiKey) {
|
|
94
|
+
const client = await createMCPClient({ transport: createMcpTransport(mcp, apiKey, process.env) });
|
|
95
|
+
try {
|
|
96
|
+
await client.tools();
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
await client.close().catch(() => undefined);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
79
102
|
/**
|
|
80
103
|
* Specialist agent: secret + MCP + generateText. Model picker comes from `models`.
|
|
81
104
|
*/
|
|
82
105
|
export async function defineMcpAgent(definition) {
|
|
83
|
-
const { secret, mcp, system, maxSteps, history, models, ...plugin } = definition;
|
|
106
|
+
const { secret, oauth, mcp, system, maxSteps, history, models, ...plugin } = definition;
|
|
84
107
|
const defaultModel = models?.default ?? 'openai/gpt-6-luna';
|
|
108
|
+
const connection = oauth
|
|
109
|
+
? { kind: 'oauth', mcpUrl: mcp.url, ...oauth }
|
|
110
|
+
: { kind: 'apiKey', ...secret };
|
|
85
111
|
return defineAgentPlugin({
|
|
86
112
|
...plugin,
|
|
113
|
+
connection,
|
|
114
|
+
// Spawning a stdio server just to check a key is too slow for a save button.
|
|
115
|
+
...(!oauth && isHttpTransport(mcp)
|
|
116
|
+
? {
|
|
117
|
+
async verifyConnection({ credential }) {
|
|
118
|
+
try {
|
|
119
|
+
await verifyMcpCredential(mcp, credential);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
123
|
+
throw new Error(`${plugin.name} did not accept that key: ${reason}`);
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
}
|
|
127
|
+
: {}),
|
|
87
128
|
models: models ?? { providers: ['openai'], default: defaultModel },
|
|
88
129
|
async run(args) {
|
|
89
130
|
const runEnv = args.context.env ?? process.env;
|
|
90
|
-
const
|
|
91
|
-
|
|
131
|
+
const authProvider = oauth ? args.context.mcpAuth : undefined;
|
|
132
|
+
// The host checks the connection before `run`; these cover runtimes that predate it.
|
|
133
|
+
if (oauth && !authProvider) {
|
|
134
|
+
return `${plugin.name} needs a newer OpenBot runtime to sign in. Update the runtime and try again.`;
|
|
135
|
+
}
|
|
136
|
+
const apiKey = secret ? lookupSecret({ ...secret, env: runEnv }) : '';
|
|
137
|
+
if (secret && !apiKey) {
|
|
92
138
|
return missingSecretMessage(secret.envKeys[0] ?? 'API_KEY', secret.docsUrl);
|
|
139
|
+
}
|
|
93
140
|
if (!hasLlmAuth('openai'))
|
|
94
141
|
return llmAuthNotConfiguredMessage();
|
|
95
142
|
let prompt = args.prompt;
|
|
@@ -105,7 +152,8 @@ export async function defineMcpAgent(definition) {
|
|
|
105
152
|
}
|
|
106
153
|
return runMcpTurn({
|
|
107
154
|
mcp,
|
|
108
|
-
apiKey,
|
|
155
|
+
apiKey: apiKey ?? '',
|
|
156
|
+
authProvider,
|
|
109
157
|
model: readConfigModel(args.context.config, defaultModel),
|
|
110
158
|
system,
|
|
111
159
|
prompt,
|
package/dist/mcp-agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-agent.js","sourceRoot":"","sources":["../src/mcp-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-agent.js","sourceRoot":"","sources":["../src/mcp-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { type OAuthClientInformation, type OAuthClientMetadata, type OAuthClientProvider, type OAuthTokens } from '@ai-sdk/mcp';
|
|
2
|
+
/**
|
|
3
|
+
* Where a provider keeps what must outlive one request. The client registration is shared
|
|
4
|
+
* by every level of a plugin's connection; tokens belong to one level (a person, a Space,
|
|
5
|
+
* or the workspace).
|
|
6
|
+
*/
|
|
7
|
+
export type McpOAuthPersistence = {
|
|
8
|
+
loadClient(): Promise<OAuthClientInformation | undefined>;
|
|
9
|
+
saveClient(client: OAuthClientInformation): Promise<void>;
|
|
10
|
+
clearClient(): Promise<void>;
|
|
11
|
+
loadTokens(): Promise<OAuthTokens | undefined>;
|
|
12
|
+
saveTokens(tokens: OAuthTokens): Promise<void>;
|
|
13
|
+
clearTokens(): Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
/** Code of the error a run throws when its connection needs signing in (again). */
|
|
16
|
+
export declare const CONNECTION_REQUIRED = "OPENBOT_CONNECTION_REQUIRED";
|
|
17
|
+
/** Thrown from a run whose account is missing or no longer accepted; the host shows the connect card. */
|
|
18
|
+
export declare class ConnectionRequiredError extends Error {
|
|
19
|
+
readonly code = "OPENBOT_CONNECTION_REQUIRED";
|
|
20
|
+
constructor(message?: string);
|
|
21
|
+
}
|
|
22
|
+
/** True for a `ConnectionRequiredError` from any copy of the SDK. */
|
|
23
|
+
export declare function isConnectionRequiredError(error: unknown): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* `OAuthClientProvider` for MCP servers that follow the MCP authorization spec: discovery,
|
|
26
|
+
* dynamic client registration, PKCE and refresh all come from `@ai-sdk/mcp`. This class
|
|
27
|
+
* only stores things. The PKCE verifier and `state` live on the instance, so the same
|
|
28
|
+
* instance must start and finish one sign-in.
|
|
29
|
+
*/
|
|
30
|
+
export declare class McpOAuthProvider implements OAuthClientProvider {
|
|
31
|
+
readonly persistence: McpOAuthPersistence;
|
|
32
|
+
readonly redirect: string;
|
|
33
|
+
readonly metadata: OAuthClientMetadata;
|
|
34
|
+
/** Set when the server asked the person to sign in; read it after `auth()` returns `REDIRECT`. */
|
|
35
|
+
authorizationUrl: URL | undefined;
|
|
36
|
+
private verifier;
|
|
37
|
+
private readonly expectedState;
|
|
38
|
+
constructor(args: {
|
|
39
|
+
persistence: McpOAuthPersistence;
|
|
40
|
+
redirectUrl: string;
|
|
41
|
+
clientName: string;
|
|
42
|
+
clientUri?: string;
|
|
43
|
+
scopes?: string[];
|
|
44
|
+
});
|
|
45
|
+
get redirectUrl(): string;
|
|
46
|
+
get clientMetadata(): OAuthClientMetadata;
|
|
47
|
+
/** Sent as `state`; the callback finds this sign-in by it. */
|
|
48
|
+
get signInState(): string;
|
|
49
|
+
state(): string;
|
|
50
|
+
storedState(): string;
|
|
51
|
+
clientInformation(): Promise<{
|
|
52
|
+
client_id: string;
|
|
53
|
+
client_secret?: string | undefined;
|
|
54
|
+
client_id_issued_at?: number | undefined;
|
|
55
|
+
client_secret_expires_at?: number | undefined;
|
|
56
|
+
issuer?: string | undefined;
|
|
57
|
+
authorization_server?: string | undefined;
|
|
58
|
+
token_endpoint?: string | undefined;
|
|
59
|
+
} | undefined>;
|
|
60
|
+
saveClientInformation(client: OAuthClientInformation): Promise<void>;
|
|
61
|
+
isClientInformationDynamicallyRegistered(): boolean;
|
|
62
|
+
tokens(): Promise<{
|
|
63
|
+
access_token: string;
|
|
64
|
+
token_type: string;
|
|
65
|
+
id_token?: string | undefined;
|
|
66
|
+
expires_in?: number | undefined;
|
|
67
|
+
scope?: string | undefined;
|
|
68
|
+
refresh_token?: string | undefined;
|
|
69
|
+
issuer?: string | undefined;
|
|
70
|
+
authorization_server?: string | undefined;
|
|
71
|
+
token_endpoint?: string | undefined;
|
|
72
|
+
} | undefined>;
|
|
73
|
+
saveTokens(tokens: OAuthTokens): Promise<void>;
|
|
74
|
+
redirectToAuthorization(authorizationUrl: URL): void;
|
|
75
|
+
saveCodeVerifier(codeVerifier: string): void;
|
|
76
|
+
codeVerifier(): string;
|
|
77
|
+
invalidateCredentials(scope: 'all' | 'client' | 'tokens' | 'verifier'): Promise<void>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Start signing in. Returns the URL to send the person to, or `undefined` when stored
|
|
81
|
+
* tokens are still good (or were refreshed) and there is nothing to do.
|
|
82
|
+
*/
|
|
83
|
+
export declare function beginMcpOAuth(provider: McpOAuthProvider, args: {
|
|
84
|
+
serverUrl: string;
|
|
85
|
+
scopes?: string[];
|
|
86
|
+
}): Promise<URL | undefined>;
|
|
87
|
+
/** Finish signing in with the code from the callback; saves the tokens. */
|
|
88
|
+
export declare function completeMcpOAuth(provider: McpOAuthProvider, args: {
|
|
89
|
+
serverUrl: string;
|
|
90
|
+
code: string;
|
|
91
|
+
state?: string;
|
|
92
|
+
issuer?: string;
|
|
93
|
+
scopes?: string[];
|
|
94
|
+
}): Promise<void>;
|
|
95
|
+
//# sourceMappingURL=mcp-oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-oauth.d.ts","sourceRoot":"","sources":["../src/mcp-oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { auth, } from '@ai-sdk/mcp';
|
|
3
|
+
/** Code of the error a run throws when its connection needs signing in (again). */
|
|
4
|
+
export const CONNECTION_REQUIRED = 'OPENBOT_CONNECTION_REQUIRED';
|
|
5
|
+
/** Thrown from a run whose account is missing or no longer accepted; the host shows the connect card. */
|
|
6
|
+
export class ConnectionRequiredError extends Error {
|
|
7
|
+
code = CONNECTION_REQUIRED;
|
|
8
|
+
constructor(message = 'This agent needs to be connected.') {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'ConnectionRequiredError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/** True for a `ConnectionRequiredError` from any copy of the SDK. */
|
|
14
|
+
export function isConnectionRequiredError(error) {
|
|
15
|
+
return (!!error &&
|
|
16
|
+
typeof error === 'object' &&
|
|
17
|
+
error.code === CONNECTION_REQUIRED);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* `OAuthClientProvider` for MCP servers that follow the MCP authorization spec: discovery,
|
|
21
|
+
* dynamic client registration, PKCE and refresh all come from `@ai-sdk/mcp`. This class
|
|
22
|
+
* only stores things. The PKCE verifier and `state` live on the instance, so the same
|
|
23
|
+
* instance must start and finish one sign-in.
|
|
24
|
+
*/
|
|
25
|
+
export class McpOAuthProvider {
|
|
26
|
+
persistence;
|
|
27
|
+
redirect;
|
|
28
|
+
metadata;
|
|
29
|
+
/** Set when the server asked the person to sign in; read it after `auth()` returns `REDIRECT`. */
|
|
30
|
+
authorizationUrl;
|
|
31
|
+
verifier;
|
|
32
|
+
expectedState;
|
|
33
|
+
constructor(args) {
|
|
34
|
+
this.persistence = args.persistence;
|
|
35
|
+
this.redirect = args.redirectUrl;
|
|
36
|
+
this.metadata = {
|
|
37
|
+
client_name: args.clientName,
|
|
38
|
+
...(args.clientUri ? { client_uri: args.clientUri } : {}),
|
|
39
|
+
redirect_uris: [args.redirectUrl],
|
|
40
|
+
grant_types: ['authorization_code', 'refresh_token'],
|
|
41
|
+
response_types: ['code'],
|
|
42
|
+
// A public client: the runtime can't keep a client secret any safer than a token.
|
|
43
|
+
token_endpoint_auth_method: 'none',
|
|
44
|
+
...(args.scopes?.length ? { scope: args.scopes.join(' ') } : {}),
|
|
45
|
+
};
|
|
46
|
+
this.expectedState = randomBytes(24).toString('base64url');
|
|
47
|
+
}
|
|
48
|
+
get redirectUrl() {
|
|
49
|
+
return this.redirect;
|
|
50
|
+
}
|
|
51
|
+
get clientMetadata() {
|
|
52
|
+
return this.metadata;
|
|
53
|
+
}
|
|
54
|
+
/** Sent as `state`; the callback finds this sign-in by it. */
|
|
55
|
+
get signInState() {
|
|
56
|
+
return this.expectedState;
|
|
57
|
+
}
|
|
58
|
+
state() {
|
|
59
|
+
return this.expectedState;
|
|
60
|
+
}
|
|
61
|
+
storedState() {
|
|
62
|
+
return this.expectedState;
|
|
63
|
+
}
|
|
64
|
+
clientInformation() {
|
|
65
|
+
return this.persistence.loadClient();
|
|
66
|
+
}
|
|
67
|
+
async saveClientInformation(client) {
|
|
68
|
+
await this.persistence.saveClient(client);
|
|
69
|
+
}
|
|
70
|
+
isClientInformationDynamicallyRegistered() {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
tokens() {
|
|
74
|
+
return this.persistence.loadTokens();
|
|
75
|
+
}
|
|
76
|
+
async saveTokens(tokens) {
|
|
77
|
+
await this.persistence.saveTokens(tokens);
|
|
78
|
+
}
|
|
79
|
+
redirectToAuthorization(authorizationUrl) {
|
|
80
|
+
this.authorizationUrl = authorizationUrl;
|
|
81
|
+
}
|
|
82
|
+
saveCodeVerifier(codeVerifier) {
|
|
83
|
+
this.verifier = codeVerifier;
|
|
84
|
+
}
|
|
85
|
+
codeVerifier() {
|
|
86
|
+
if (!this.verifier)
|
|
87
|
+
throw new Error('This sign-in was not started here; start it again.');
|
|
88
|
+
return this.verifier;
|
|
89
|
+
}
|
|
90
|
+
async invalidateCredentials(scope) {
|
|
91
|
+
if (scope === 'all' || scope === 'client')
|
|
92
|
+
await this.persistence.clearClient();
|
|
93
|
+
if (scope === 'all' || scope === 'tokens')
|
|
94
|
+
await this.persistence.clearTokens();
|
|
95
|
+
if (scope === 'all' || scope === 'verifier')
|
|
96
|
+
this.verifier = undefined;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Start signing in. Returns the URL to send the person to, or `undefined` when stored
|
|
101
|
+
* tokens are still good (or were refreshed) and there is nothing to do.
|
|
102
|
+
*/
|
|
103
|
+
export async function beginMcpOAuth(provider, args) {
|
|
104
|
+
provider.authorizationUrl = undefined;
|
|
105
|
+
const result = await auth(provider, {
|
|
106
|
+
serverUrl: args.serverUrl,
|
|
107
|
+
...(args.scopes?.length ? { scope: args.scopes.join(' ') } : {}),
|
|
108
|
+
});
|
|
109
|
+
return result === 'REDIRECT' ? provider.authorizationUrl : undefined;
|
|
110
|
+
}
|
|
111
|
+
/** Finish signing in with the code from the callback; saves the tokens. */
|
|
112
|
+
export async function completeMcpOAuth(provider, args) {
|
|
113
|
+
const result = await auth(provider, {
|
|
114
|
+
serverUrl: args.serverUrl,
|
|
115
|
+
authorizationCode: args.code,
|
|
116
|
+
callbackState: args.state,
|
|
117
|
+
...(args.issuer ? { callbackIssuer: args.issuer } : {}),
|
|
118
|
+
...(args.scopes?.length ? { scope: args.scopes.join(' ') } : {}),
|
|
119
|
+
});
|
|
120
|
+
if (result !== 'AUTHORIZED')
|
|
121
|
+
throw new Error('Sign-in did not finish. Try connecting again.');
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=mcp-oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-oauth.js","sourceRoot":"","sources":["../src/mcp-oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { OAuthClientProvider } from '@ai-sdk/mcp';
|
|
1
2
|
import type { AgentDetails } from './storage.js';
|
|
2
3
|
import type { Storage } from './storage.js';
|
|
3
4
|
import type { AgentInvokeEvent, OpenBotEvent, OpenBotState, UIWidgetResponseEvent, WebhookEvent } from './events.js';
|
|
@@ -60,6 +61,14 @@ export interface ToolDefinition {
|
|
|
60
61
|
inputSchema: unknown;
|
|
61
62
|
execute?: (args: unknown, ctx: ToolExecuteContext) => Promise<ToolExecuteResult | string> | ToolExecuteResult | string;
|
|
62
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* The workspace member a run acts for, as verified by the host. Absent when no person
|
|
66
|
+
* started the run (webhooks) or on runtimes that predate verified identity.
|
|
67
|
+
*/
|
|
68
|
+
export type ActingUser = {
|
|
69
|
+
id: string;
|
|
70
|
+
role: 'owner' | 'member';
|
|
71
|
+
};
|
|
63
72
|
export interface RunAgentHostOptions {
|
|
64
73
|
runId: string;
|
|
65
74
|
agentId: string;
|
|
@@ -123,6 +132,13 @@ export interface PluginContext {
|
|
|
123
132
|
host: PluginHost;
|
|
124
133
|
/** Merged global + space variables for the current run. Space keys override global. */
|
|
125
134
|
env?: NodeJS.ProcessEnv;
|
|
135
|
+
/**
|
|
136
|
+
* Who this run acts for. Delegated runs and threads started with `startThreadRun`
|
|
137
|
+
* inherit it from the run that started them; plugins cannot set it.
|
|
138
|
+
*/
|
|
139
|
+
actingUser?: ActingUser;
|
|
140
|
+
/** For an `oauth` connection: signs MCP requests in, refreshing tokens as needed. */
|
|
141
|
+
mcpAuth?: OAuthClientProvider;
|
|
126
142
|
}
|
|
127
143
|
export type WebhookHandlerArgs = {
|
|
128
144
|
event: WebhookEvent;
|
|
@@ -149,6 +165,44 @@ export type PluginWidgetResponseArgs = {
|
|
|
149
165
|
state: OpenBotState;
|
|
150
166
|
emit: (event: OpenBotEvent) => Promise<void>;
|
|
151
167
|
};
|
|
168
|
+
/** Where a connection's credential is kept: one person, one Space, or the whole workspace. */
|
|
169
|
+
export type ConnectionLevel = 'user' | 'space' | 'workspace';
|
|
170
|
+
export declare const CONNECTION_LEVELS: readonly ConnectionLevel[];
|
|
171
|
+
/**
|
|
172
|
+
* An account a plugin needs before it can run. The host owns the whole flow: it checks
|
|
173
|
+
* for the credential before `run`, shows the connect card when it is missing, and hands
|
|
174
|
+
* the credential to the run. Plugins never ask for keys themselves.
|
|
175
|
+
*/
|
|
176
|
+
export type PluginConnection = ApiKeyConnection | OAuthConnection;
|
|
177
|
+
/** A pasted key, put in `context.env` under `envKeys[0]`. */
|
|
178
|
+
export type ApiKeyConnection = {
|
|
179
|
+
kind: 'apiKey';
|
|
180
|
+
/** Variable names the key may live under. The host saves new keys as the first one. */
|
|
181
|
+
envKeys: string[];
|
|
182
|
+
/** Shown on the connect card, e.g. "Linear API key". Defaults to "<name> API key". */
|
|
183
|
+
label?: string;
|
|
184
|
+
/** Where to get a key. */
|
|
185
|
+
docsUrl?: string;
|
|
186
|
+
/** Levels the key may be saved at, most specific first. Defaults to all three. */
|
|
187
|
+
levels?: ConnectionLevel[];
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* Sign-in to an MCP server that follows the MCP authorization spec. The host runs the
|
|
191
|
+
* browser flow and keeps the tokens; the run gets an auth provider as `context.mcpAuth`.
|
|
192
|
+
*/
|
|
193
|
+
export type OAuthConnection = {
|
|
194
|
+
kind: 'oauth';
|
|
195
|
+
/** The MCP server to sign in to. */
|
|
196
|
+
mcpUrl: string;
|
|
197
|
+
/** Scopes to ask for. Ask for what the agent needs, not everything the server offers. */
|
|
198
|
+
scopes?: string[];
|
|
199
|
+
/** Shown on the connect card, e.g. "Apollo account". Defaults to "<name> account". */
|
|
200
|
+
label?: string;
|
|
201
|
+
docsUrl?: string;
|
|
202
|
+
levels?: ConnectionLevel[];
|
|
203
|
+
};
|
|
204
|
+
/** Levels a connection may be saved at, in lookup order. */
|
|
205
|
+
export declare function connectionLevels(connection: PluginConnection): ConnectionLevel[];
|
|
152
206
|
/**
|
|
153
207
|
* Plugin contract expected by the OpenBot host.
|
|
154
208
|
* A plugin owns `run` (harness / LLM loop), `tools` with `execute`, and/or webhook hooks.
|
|
@@ -168,6 +222,15 @@ export interface Plugin {
|
|
|
168
222
|
onEvent?: (event: OpenBotEvent, context: PluginContext) => unknown;
|
|
169
223
|
onWidgetResponse?: (args: PluginWidgetResponseArgs) => unknown;
|
|
170
224
|
mapError?: (error: unknown, args: PluginRunArgs) => unknown;
|
|
225
|
+
/** The account this plugin needs. Without it the host does not call `run`. */
|
|
226
|
+
connection?: PluginConnection;
|
|
227
|
+
/**
|
|
228
|
+
* Check a credential before the host saves it, e.g. by making one real call.
|
|
229
|
+
* Throw with a user-facing message when it does not work.
|
|
230
|
+
*/
|
|
231
|
+
verifyConnection?: (args: {
|
|
232
|
+
credential: string;
|
|
233
|
+
}) => Promise<void>;
|
|
171
234
|
}
|
|
172
235
|
export type PluginModule = Omit<Plugin, 'id'>;
|
|
173
236
|
export declare function definePlugin<T extends PluginModule>(definition: T): T;
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
export const CONNECTION_LEVELS = ['user', 'space', 'workspace'];
|
|
2
|
+
/** Levels a connection may be saved at, in lookup order. */
|
|
3
|
+
export function connectionLevels(connection) {
|
|
4
|
+
const allowed = connection.levels?.length ? connection.levels : CONNECTION_LEVELS;
|
|
5
|
+
return CONNECTION_LEVELS.filter((level) => allowed.includes(level));
|
|
6
|
+
}
|
|
1
7
|
export function definePlugin(definition) {
|
|
2
8
|
return definition;
|
|
3
9
|
}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AA6LA,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAsC5F,4DAA4D;AAC5D,MAAM,UAAU,gBAAgB,CAAC,UAA4B;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAClF,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,CAAC;AAkCD,MAAM,UAAU,YAAY,CAAkC,UAAa;IACzE,OAAO,UAAU,CAAC;AACpB,CAAC"}
|