@meetopenbot/plugin-sdk 1.6.0 → 1.8.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.
@@ -1 +1 @@
1
- {"version":3,"file":"agent-plugin.d.ts","sourceRoot":"","sources":["../src/agent-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-plugin.d.ts","sourceRoot":"","sources":["../src/agent-plugin.ts"],"names":[],"mappings":"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"}
@@ -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];
@@ -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;AAkDlF,SAAS,UAAU,CAAC,KAAoC;IACtD,OAAO,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe,CACtB,KAAc;IAEd,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,IAAmC,EACnC,OAAe,EACf,QAA4B,EAC5B,IAA+B;IAE/B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO;QACL,WAAW,CAAC;YACV,OAAO;YACP,QAAQ;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI;SACL,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,QAAQ,CAC7B,KAAmD,EACnD,OAAe,EACf,QAA4B,EAC5B,IAA+B;IAE/B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC/B,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAiC;IAEjC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,GACrF,UAAU,CAAC;IAEb,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3D,IAAI,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QAC7B,UAAU,CAAC,KAAK,GAAG,MAAM,gBAAgB,CAAC;YACxC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,OAAO;YAC5B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GACV,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;QAChC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;QAC3E,CAAC,CAAC,YAAY,CAAC;IAEnB,OAAO,YAAY,CAAC;QAClB,GAAG,MAAM;QACT,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,WAAW;QACX,GAAG;QACH,gBAAgB;QAChB,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAoB,EACpB,IAAmB;IAEnB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC;IACvD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjD,KAAK,SAAS,CAAC,CAAC,KAAK,KAAkC,CAAC;IAExD,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO,KAAK,EAAE,CAAC;IAChC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,EAAE,CAAC;IAEhE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,SAAS,CAAC;gBACrB,MAAM,WAAW,CAAC;oBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO,EAAE,MAAM,CAAC,WAAY;oBAC5B,QAAQ;oBACR,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,EAAE;YAAE,OAAO,KAAK,EAAE,CAAC;QACpD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,SAAS,CAAC;gBACrB,MAAM,WAAW,CAAC;oBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO,EAAE,MAAM;oBACf,QAAQ;oBACR,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxD,OAAO,CAAC,KAAK,SAAS,CAAC;gBACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,SAAS,CAAC;YACrB,MAAM,WAAW,CAAC;gBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EACL,mBAAmB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;oBACxD,CAAC,OAAO,IAAI,uDAAuD,CAAC;gBACtE,QAAQ;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,OAAO,KAAK,EAAE,CAAC;AACjB,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
@@ -18,4 +18,5 @@ export * from './mcp-agent.js';
18
18
  export * from './openai-model.js';
19
19
  export * from './thread-context.js';
20
20
  export * from './harness-env.js';
21
+ export * from './mcp-oauth.js';
21
22
  //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -18,4 +18,5 @@ export * from './mcp-agent.js';
18
18
  export * from './openai-model.js';
19
19
  export * from './thread-context.js';
20
20
  export * from './harness-env.js';
21
+ export * from './mcp-oauth.js';
21
22
  //# sourceMappingURL=index.js.map
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"}
@@ -1,6 +1,9 @@
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';
5
+ import { pickTools } from './mcp-tools.js';
6
+ export { pickTools };
4
7
  export type McpHttpTransport = {
5
8
  url: string;
6
9
  headers?: (apiKey: string) => Record<string, string>;
@@ -23,27 +26,42 @@ type McpStreamPart = {
23
26
  export declare function classifyMcpPart(part: McpStreamPart): StreamHint;
24
27
  export declare function runMcpTurn(args: {
25
28
  mcp: McpTransport;
29
+ /** Empty when `authProvider` signs requests in instead. */
26
30
  apiKey: string;
31
+ authProvider?: OAuthClientProvider;
27
32
  model: string;
28
33
  system: string;
29
34
  prompt: string;
30
35
  maxSteps?: number;
36
+ /** Only these tools reach the model. Omit to allow every tool the server lists. */
37
+ allowedTools?: string[];
31
38
  groupId?: string;
32
39
  processEnv?: NodeJS.ProcessEnv;
33
40
  }): AsyncGenerator<AgentTurnYield>;
34
41
  export type McpAgentDefinition = Omit<AgentPluginDefinition, 'run'> & {
35
- secret: {
36
- envKeys: string[];
37
- docsUrl?: string;
38
- };
39
- mcp: McpTransport;
40
42
  system: string;
41
43
  maxSteps?: number;
42
44
  history?: boolean;
43
- };
45
+ /**
46
+ * Tool names the agent may use; everything else the server lists is hidden from the model.
47
+ * Set it whenever the server offers tools the agent must not call.
48
+ */
49
+ allowedTools?: string[];
50
+ } & ({
51
+ /** The API key this agent needs; the host shows it as the plugin's connection. */
52
+ secret: Omit<ApiKeyConnection, 'kind'>;
53
+ oauth?: never;
54
+ mcp: McpTransport;
55
+ } | {
56
+ /** Sign in to `mcp.url` instead of pasting a key. */
57
+ oauth: Omit<OAuthConnection, 'kind' | 'mcpUrl'>;
58
+ secret?: never;
59
+ mcp: McpHttpTransport;
60
+ });
61
+ /** Connect with `apiKey` and list tools: the cheapest call that proves the key works. */
62
+ export declare function verifyMcpCredential(mcp: McpTransport, apiKey: string): Promise<void>;
44
63
  /**
45
64
  * Specialist agent: secret + MCP + generateText. Model picker comes from `models`.
46
65
  */
47
66
  export declare function defineMcpAgent(definition: McpAgentDefinition): Promise<PluginModule>;
48
- export {};
49
67
  //# sourceMappingURL=mcp-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-agent.d.ts","sourceRoot":"","sources":["../src/mcp-agent.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,qBAAqB,EAE1B,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAA8B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,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,MAAM,EAAE,MAAM,CAAC;IACf,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,CA0CjC;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,GAAG;IACpE,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqD1F"}
1
+ {"version":3,"file":"mcp-agent.d.ts","sourceRoot":"","sources":["../src/mcp-agent.ts"],"names":[],"mappings":"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"}
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,9 @@ 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';
11
+ import { pickTools } from './mcp-tools.js';
12
+ export { pickTools };
10
13
  function isHttpTransport(transport) {
11
14
  return 'url' in transport;
12
15
  }
@@ -36,31 +39,25 @@ export function classifyMcpPart(part) {
36
39
  return { type: 'skip' };
37
40
  }
38
41
  export async function* runMcpTurn(args) {
39
- const baseEnv = args.processEnv ?? process.env;
40
- const transport = isHttpTransport(args.mcp)
41
- ? {
42
- type: 'http',
43
- url: args.mcp.url,
44
- headers: args.mcp.headers?.(args.apiKey),
45
- }
46
- : new Experimental_StdioMCPTransport({
47
- command: args.mcp.command,
48
- args: args.mcp.args ?? [],
49
- env: {
50
- PATH: baseEnv.PATH || '',
51
- HOME: baseEnv.HOME || '',
52
- ...baseEnv,
53
- ...args.mcp.env?.(args.apiKey),
54
- },
55
- });
56
- const client = await createMCPClient({ transport });
42
+ const transport = createMcpTransport(args.mcp, args.apiKey, args.processEnv ?? process.env, args.authProvider);
43
+ let client;
44
+ let tools;
45
+ try {
46
+ client = await createMCPClient({ transport });
47
+ tools = await client.tools();
48
+ }
49
+ catch (error) {
50
+ // Tokens were missing, revoked, or could not be refreshed: sign in again.
51
+ if (args.authProvider && error instanceof UnauthorizedError)
52
+ throw new ConnectionRequiredError();
53
+ throw error;
54
+ }
57
55
  try {
58
- const tools = await client.tools();
59
56
  const result = streamText({
60
57
  model: resolveOpenAiModel(args.model),
61
58
  system: args.system,
62
59
  prompt: args.prompt,
63
- tools,
60
+ tools: pickTools(tools, args.allowedTools),
64
61
  stopWhen: stepCountIs(args.maxSteps ?? 10),
65
62
  });
66
63
  let replied = false;
@@ -76,20 +73,72 @@ export async function* runMcpTurn(args) {
76
73
  await client.close().catch(() => undefined);
77
74
  }
78
75
  }
76
+ function createMcpTransport(mcp, apiKey, baseEnv, authProvider) {
77
+ return isHttpTransport(mcp)
78
+ ? {
79
+ type: 'http',
80
+ url: mcp.url,
81
+ ...(authProvider ? { authProvider } : { headers: mcp.headers?.(apiKey) }),
82
+ }
83
+ : new Experimental_StdioMCPTransport({
84
+ command: mcp.command,
85
+ args: mcp.args ?? [],
86
+ env: {
87
+ PATH: baseEnv.PATH || '',
88
+ HOME: baseEnv.HOME || '',
89
+ ...baseEnv,
90
+ ...mcp.env?.(apiKey),
91
+ },
92
+ });
93
+ }
94
+ /** Connect with `apiKey` and list tools: the cheapest call that proves the key works. */
95
+ export async function verifyMcpCredential(mcp, apiKey) {
96
+ const client = await createMCPClient({ transport: createMcpTransport(mcp, apiKey, process.env) });
97
+ try {
98
+ await client.tools();
99
+ }
100
+ finally {
101
+ await client.close().catch(() => undefined);
102
+ }
103
+ }
79
104
  /**
80
105
  * Specialist agent: secret + MCP + generateText. Model picker comes from `models`.
81
106
  */
82
107
  export async function defineMcpAgent(definition) {
83
- const { secret, mcp, system, maxSteps, history, models, ...plugin } = definition;
108
+ const { secret, oauth, mcp, system, maxSteps, history, allowedTools, models, ...plugin } = definition;
84
109
  const defaultModel = models?.default ?? 'openai/gpt-6-luna';
110
+ const connection = oauth
111
+ ? { kind: 'oauth', mcpUrl: mcp.url, ...oauth }
112
+ : { kind: 'apiKey', ...secret };
85
113
  return defineAgentPlugin({
86
114
  ...plugin,
115
+ connection,
116
+ // Spawning a stdio server just to check a key is too slow for a save button.
117
+ ...(!oauth && isHttpTransport(mcp)
118
+ ? {
119
+ async verifyConnection({ credential }) {
120
+ try {
121
+ await verifyMcpCredential(mcp, credential);
122
+ }
123
+ catch (error) {
124
+ const reason = error instanceof Error ? error.message : String(error);
125
+ throw new Error(`${plugin.name} did not accept that key: ${reason}`);
126
+ }
127
+ },
128
+ }
129
+ : {}),
87
130
  models: models ?? { providers: ['openai'], default: defaultModel },
88
131
  async run(args) {
89
132
  const runEnv = args.context.env ?? process.env;
90
- const apiKey = lookupSecret({ ...secret, env: runEnv });
91
- if (!apiKey)
133
+ const authProvider = oauth ? args.context.mcpAuth : undefined;
134
+ // The host checks the connection before `run`; these cover runtimes that predate it.
135
+ if (oauth && !authProvider) {
136
+ return `${plugin.name} needs a newer OpenBot runtime to sign in. Update the runtime and try again.`;
137
+ }
138
+ const apiKey = secret ? lookupSecret({ ...secret, env: runEnv }) : '';
139
+ if (secret && !apiKey) {
92
140
  return missingSecretMessage(secret.envKeys[0] ?? 'API_KEY', secret.docsUrl);
141
+ }
93
142
  if (!hasLlmAuth('openai'))
94
143
  return llmAuthNotConfiguredMessage();
95
144
  let prompt = args.prompt;
@@ -105,11 +154,13 @@ export async function defineMcpAgent(definition) {
105
154
  }
106
155
  return runMcpTurn({
107
156
  mcp,
108
- apiKey,
157
+ apiKey: apiKey ?? '',
158
+ authProvider,
109
159
  model: readConfigModel(args.context.config, defaultModel),
110
160
  system,
111
161
  prompt,
112
162
  maxSteps,
163
+ allowedTools,
113
164
  groupId: `${plugin.name}:tools`,
114
165
  processEnv: runEnv,
115
166
  });
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-agent.js","sourceRoot":"","sources":["../src/mcp-agent.ts"],"names":[],"mappings":"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"}
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":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,IAAI,GAKL,MAAM,aAAa,CAAC;AAgBrB,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,6BAA6B,CAAC;AAEjE,yGAAyG;AACzG,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,IAAI,GAAG,mBAAmB,CAAC;IAEpC,YAAY,OAAO,GAAG,mCAAmC;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,qEAAqE;AACrE,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,OAAO,CACL,CAAC,CAAC,KAAK;QACP,OAAO,KAAK,KAAK,QAAQ;QACxB,KAA4B,CAAC,IAAI,KAAK,mBAAmB,CAC3D,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAClB,WAAW,CAAsB;IACjC,QAAQ,CAAS;IACjB,QAAQ,CAAsB;IACvC,kGAAkG;IAClG,gBAAgB,CAAkB;IAC1B,QAAQ,CAAqB;IACpB,aAAa,CAAS;IAEvC,YAAY,IAMX;QACC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG;YACd,WAAW,EAAE,IAAI,CAAC,UAAU;YAC5B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,aAAa,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;YACjC,WAAW,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;YACpD,cAAc,EAAE,CAAC,MAAM,CAAC;YACxB,kFAAkF;YAClF,0BAA0B,EAAE,MAAM;YAClC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,8DAA8D;IAC9D,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAA8B;QACxD,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,wCAAwC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAmB;QAClC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,uBAAuB,CAAC,gBAAqB;QAC3C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,gBAAgB,CAAC,YAAoB;QACnC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;IAC/B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,KAA+C;QACzE,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAChF,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAChF,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,UAAU;YAAE,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IACzE,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAA0B,EAC1B,IAA8C;IAE9C,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE;QAClC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC,CAAC;IACH,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA0B,EAC1B,IAA6F;IAE7F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE;QAClC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,iBAAiB,EAAE,IAAI,CAAC,IAAI;QAC5B,aAAa,EAAE,IAAI,CAAC,KAAK;QACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AAChG,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Keep only the allowed tools. Servers may list tools a token can still call even though
3
+ * its scopes were not granted, so this, not the scope list, is what limits an agent.
4
+ */
5
+ export declare function pickTools<T>(tools: Record<string, T>, allowed?: string[]): Record<string, T>;
6
+ //# sourceMappingURL=mcp-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tools.d.ts","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAI5F"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Keep only the allowed tools. Servers may list tools a token can still call even though
3
+ * its scopes were not granted, so this, not the scope list, is what limits an agent.
4
+ */
5
+ export function pickTools(tools, allowed) {
6
+ if (!allowed)
7
+ return tools;
8
+ const allow = new Set(allowed);
9
+ return Object.fromEntries(Object.entries(tools).filter(([name]) => allow.has(name)));
10
+ }
11
+ //# sourceMappingURL=mcp-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAI,KAAwB,EAAE,OAAkB;IACvE,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC"}
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';
@@ -136,6 +137,8 @@ export interface PluginContext {
136
137
  * inherit it from the run that started them; plugins cannot set it.
137
138
  */
138
139
  actingUser?: ActingUser;
140
+ /** For an `oauth` connection: signs MCP requests in, refreshing tokens as needed. */
141
+ mcpAuth?: OAuthClientProvider;
139
142
  }
140
143
  export type WebhookHandlerArgs = {
141
144
  event: WebhookEvent;
@@ -162,6 +165,44 @@ export type PluginWidgetResponseArgs = {
162
165
  state: OpenBotState;
163
166
  emit: (event: OpenBotEvent) => Promise<void>;
164
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[];
165
206
  /**
166
207
  * Plugin contract expected by the OpenBot host.
167
208
  * A plugin owns `run` (harness / LLM loop), `tools` with `execute`, and/or webhook hooks.
@@ -181,6 +222,15 @@ export interface Plugin {
181
222
  onEvent?: (event: OpenBotEvent, context: PluginContext) => unknown;
182
223
  onWidgetResponse?: (args: PluginWidgetResponseArgs) => unknown;
183
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>;
184
234
  }
185
235
  export type PluginModule = Omit<Plugin, 'id'>;
186
236
  export declare function definePlugin<T extends PluginModule>(definition: T): T;
@@ -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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAgNA,MAAM,UAAU,YAAY,CAAkC,UAAa;IACzE,OAAO,UAAU,CAAC;AACpB,CAAC"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meetopenbot/plugin-sdk",
3
- "version": "1.6.0",
3
+ "version": "1.8.0",
4
4
  "description": "Types and helpers for building OpenBot plugins.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",