@meetopenbot/plugin-sdk 0.5.1 → 1.0.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/README.md +35 -50
- package/dist/agent-plugin.d.ts +12 -7
- package/dist/agent-plugin.d.ts.map +1 -1
- package/dist/agent-plugin.js +71 -68
- package/dist/agent-plugin.js.map +1 -1
- package/dist/events.d.ts +91 -5
- package/dist/events.d.ts.map +1 -1
- package/dist/plugin.d.ts +83 -10
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/runtime.d.ts +11 -7
- package/dist/runtime.d.ts.map +1 -1
- package/package.json +2 -4
package/README.md
CHANGED
|
@@ -12,41 +12,33 @@ OpenBot plugins **must** be **ESM** (ECMAScript modules): `import` / `export` in
|
|
|
12
12
|
|
|
13
13
|
## How it Works
|
|
14
14
|
|
|
15
|
-
OpenBot plugins
|
|
15
|
+
OpenBot plugins are modules the host loads per agent. There is no event bus.
|
|
16
16
|
|
|
17
|
-
1. **Registration**: The host loads your plugin and
|
|
18
|
-
2. **
|
|
19
|
-
3. **
|
|
20
|
-
4. **
|
|
17
|
+
1. **Registration**: The host loads your plugin and merges `tools`.
|
|
18
|
+
2. **Turn**: On `POST .../messages`, the host calls `run` (or the default OpenBot loop) with a `PluginContext`.
|
|
19
|
+
3. **Tools**: `tools.<name>.execute` runs in-process. Approval and widgets can `await context.host.awaitWidgetResponse`.
|
|
20
|
+
4. **Timeline**: Persist `agent:output`, `client:ui:widget`, and `action:<tool>` / `:result`. Stream `agent:output:delta` over SSE only.
|
|
21
21
|
|
|
22
22
|
## Core Concepts
|
|
23
23
|
|
|
24
24
|
### Plugin
|
|
25
25
|
|
|
26
|
-
A plugin is defined by the `Plugin` or `PluginModule` interface. Use `definePlugin`
|
|
26
|
+
A plugin is defined by the `Plugin` or `PluginModule` interface. Use `definePlugin`, `defineAgentPlugin`, or `defineMcpAgent`. Do not set `id` — the host assigns it from the npm package name.
|
|
27
27
|
|
|
28
28
|
```typescript
|
|
29
|
-
import {
|
|
29
|
+
import { defineAgentPlugin } from "@meetopenbot/plugin-sdk";
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
id: "my-agent",
|
|
31
|
+
const plugin = await defineAgentPlugin({
|
|
33
32
|
name: "My Agent",
|
|
34
33
|
description: "A custom AI agent",
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
model: {
|
|
39
|
-
type: "string",
|
|
40
|
-
description: "Model id",
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
factory: (context) => (builder) => {
|
|
45
|
-
builder.on("agent:invoke", async function* (event) {
|
|
46
|
-
// Handle agent logic here
|
|
47
|
-
});
|
|
34
|
+
models: { providers: ["openai"], default: "openai/gpt-4o-mini" },
|
|
35
|
+
async run({ prompt }) {
|
|
36
|
+
return `You said: ${prompt}`;
|
|
48
37
|
},
|
|
49
38
|
});
|
|
39
|
+
|
|
40
|
+
export { plugin };
|
|
41
|
+
export default plugin;
|
|
50
42
|
```
|
|
51
43
|
|
|
52
44
|
### Events
|
|
@@ -71,7 +63,7 @@ The OpenBot host exposes `POST /api/webhooks/:provider` for third-party integrat
|
|
|
71
63
|
1. Preserves the **raw request body** (base64 in the event) for HMAC signature checks.
|
|
72
64
|
2. Dispatches `action:webhook` to the `system` agent on the `general` channel.
|
|
73
65
|
3. **Awaits** the plugin run and uses the first `action:webhook:http-response` yield as the HTTP reply (defaults to `200 {}`).
|
|
74
|
-
4. Fans out subsequent events (`agent:invoke`, etc.) over SSE like
|
|
66
|
+
4. Fans out subsequent events (`agent:invoke`, etc.) over SSE like a chat turn.
|
|
75
67
|
|
|
76
68
|
**Plugin responsibilities:**
|
|
77
69
|
|
|
@@ -86,7 +78,6 @@ import {
|
|
|
86
78
|
decodeWebhookRawBody,
|
|
87
79
|
getWebhookHeader,
|
|
88
80
|
webhookHttpResponse,
|
|
89
|
-
type WebhookEvent,
|
|
90
81
|
} from "@meetopenbot/plugin-sdk";
|
|
91
82
|
|
|
92
83
|
export default definePlugin({
|
|
@@ -101,33 +92,27 @@ export default definePlugin({
|
|
|
101
92
|
},
|
|
102
93
|
},
|
|
103
94
|
},
|
|
104
|
-
|
|
105
|
-
(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (payload.type === "url_verification") {
|
|
115
|
-
yield webhookHttpResponse({
|
|
116
|
-
status: 200,
|
|
117
|
-
body: { challenge: payload.challenge },
|
|
118
|
-
});
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// verify signature, then ack + transform...
|
|
123
|
-
yield webhookHttpResponse({ status: 200, body: {} });
|
|
124
|
-
yield {
|
|
125
|
-
type: "agent:invoke",
|
|
126
|
-
data: { role: "user", content: payload.event?.text ?? "" },
|
|
127
|
-
meta: { threadId: payload.event?.thread_ts ?? payload.event?.ts },
|
|
128
|
-
};
|
|
95
|
+
async *onWebhook({ event }) {
|
|
96
|
+
if (event.data.provider !== "slack") return;
|
|
97
|
+
|
|
98
|
+
const rawBody = decodeWebhookRawBody(event);
|
|
99
|
+
const payload = JSON.parse(rawBody.toString("utf8"));
|
|
100
|
+
|
|
101
|
+
if (payload.type === "url_verification") {
|
|
102
|
+
yield webhookHttpResponse({
|
|
103
|
+
status: 200,
|
|
104
|
+
body: { challenge: payload.challenge },
|
|
129
105
|
});
|
|
130
|
-
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
yield webhookHttpResponse({ status: 200, body: {} });
|
|
110
|
+
yield {
|
|
111
|
+
type: "agent:invoke",
|
|
112
|
+
data: { role: "user", content: payload.event?.text ?? "" },
|
|
113
|
+
meta: { threadId: payload.event?.thread_ts ?? payload.event?.ts },
|
|
114
|
+
};
|
|
115
|
+
},
|
|
131
116
|
});
|
|
132
117
|
```
|
|
133
118
|
|
package/dist/agent-plugin.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { AgentInvokeEvent, OpenBotEvent, UIWidgetResponseEvent } from './events.js';
|
|
1
|
+
import type { AgentInvokeEvent, OpenBotEvent, OpenBotState, UIWidgetResponseEvent } from './events.js';
|
|
2
|
+
import { shouldHandleInvoke } from './helpers.js';
|
|
2
3
|
import { type PluginContext, type PluginModule } from './plugin.js';
|
|
3
4
|
import type { PluginHandlerContext } from './runtime.js';
|
|
4
5
|
import type { RenderUIWidgetData } from './ui.js';
|
|
@@ -15,12 +16,16 @@ export type AgentTurnArgs = {
|
|
|
15
16
|
event: AgentInvokeEvent;
|
|
16
17
|
handlerCtx: PluginHandlerContext;
|
|
17
18
|
context: PluginContext;
|
|
19
|
+
state: OpenBotState;
|
|
20
|
+
emit: (event: OpenBotEvent) => Promise<void>;
|
|
18
21
|
};
|
|
19
22
|
export type AgentTurnResult = string | void | AsyncIterable<AgentTurnYield | OpenBotEvent>;
|
|
20
23
|
export type AgentWidgetResponseArgs = {
|
|
21
24
|
event: UIWidgetResponseEvent;
|
|
22
25
|
handlerCtx: PluginHandlerContext;
|
|
23
26
|
context: PluginContext;
|
|
27
|
+
state: OpenBotState;
|
|
28
|
+
emit: (event: OpenBotEvent) => Promise<void>;
|
|
24
29
|
};
|
|
25
30
|
/** Catalog slice shown in the shared model dropdown. */
|
|
26
31
|
export type AgentModelsSpec = {
|
|
@@ -32,7 +37,7 @@ export type AgentModelsSpec = {
|
|
|
32
37
|
description?: string;
|
|
33
38
|
}>;
|
|
34
39
|
};
|
|
35
|
-
export type AgentPluginDefinition = Omit<PluginModule, '
|
|
40
|
+
export type AgentPluginDefinition = Omit<PluginModule, 'run' | 'onWidgetResponse' | 'mapError'> & {
|
|
36
41
|
/** Registry providers for the model picker. Stamps `configSchema.properties.model`. */
|
|
37
42
|
models?: AgentModelsSpec;
|
|
38
43
|
/** Shown when invoke content is empty. When omitted, empty prompts are ignored. */
|
|
@@ -40,16 +45,16 @@ export type AgentPluginDefinition = Omit<PluginModule, 'factory'> & {
|
|
|
40
45
|
run: (args: AgentTurnArgs) => AgentTurnResult | Promise<AgentTurnResult>;
|
|
41
46
|
onWidgetResponse?: (args: AgentWidgetResponseArgs) => AsyncIterable<AgentTurnYield | OpenBotEvent>;
|
|
42
47
|
mapError?: (error: unknown, args: AgentTurnArgs) => AgentTurnYield | AgentTurnYield[] | OpenBotEvent | undefined;
|
|
43
|
-
/** Extra bus handlers (webhooks, tools). Invoked after the standard subscriptions. */
|
|
44
|
-
setup?: PluginModule['factory'];
|
|
45
48
|
};
|
|
46
49
|
export declare function toAgentTurnEvents(item: AgentTurnYield | OpenBotEvent, agentId: string, threadId: string | undefined, meta?: AgentInvokeEvent['meta']): OpenBotEvent[];
|
|
50
|
+
export declare function emitTurn(items: AsyncIterable<AgentTurnYield | OpenBotEvent>, agentId: string, threadId: string | undefined, meta?: AgentInvokeEvent['meta']): AsyncGenerator<OpenBotEvent>;
|
|
51
|
+
export { shouldHandleInvoke };
|
|
47
52
|
/**
|
|
48
53
|
* Define an agent plugin with a standard invoke loop.
|
|
49
54
|
*
|
|
50
|
-
*
|
|
51
|
-
* `
|
|
52
|
-
* `{ kind: 'widget' }` tool traces as the vendor stream lands (see `emitTextReplies`).
|
|
55
|
+
* The host calls `run` directly. `run` may return a string, or yield
|
|
56
|
+
* `{ kind: 'reply', content }` and `{ kind: 'widget' }` tool traces.
|
|
53
57
|
*/
|
|
54
58
|
export declare function defineAgentPlugin(definition: AgentPluginDefinition): Promise<PluginModule>;
|
|
59
|
+
export declare function runAgentTurn(plugin: PluginModule, args: AgentTurnArgs): Promise<AsyncIterable<OpenBotEvent>>;
|
|
55
60
|
//# sourceMappingURL=agent-plugin.d.ts.map
|
|
@@ -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,qBAAqB,EACtB,MAAM,aAAa,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
|
@@ -17,7 +17,7 @@ export function toAgentTurnEvents(item, agentId, threadId, meta) {
|
|
|
17
17
|
}
|
|
18
18
|
return [agentOutput({ agentId, threadId, content: item.content, meta })];
|
|
19
19
|
}
|
|
20
|
-
async function* emitTurn(items, agentId, threadId, meta) {
|
|
20
|
+
export async function* emitTurn(items, agentId, threadId, meta) {
|
|
21
21
|
for await (const item of items) {
|
|
22
22
|
yield* toAgentTurnEvents(item, agentId, threadId, meta);
|
|
23
23
|
}
|
|
@@ -25,15 +25,15 @@ async function* emitTurn(items, agentId, threadId, meta) {
|
|
|
25
25
|
function errorText(error) {
|
|
26
26
|
return error instanceof Error ? error.message : String(error);
|
|
27
27
|
}
|
|
28
|
+
export { shouldHandleInvoke };
|
|
28
29
|
/**
|
|
29
30
|
* Define an agent plugin with a standard invoke loop.
|
|
30
31
|
*
|
|
31
|
-
*
|
|
32
|
-
* `
|
|
33
|
-
* `{ kind: 'widget' }` tool traces as the vendor stream lands (see `emitTextReplies`).
|
|
32
|
+
* The host calls `run` directly. `run` may return a string, or yield
|
|
33
|
+
* `{ kind: 'reply', content }` and `{ kind: 'widget' }` tool traces.
|
|
34
34
|
*/
|
|
35
35
|
export async function defineAgentPlugin(definition) {
|
|
36
|
-
const { emptyPrompt, run, onWidgetResponse, mapError,
|
|
36
|
+
const { emptyPrompt, run, onWidgetResponse, mapError, models, configSchema, ...plugin } = definition;
|
|
37
37
|
const properties = { ...(configSchema?.properties ?? {}) };
|
|
38
38
|
if (models?.providers.length) {
|
|
39
39
|
properties.model = await modelConfigField({
|
|
@@ -49,70 +49,73 @@ export async function defineAgentPlugin(definition) {
|
|
|
49
49
|
return definePlugin({
|
|
50
50
|
...plugin,
|
|
51
51
|
...(schema ? { configSchema: schema } : {}),
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
meta: event.meta,
|
|
106
|
-
});
|
|
52
|
+
emptyPrompt,
|
|
53
|
+
run,
|
|
54
|
+
onWidgetResponse,
|
|
55
|
+
mapError,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export async function runAgentTurn(plugin, args) {
|
|
59
|
+
const { context, event } = args;
|
|
60
|
+
const threadId = args.threadId ?? event.meta?.threadId;
|
|
61
|
+
const prompt = (event.data.content ?? '').trim();
|
|
62
|
+
async function* empty() { }
|
|
63
|
+
if (!plugin.run)
|
|
64
|
+
return empty();
|
|
65
|
+
if (!shouldHandleInvoke(event, context.agentId))
|
|
66
|
+
return empty();
|
|
67
|
+
if (!prompt) {
|
|
68
|
+
if (plugin.emptyPrompt) {
|
|
69
|
+
return (async function* () {
|
|
70
|
+
yield agentOutput({
|
|
71
|
+
agentId: context.agentId,
|
|
72
|
+
content: plugin.emptyPrompt,
|
|
73
|
+
threadId,
|
|
74
|
+
meta: event.meta,
|
|
75
|
+
});
|
|
76
|
+
})();
|
|
77
|
+
}
|
|
78
|
+
return empty();
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const result = await plugin.run(args);
|
|
82
|
+
if (result == null || result === '')
|
|
83
|
+
return empty();
|
|
84
|
+
if (typeof result === 'string') {
|
|
85
|
+
return (async function* () {
|
|
86
|
+
yield agentOutput({
|
|
87
|
+
agentId: context.agentId,
|
|
88
|
+
content: result,
|
|
89
|
+
threadId,
|
|
90
|
+
meta: event.meta,
|
|
91
|
+
});
|
|
92
|
+
})();
|
|
93
|
+
}
|
|
94
|
+
if (isAsyncIterable(result)) {
|
|
95
|
+
return emitTurn(result, context.agentId, threadId, event.meta);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
const mapped = plugin.mapError?.(error, args);
|
|
100
|
+
if (mapped) {
|
|
101
|
+
const items = Array.isArray(mapped) ? mapped : [mapped];
|
|
102
|
+
return (async function* () {
|
|
103
|
+
for (const item of items) {
|
|
104
|
+
yield* toAgentTurnEvents(item, context.agentId, threadId, event.meta);
|
|
107
105
|
}
|
|
106
|
+
})();
|
|
107
|
+
}
|
|
108
|
+
const message = errorText(error);
|
|
109
|
+
return (async function* () {
|
|
110
|
+
yield agentOutput({
|
|
111
|
+
agentId: context.agentId,
|
|
112
|
+
content: creditsErrorMessage(message, { agentName: plugin.name }) ??
|
|
113
|
+
(message || 'Agent failed for an unknown reason. Please try again.'),
|
|
114
|
+
threadId,
|
|
115
|
+
meta: event.meta,
|
|
108
116
|
});
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
setup?.(context)(builder);
|
|
115
|
-
},
|
|
116
|
-
});
|
|
117
|
+
})();
|
|
118
|
+
}
|
|
119
|
+
return empty();
|
|
117
120
|
}
|
|
118
121
|
//# sourceMappingURL=agent-plugin.js.map
|
package/dist/agent-plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-plugin.js","sourceRoot":"","sources":["../src/agent-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-plugin.js","sourceRoot":"","sources":["../src/agent-plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/events.d.ts
CHANGED
|
@@ -17,6 +17,12 @@ export type AgentInvokeEvent = BaseEvent & {
|
|
|
17
17
|
role?: "user" | "assistant" | "system" | "agent";
|
|
18
18
|
content: string;
|
|
19
19
|
agentId?: string;
|
|
20
|
+
/** Per-run config overrides: flat fields or nested by plugin id. */
|
|
21
|
+
config?: Record<string, unknown>;
|
|
22
|
+
/** Agents the human @mentioned; the orchestrator should ask them. */
|
|
23
|
+
mentionedAgentIds?: string[];
|
|
24
|
+
/** Space this ask was forwarded from (`start_work`). */
|
|
25
|
+
forwardedFromSpaceId?: string;
|
|
20
26
|
};
|
|
21
27
|
};
|
|
22
28
|
/** One thinking block to round-trip to the next model call. */
|
|
@@ -25,6 +31,16 @@ export type ReasoningPartData = {
|
|
|
25
31
|
/** AI SDK provider options (Anthropic signature, OpenAI itemId, …). */
|
|
26
32
|
providerOptions?: Record<string, Record<string, unknown>>;
|
|
27
33
|
};
|
|
34
|
+
export type AgentOutputDeltaEvent = BaseEvent & {
|
|
35
|
+
type: "agent:output:delta";
|
|
36
|
+
data: {
|
|
37
|
+
content?: string;
|
|
38
|
+
reasoning?: string;
|
|
39
|
+
};
|
|
40
|
+
meta: EventMeta & {
|
|
41
|
+
agentId: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
28
44
|
export type AgentOutputEvent = BaseEvent & {
|
|
29
45
|
type: "agent:output";
|
|
30
46
|
data: {
|
|
@@ -71,6 +87,7 @@ export type WebhookEvent = BaseEvent & {
|
|
|
71
87
|
type: "action:webhook";
|
|
72
88
|
data: {
|
|
73
89
|
provider: string;
|
|
90
|
+
method?: string;
|
|
74
91
|
/** Request body encoded as base64 so plugins can verify HMACs on the raw bytes. */
|
|
75
92
|
rawBody: string;
|
|
76
93
|
headers: Record<string, string | string[] | undefined>;
|
|
@@ -89,11 +106,73 @@ export type WebhookHttpResponseEvent = BaseEvent & {
|
|
|
89
106
|
headers?: Record<string, string>;
|
|
90
107
|
};
|
|
91
108
|
};
|
|
109
|
+
export type AgentRunStartEvent = BaseEvent & {
|
|
110
|
+
type: "agent:run:start";
|
|
111
|
+
data: {
|
|
112
|
+
runId: string;
|
|
113
|
+
agentId: string;
|
|
114
|
+
channelId?: string;
|
|
115
|
+
threadId?: string;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export type AgentRunEndEvent = BaseEvent & {
|
|
119
|
+
type: "agent:run:end";
|
|
120
|
+
data: {
|
|
121
|
+
runId: string;
|
|
122
|
+
agentId: string;
|
|
123
|
+
channelId?: string;
|
|
124
|
+
threadId?: string;
|
|
125
|
+
error?: string;
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
export type AgentRunStoppedEvent = BaseEvent & {
|
|
129
|
+
type: "agent:run:stopped";
|
|
130
|
+
data: {
|
|
131
|
+
runId: string;
|
|
132
|
+
agentId: string;
|
|
133
|
+
channelId: string;
|
|
134
|
+
threadId?: string;
|
|
135
|
+
reason?: string;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
export type ActiveRunsSnapshotEvent = BaseEvent & {
|
|
139
|
+
type: "agent:active-runs:snapshot";
|
|
140
|
+
data: {
|
|
141
|
+
channels: Array<{
|
|
142
|
+
channelId: string;
|
|
143
|
+
threadId?: string;
|
|
144
|
+
activeCount: number;
|
|
145
|
+
agentIds: string[];
|
|
146
|
+
/** First-line snippet of in-flight agent text for list UIs. */
|
|
147
|
+
latestAgentOutput?: string;
|
|
148
|
+
latestAgentOutputAgentId?: string;
|
|
149
|
+
}>;
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
/** Throttled live output for thread lists (workspace `/api/stream`, not persisted). */
|
|
153
|
+
export type AgentThreadPreviewEvent = BaseEvent & {
|
|
154
|
+
type: "agent:thread:preview";
|
|
155
|
+
data: {
|
|
156
|
+
channelId: string;
|
|
157
|
+
threadId?: string;
|
|
158
|
+
latestAgentOutput: string;
|
|
159
|
+
latestAgentOutputAgentId?: string;
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
export type AgentUsageEvent = BaseEvent & {
|
|
163
|
+
type: "agent:usage";
|
|
164
|
+
data: {
|
|
165
|
+
inputTokens?: number;
|
|
166
|
+
outputTokens?: number;
|
|
167
|
+
totalTokens?: number;
|
|
168
|
+
[key: string]: unknown;
|
|
169
|
+
};
|
|
170
|
+
};
|
|
92
171
|
/**
|
|
93
|
-
*
|
|
94
|
-
* The host
|
|
172
|
+
* Timeline, webhook, and tool events. CRUD is REST, not this union.
|
|
173
|
+
* The host also accepts additional event types at runtime.
|
|
95
174
|
*/
|
|
96
|
-
export type PluginEvent = AgentInvokeEvent | AgentOutputEvent | UIWidgetEvent | UIWidgetResponseEvent | ToolActionEvent | ToolResultEvent | WebhookEvent | WebhookHttpResponseEvent;
|
|
175
|
+
export type PluginEvent = AgentInvokeEvent | AgentOutputEvent | AgentOutputDeltaEvent | UIWidgetEvent | UIWidgetResponseEvent | ToolActionEvent | ToolResultEvent | WebhookEvent | WebhookHttpResponseEvent | AgentRunStartEvent | AgentRunEndEvent | AgentRunStoppedEvent | ActiveRunsSnapshotEvent | AgentThreadPreviewEvent | AgentUsageEvent;
|
|
97
176
|
export type OpenBotEvent = PluginEvent | (BaseEvent & {
|
|
98
177
|
data?: unknown;
|
|
99
178
|
});
|
|
@@ -113,16 +192,23 @@ export type ShortTermMessage = {
|
|
|
113
192
|
toolCallId: string;
|
|
114
193
|
toolName: string;
|
|
115
194
|
};
|
|
116
|
-
/** Runtime state
|
|
195
|
+
/** Runtime state for an agent turn. */
|
|
117
196
|
export interface OpenBotState {
|
|
118
197
|
agentId: string;
|
|
119
198
|
runId: string;
|
|
120
|
-
channelId
|
|
199
|
+
channelId?: string;
|
|
121
200
|
threadId?: string;
|
|
122
201
|
agentDetails?: AgentDetails;
|
|
123
202
|
channelDetails?: ChannelDetails;
|
|
124
203
|
threadDetails?: ThreadDetails;
|
|
125
204
|
triggerEvent?: OpenBotEvent;
|
|
126
205
|
shortTermMessages?: ShortTermMessage[];
|
|
206
|
+
currentUser?: {
|
|
207
|
+
userName?: string;
|
|
208
|
+
};
|
|
209
|
+
/** Active model string (e.g. `openai/gpt-4o-mini`). */
|
|
210
|
+
model?: string;
|
|
211
|
+
/** Persisted tool call IDs waiting for results. */
|
|
212
|
+
pendingToolCallIds?: string[];
|
|
127
213
|
}
|
|
128
214
|
//# sourceMappingURL=events.d.ts.map
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentDetails } from './storage.js';
|
|
2
2
|
import type { Storage } from './storage.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { AgentInvokeEvent, OpenBotEvent, OpenBotState, UIWidgetResponseEvent, WebhookEvent } from './events.js';
|
|
4
4
|
/** Plugin reference from AGENT.md frontmatter. */
|
|
5
5
|
export interface PluginRef {
|
|
6
6
|
id: string;
|
|
@@ -20,16 +20,13 @@ export type ConfigSchemaProperty = {
|
|
|
20
20
|
minimum?: number;
|
|
21
21
|
maximum?: number;
|
|
22
22
|
format?: 'password' | 'url' | 'email';
|
|
23
|
-
/** When true, the field may be overridden per `agent:invoke` from the composer. */
|
|
24
23
|
override?: boolean;
|
|
25
|
-
/** Labeled select options (preferred over bare `enum` when present). */
|
|
26
24
|
options?: Array<{
|
|
27
25
|
label: string;
|
|
28
26
|
value: string;
|
|
29
27
|
description?: string;
|
|
30
28
|
}>;
|
|
31
29
|
};
|
|
32
|
-
/** JSON-schema-like description of per-plugin config in AGENT.md. */
|
|
33
30
|
export type ConfigSchema = {
|
|
34
31
|
type: 'object';
|
|
35
32
|
properties: {
|
|
@@ -37,22 +34,93 @@ export type ConfigSchema = {
|
|
|
37
34
|
};
|
|
38
35
|
required?: string[];
|
|
39
36
|
};
|
|
40
|
-
|
|
37
|
+
export type ToolExecuteResult = {
|
|
38
|
+
output: string;
|
|
39
|
+
success?: boolean;
|
|
40
|
+
[key: string]: unknown;
|
|
41
|
+
};
|
|
42
|
+
export type ToolExecuteContext = {
|
|
43
|
+
agentId: string;
|
|
44
|
+
channelId?: string;
|
|
45
|
+
threadId?: string;
|
|
46
|
+
runId?: string;
|
|
47
|
+
toolCallId?: string;
|
|
48
|
+
abortSignal?: AbortSignal;
|
|
49
|
+
storage: Storage;
|
|
50
|
+
host: PluginHost;
|
|
51
|
+
publicBaseUrl: string;
|
|
52
|
+
config: Record<string, unknown>;
|
|
53
|
+
state: OpenBotState;
|
|
54
|
+
emit: (event: OpenBotEvent) => Promise<void>;
|
|
55
|
+
};
|
|
41
56
|
export interface ToolDefinition {
|
|
42
57
|
description: string;
|
|
43
58
|
inputSchema: unknown;
|
|
59
|
+
execute?: (args: unknown, ctx: ToolExecuteContext) => Promise<ToolExecuteResult | string> | ToolExecuteResult | string;
|
|
60
|
+
}
|
|
61
|
+
export interface RunAgentHostOptions {
|
|
62
|
+
runId: string;
|
|
63
|
+
agentId: string;
|
|
64
|
+
event: OpenBotEvent;
|
|
65
|
+
persistEvents?: boolean;
|
|
66
|
+
publicBaseUrl?: string;
|
|
67
|
+
onEvent: (event: OpenBotEvent, state?: OpenBotState) => Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
export interface PluginHost {
|
|
70
|
+
runAgent: (options: RunAgentHostOptions) => Promise<void>;
|
|
71
|
+
isCloudSystemAgent: (agentId: string) => boolean;
|
|
72
|
+
isCloudMode: () => boolean;
|
|
73
|
+
parseOpenbotAuthMode: (value: unknown) => 'credits' | 'byok';
|
|
74
|
+
saveConfig: (patch: Record<string, unknown>) => void;
|
|
75
|
+
getBaseDir: () => string;
|
|
76
|
+
resolvePath: (p: string) => string;
|
|
77
|
+
orchestratorAgentId: string;
|
|
78
|
+
openbotPluginId: string;
|
|
79
|
+
defaultCloudAuthMode: 'credits' | 'byok';
|
|
80
|
+
awaitWidgetResponse: (widgetId: string, abortSignal?: AbortSignal) => Promise<{
|
|
81
|
+
actionId: string;
|
|
82
|
+
values?: Record<string, unknown>;
|
|
83
|
+
metadata?: Record<string, unknown>;
|
|
84
|
+
}>;
|
|
44
85
|
}
|
|
45
|
-
/** Context passed to `factory` when the host wires a plugin onto the bus. */
|
|
46
86
|
export interface PluginContext {
|
|
47
87
|
agentId: string;
|
|
48
88
|
agentDetails: AgentDetails;
|
|
49
89
|
config: Record<string, unknown>;
|
|
50
90
|
storage: Storage;
|
|
51
91
|
tools: Record<string, ToolDefinition>;
|
|
92
|
+
publicBaseUrl: string;
|
|
93
|
+
abortSignal?: AbortSignal;
|
|
94
|
+
host: PluginHost;
|
|
52
95
|
}
|
|
96
|
+
export type WebhookHandlerArgs = {
|
|
97
|
+
event: WebhookEvent;
|
|
98
|
+
context: PluginContext;
|
|
99
|
+
state: OpenBotState;
|
|
100
|
+
};
|
|
101
|
+
export type PluginRunArgs = {
|
|
102
|
+
prompt: string;
|
|
103
|
+
threadId: string | undefined;
|
|
104
|
+
event: AgentInvokeEvent;
|
|
105
|
+
handlerCtx: {
|
|
106
|
+
state: OpenBotState;
|
|
107
|
+
};
|
|
108
|
+
context: PluginContext;
|
|
109
|
+
state: OpenBotState;
|
|
110
|
+
emit: (event: OpenBotEvent) => Promise<void>;
|
|
111
|
+
};
|
|
112
|
+
export type PluginWidgetResponseArgs = {
|
|
113
|
+
event: UIWidgetResponseEvent;
|
|
114
|
+
handlerCtx: {
|
|
115
|
+
state: OpenBotState;
|
|
116
|
+
};
|
|
117
|
+
context: PluginContext;
|
|
118
|
+
state: OpenBotState;
|
|
119
|
+
emit: (event: OpenBotEvent) => Promise<void>;
|
|
120
|
+
};
|
|
53
121
|
/**
|
|
54
122
|
* Plugin contract expected by the OpenBot host.
|
|
55
|
-
*
|
|
123
|
+
* A plugin owns `run` (harness / LLM loop), `tools` with `execute`, and/or webhook hooks.
|
|
56
124
|
*/
|
|
57
125
|
export interface Plugin {
|
|
58
126
|
id: string;
|
|
@@ -60,12 +128,17 @@ export interface Plugin {
|
|
|
60
128
|
description: string;
|
|
61
129
|
image?: string;
|
|
62
130
|
configSchema?: ConfigSchema;
|
|
131
|
+
/** @deprecated Use `tools`. */
|
|
63
132
|
toolDefinitions?: Record<string, ToolDefinition>;
|
|
64
|
-
|
|
133
|
+
tools?: Record<string, ToolDefinition>;
|
|
134
|
+
run?: (args: PluginRunArgs) => unknown;
|
|
135
|
+
emptyPrompt?: string;
|
|
136
|
+
onWebhook?: (args: WebhookHandlerArgs) => unknown;
|
|
137
|
+
onEvent?: (event: OpenBotEvent, context: PluginContext) => unknown;
|
|
138
|
+
onWidgetResponse?: (args: PluginWidgetResponseArgs) => unknown;
|
|
139
|
+
mapError?: (error: unknown, args: PluginRunArgs) => unknown;
|
|
65
140
|
}
|
|
66
|
-
/** Community plugin module export. The host assigns `id` from the npm package name. */
|
|
67
141
|
export type PluginModule = Omit<Plugin, 'id'>;
|
|
68
|
-
/** Define a plugin with full OpenBot typing. */
|
|
69
142
|
export declare function definePlugin<T extends PluginModule>(definition: T): T;
|
|
70
143
|
export declare function definePlugin<T extends Plugin>(definition: T): T;
|
|
71
144
|
//# sourceMappingURL=plugin.d.ts.map
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
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":"AAmKA,MAAM,UAAU,YAAY,CAAkC,UAAa;IACzE,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import type { MelonyBuilder, MelonyPlugin, RuntimeContext } from 'melony';
|
|
2
1
|
import type { OpenBotEvent, OpenBotState } from './events.js';
|
|
3
|
-
/** Context passed to plugin
|
|
4
|
-
export type PluginHandlerContext =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
export type
|
|
2
|
+
/** Context passed to plugin `run` / widget handlers. `state` is the current agent turn. */
|
|
3
|
+
export type PluginHandlerContext = {
|
|
4
|
+
state: OpenBotState;
|
|
5
|
+
};
|
|
6
|
+
/** @deprecated Host no longer uses a Melony builder. Kept as a no-op alias. */
|
|
7
|
+
export type PluginBuilder = {
|
|
8
|
+
on: (...args: never[]) => void;
|
|
9
|
+
};
|
|
10
|
+
/** @deprecated Plugins no longer return a Melony registrar. */
|
|
11
|
+
export type PluginFactory = (builder: PluginBuilder) => void;
|
|
12
|
+
export type { OpenBotEvent, OpenBotState };
|
|
9
13
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9D,2FAA2F;AAC3F,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;AAE7D,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meetopenbot/plugin-sdk",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Types and helpers for building OpenBot plugins
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Types and helpers for building OpenBot plugins.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
|
-
"melony": "^0.3.7",
|
|
23
22
|
"zod": "^4.3.5"
|
|
24
23
|
},
|
|
25
24
|
"dependencies": {
|
|
@@ -28,7 +27,6 @@
|
|
|
28
27
|
"ai": "^7.0.29"
|
|
29
28
|
},
|
|
30
29
|
"devDependencies": {
|
|
31
|
-
"melony": "^0.3.7",
|
|
32
30
|
"typescript": "^5.0.0",
|
|
33
31
|
"zod": "^4.3.5",
|
|
34
32
|
"@types/node": "^20.0.0"
|