@meetopenbot/plugin-sdk 2.1.0 → 2.3.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.
@@ -0,0 +1,62 @@
1
+ import { z } from 'zod';
2
+ /** What an agent may do in its channel folder. */
3
+ export type FileAccess = 'read' | 'readwrite';
4
+ export declare const FILE_TOOLS_PROMPT = "You can work with files in this channel's folder. Paths are relative to that folder and are shared with the other agents in the channel.\n- When you are given a file path, read it with read_file and use its contents.\n- If a path is missing or unclear, call list_files to find the file instead of guessing.";
5
+ export declare const FILE_TOOLS_WRITE_PROMPT = "- Save long results with write_file and report the exact path you saved to, so other agents can read it.";
6
+ /**
7
+ * Resolve a path under `root`, refusing paths outside it and secrets like `.env` or `.git`.
8
+ * Absolute paths are accepted when they point inside `root`: coding agents often report those.
9
+ */
10
+ export declare function resolveChannelPath(root: string, relative: string): string;
11
+ /** `list_files` and `read_file`, plus `write_file` for `readwrite`, all scoped to `root`. */
12
+ export declare function createFileTools(root: string, access: FileAccess): {
13
+ list_files: {
14
+ description: string;
15
+ inputSchema: z.ZodObject<{
16
+ path: z.ZodOptional<z.ZodString>;
17
+ }, z.core.$strip>;
18
+ execute: ({ path: relative }: {
19
+ path?: string;
20
+ }) => Promise<string[]>;
21
+ };
22
+ read_file: {
23
+ description: string;
24
+ inputSchema: z.ZodObject<{
25
+ path: z.ZodString;
26
+ }, z.core.$strip>;
27
+ execute: ({ path: relative }: {
28
+ path: string;
29
+ }) => Promise<string | string[]>;
30
+ };
31
+ } | {
32
+ write_file: {
33
+ description: string;
34
+ inputSchema: z.ZodObject<{
35
+ path: z.ZodString;
36
+ content: z.ZodString;
37
+ }, z.core.$strip>;
38
+ execute: ({ path: relative, content }: {
39
+ path: string;
40
+ content: string;
41
+ }) => Promise<string>;
42
+ };
43
+ list_files: {
44
+ description: string;
45
+ inputSchema: z.ZodObject<{
46
+ path: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strip>;
48
+ execute: ({ path: relative }: {
49
+ path?: string;
50
+ }) => Promise<string[]>;
51
+ };
52
+ read_file: {
53
+ description: string;
54
+ inputSchema: z.ZodObject<{
55
+ path: z.ZodString;
56
+ }, z.core.$strip>;
57
+ execute: ({ path: relative }: {
58
+ path: string;
59
+ }) => Promise<string | string[]>;
60
+ };
61
+ };
62
+ //# sourceMappingURL=file-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-tools.d.ts","sourceRoot":"","sources":["../src/file-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,kDAAkD;AAClD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;AAM9C,eAAO,MAAM,iBAAiB,uTAE2D,CAAC;AAE1F,eAAO,MAAM,uBAAuB,6GAA6G,CAAC;AAElJ;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUzE;AAyBD,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;;;;;;sCAQhB;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;sCAcvB;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE;;;;;;;;;+CA2BP;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE;;;;;;;sCAzCpC;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;sCAcvB;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE;;EAmCzD"}
@@ -0,0 +1,111 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { z } from 'zod';
4
+ const BLOCKED = /(^|\/)\.(env|git)(\/|\.|$)/;
5
+ const MAX_READ_BYTES = 1024 * 1024;
6
+ const MAX_LIST_ENTRIES = 200;
7
+ export const FILE_TOOLS_PROMPT = `You can work with files in this channel's folder. Paths are relative to that folder and are shared with the other agents in the channel.
8
+ - When you are given a file path, read it with read_file and use its contents.
9
+ - If a path is missing or unclear, call list_files to find the file instead of guessing.`;
10
+ export const FILE_TOOLS_WRITE_PROMPT = `- Save long results with write_file and report the exact path you saved to, so other agents can read it.`;
11
+ /**
12
+ * Resolve a path under `root`, refusing paths outside it and secrets like `.env` or `.git`.
13
+ * Absolute paths are accepted when they point inside `root`: coding agents often report those.
14
+ */
15
+ export function resolveChannelPath(root, relative) {
16
+ const clean = relative.trim().replace(/\\/g, '/') || '.';
17
+ const abs = path.resolve(root, clean);
18
+ if (abs !== root && !abs.startsWith(root + path.sep)) {
19
+ throw new Error(`"${relative}" is outside the channel folder`);
20
+ }
21
+ if (BLOCKED.test(path.relative(root, abs).split(path.sep).join('/'))) {
22
+ throw new Error(`"${relative}" is not accessible to agents`);
23
+ }
24
+ return abs;
25
+ }
26
+ async function listDir(root, relative) {
27
+ const abs = resolveChannelPath(root, relative);
28
+ const entries = await fs.readdir(abs, { withFileTypes: true });
29
+ return entries
30
+ .filter((entry) => !BLOCKED.test(entry.name))
31
+ .map((entry) => {
32
+ const rel = path.relative(root, path.join(abs, entry.name)).split(path.sep).join('/');
33
+ return entry.isDirectory() ? `${rel}/` : rel;
34
+ })
35
+ .sort()
36
+ .slice(0, MAX_LIST_ENTRIES);
37
+ }
38
+ /** On a missing file, name what is in its folder so the model can correct the path. */
39
+ async function notFound(root, relative) {
40
+ const dir = path.posix.dirname(relative.trim().replace(/\\/g, '/')) || '.';
41
+ const nearby = await listDir(root, dir).catch(() => []);
42
+ const hint = nearby.length
43
+ ? ` Files in ${dir === '.' ? 'the channel folder' : `${dir}/`}: ${nearby.join(', ')}`
44
+ : ' Call list_files to see what is there.';
45
+ return new Error(`"${relative}" not found.${hint}`);
46
+ }
47
+ /** `list_files` and `read_file`, plus `write_file` for `readwrite`, all scoped to `root`. */
48
+ export function createFileTools(root, access) {
49
+ const tools = {
50
+ list_files: {
51
+ description: "List files and folders in the channel folder. Folders end with '/'. Use it to find a file when a path is missing or wrong.",
52
+ inputSchema: z.object({
53
+ path: z.string().optional().describe('Folder to list, relative to the channel folder. Defaults to the top.'),
54
+ }),
55
+ execute: async ({ path: relative = '.' }) => {
56
+ try {
57
+ return await listDir(root, relative);
58
+ }
59
+ catch (error) {
60
+ if (error.code === 'ENOENT')
61
+ throw await notFound(root, relative);
62
+ throw error;
63
+ }
64
+ },
65
+ },
66
+ read_file: {
67
+ description: 'Read a text file from the channel folder.',
68
+ inputSchema: z.object({
69
+ path: z.string().describe('File path relative to the channel folder, e.g. "drafts/email.md".'),
70
+ }),
71
+ execute: async ({ path: relative }) => {
72
+ const abs = resolveChannelPath(root, relative);
73
+ let size;
74
+ try {
75
+ const stat = await fs.stat(abs);
76
+ if (stat.isDirectory())
77
+ return listDir(root, relative);
78
+ size = stat.size;
79
+ }
80
+ catch (error) {
81
+ if (error.code === 'ENOENT')
82
+ throw await notFound(root, relative);
83
+ throw error;
84
+ }
85
+ if (size > MAX_READ_BYTES) {
86
+ throw new Error(`"${relative}" is ${size} bytes; read_file reads up to ${MAX_READ_BYTES}.`);
87
+ }
88
+ return fs.readFile(abs, 'utf8');
89
+ },
90
+ },
91
+ };
92
+ if (access !== 'readwrite')
93
+ return tools;
94
+ return {
95
+ ...tools,
96
+ write_file: {
97
+ description: 'Save a text file in the channel folder, replacing it if it exists. Returns the path written.',
98
+ inputSchema: z.object({
99
+ path: z.string().describe('File path relative to the channel folder, e.g. "research/pricing.md".'),
100
+ content: z.string(),
101
+ }),
102
+ execute: async ({ path: relative, content }) => {
103
+ const abs = resolveChannelPath(root, relative);
104
+ await fs.mkdir(path.dirname(abs), { recursive: true });
105
+ await fs.writeFile(abs, content, 'utf8');
106
+ return path.relative(root, abs).split(path.sep).join('/');
107
+ },
108
+ },
109
+ };
110
+ }
111
+ //# sourceMappingURL=file-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../src/file-tools.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export * from './runtime.js';
3
3
  export * from './plugin.js';
4
4
  export * from './events.js';
5
5
  export * from './ui.js';
6
+ export * from './ui-schema.js';
6
7
  export * from './storage.js';
7
8
  export * from './helpers.js';
8
9
  export * from './config-coercion.js';
@@ -19,4 +20,5 @@ export * from './openai-model.js';
19
20
  export * from './thread-context.js';
20
21
  export * from './harness-env.js';
21
22
  export * from './mcp-oauth.js';
23
+ export * from './file-tools.js';
22
24
  //# 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;AACjC,cAAc,gBAAgB,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,gBAAgB,CAAC;AAC/B,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;AAC/B,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export * from './runtime.js';
3
3
  export * from './plugin.js';
4
4
  export * from './events.js';
5
5
  export * from './ui.js';
6
+ export * from './ui-schema.js';
6
7
  export * from './storage.js';
7
8
  export * from './helpers.js';
8
9
  export * from './config-coercion.js';
@@ -19,4 +20,5 @@ export * from './openai-model.js';
19
20
  export * from './thread-context.js';
20
21
  export * from './harness-env.js';
21
22
  export * from './mcp-oauth.js';
23
+ export * from './file-tools.js';
22
24
  //# 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;AACjC,cAAc,gBAAgB,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,gBAAgB,CAAC;AAC/B,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;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -3,6 +3,7 @@ import { type AgentPluginDefinition, type AgentTurnYield } from './agent-plugin.
3
3
  import { type StreamHint } from './text-reply.js';
4
4
  import type { ApiKeyConnection, OAuthConnection, PluginModule } from './plugin.js';
5
5
  import { pickTools } from './mcp-tools.js';
6
+ import { type FileAccess } from './file-tools.js';
6
7
  export { pickTools };
7
8
  export type McpHttpTransport = {
8
9
  url: string;
@@ -37,6 +38,11 @@ export declare function runMcpTurn(args: {
37
38
  allowedTools?: string[];
38
39
  groupId?: string;
39
40
  processEnv?: NodeJS.ProcessEnv;
41
+ /** Adds list_files/read_file (and write_file) scoped to `root`. */
42
+ files?: {
43
+ root: string;
44
+ access: FileAccess;
45
+ };
40
46
  }): AsyncGenerator<AgentTurnYield>;
41
47
  export type McpAgentDefinition = Omit<AgentPluginDefinition, 'run' | 'connection'> & {
42
48
  system: string;
@@ -47,6 +53,11 @@ export type McpAgentDefinition = Omit<AgentPluginDefinition, 'run' | 'connection
47
53
  * Set it whenever the server offers tools the agent must not call.
48
54
  */
49
55
  allowedTools?: string[];
56
+ /**
57
+ * Give the agent list_files/read_file in the channel folder, plus write_file for `readwrite`.
58
+ * Lets agents hand files to each other by path. Ignored when the channel has no folder.
59
+ */
60
+ files?: FileAccess;
50
61
  } & ({
51
62
  /** The API key this agent needs. Over HTTP the key is checked with one call before saving. */
52
63
  connection: Omit<ApiKeyConnection, 'verify'>;
@@ -1 +1 @@
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,EAAoB,YAAY,EAAE,MAAM,aAAa,CAAC;AAErG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,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,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC,GAAG,cAAc,CAAC,cAAc,CAAC,CAsCjC;AASD,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,KAAK,GAAG,YAAY,CAAC,GAAG;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,CACE;IACE,8FAA8F;IAC9F,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC7C,GAAG,EAAE,YAAY,CAAC;CACnB,GACD;IACE,qDAAqD;IACrD,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC5C,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,CA4E1F"}
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
@@ -9,6 +9,7 @@ import { emitTextReplies, textReply } from './text-reply.js';
9
9
  import { loadThreadContext } from './thread-context.js';
10
10
  import { ConnectionRequiredError } from './mcp-oauth.js';
11
11
  import { pickTools } from './mcp-tools.js';
12
+ import { createFileTools, FILE_TOOLS_PROMPT, FILE_TOOLS_WRITE_PROMPT, } from './file-tools.js';
12
13
  export { pickTools };
13
14
  function isHttpTransport(transport) {
14
15
  return 'url' in transport;
@@ -53,11 +54,19 @@ export async function* runMcpTurn(args) {
53
54
  throw error;
54
55
  }
55
56
  try {
57
+ const files = args.files;
56
58
  const result = streamText({
57
59
  model: resolveOpenAiModel(args.model),
58
- system: args.system,
60
+ system: files
61
+ ? [args.system, FILE_TOOLS_PROMPT, files.access === 'readwrite' ? FILE_TOOLS_WRITE_PROMPT : '']
62
+ .filter(Boolean)
63
+ .join('\n\n')
64
+ : args.system,
59
65
  prompt: args.prompt,
60
- tools: pickTools(tools, args.allowedTools),
66
+ tools: {
67
+ ...pickTools(tools, args.allowedTools),
68
+ ...(files ? createFileTools(files.root, files.access) : {}),
69
+ },
61
70
  stopWhen: stepCountIs(args.maxSteps ?? 10),
62
71
  });
63
72
  let replied = false;
@@ -112,7 +121,7 @@ export async function verifyMcpCredential(mcp, apiKey) {
112
121
  * Specialist agent: one connection + MCP + streamText. Model picker comes from `models`.
113
122
  */
114
123
  export async function defineMcpAgent(definition) {
115
- const { connection: declared, mcp, system, maxSteps, history, allowedTools, models, ...plugin } = definition;
124
+ const { connection: declared, mcp, system, maxSteps, history, allowedTools, files, models, ...plugin } = definition;
116
125
  const defaultModel = models?.default ?? 'openai/gpt-6-luna';
117
126
  let connection;
118
127
  if (declared.kind === 'oauth') {
@@ -163,6 +172,7 @@ export async function defineMcpAgent(definition) {
163
172
  if (threadContext)
164
173
  prompt = `${threadContext}\n\nCurrent message:\n${args.prompt}`;
165
174
  }
175
+ const channelCwd = args.handlerCtx.state.channelDetails?.cwd;
166
176
  return runMcpTurn({
167
177
  mcp,
168
178
  apiKey: account.kind === 'apiKey' ? account.apiKey : '',
@@ -174,6 +184,7 @@ export async function defineMcpAgent(definition) {
174
184
  allowedTools,
175
185
  groupId: `${plugin.name}:tools`,
176
186
  processEnv: args.context.env ?? process.env,
187
+ files: files && channelCwd ? { root: channelCwd, access: files } : undefined,
177
188
  });
178
189
  },
179
190
  mapError: plugin.mapError ?? ((error) => ({
@@ -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,438 @@
1
+ import { z } from 'zod';
2
+ export declare const uiWidgetSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ kind: z.ZodLiteral<"message">;
4
+ body: z.ZodOptional<z.ZodString>;
5
+ widgetId: z.ZodOptional<z.ZodString>;
6
+ title: z.ZodOptional<z.ZodString>;
7
+ description: z.ZodOptional<z.ZodString>;
8
+ media: z.ZodOptional<z.ZodObject<{
9
+ type: z.ZodEnum<{
10
+ image: "image";
11
+ video: "video";
12
+ audio: "audio";
13
+ file: "file";
14
+ }>;
15
+ url: z.ZodString;
16
+ title: z.ZodOptional<z.ZodString>;
17
+ alt: z.ZodOptional<z.ZodString>;
18
+ thumbnailUrl: z.ZodOptional<z.ZodString>;
19
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
20
+ }, z.core.$strip>>;
21
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
22
+ id: z.ZodString;
23
+ label: z.ZodString;
24
+ value: z.ZodOptional<z.ZodUnknown>;
25
+ variant: z.ZodOptional<z.ZodEnum<{
26
+ primary: "primary";
27
+ secondary: "secondary";
28
+ danger: "danger";
29
+ }>>;
30
+ disabled: z.ZodOptional<z.ZodBoolean>;
31
+ }, z.core.$strip>>>;
32
+ state: z.ZodOptional<z.ZodEnum<{
33
+ open: "open";
34
+ submitted: "submitted";
35
+ cancelled: "cancelled";
36
+ error: "error";
37
+ }>>;
38
+ display: z.ZodOptional<z.ZodEnum<{
39
+ expanded: "expanded";
40
+ collapsed: "collapsed";
41
+ }>>;
42
+ groupId: z.ZodOptional<z.ZodString>;
43
+ size: z.ZodOptional<z.ZodEnum<{
44
+ small: "small";
45
+ medium: "medium";
46
+ large: "large";
47
+ full: "full";
48
+ }>>;
49
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
50
+ }, z.core.$strip>, z.ZodObject<{
51
+ kind: z.ZodLiteral<"choice">;
52
+ actions: z.ZodArray<z.ZodObject<{
53
+ id: z.ZodString;
54
+ label: z.ZodString;
55
+ value: z.ZodOptional<z.ZodUnknown>;
56
+ variant: z.ZodOptional<z.ZodEnum<{
57
+ primary: "primary";
58
+ secondary: "secondary";
59
+ danger: "danger";
60
+ }>>;
61
+ disabled: z.ZodOptional<z.ZodBoolean>;
62
+ }, z.core.$strip>>;
63
+ widgetId: z.ZodOptional<z.ZodString>;
64
+ title: z.ZodOptional<z.ZodString>;
65
+ description: z.ZodOptional<z.ZodString>;
66
+ media: z.ZodOptional<z.ZodObject<{
67
+ type: z.ZodEnum<{
68
+ image: "image";
69
+ video: "video";
70
+ audio: "audio";
71
+ file: "file";
72
+ }>;
73
+ url: z.ZodString;
74
+ title: z.ZodOptional<z.ZodString>;
75
+ alt: z.ZodOptional<z.ZodString>;
76
+ thumbnailUrl: z.ZodOptional<z.ZodString>;
77
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
78
+ }, z.core.$strip>>;
79
+ state: z.ZodOptional<z.ZodEnum<{
80
+ open: "open";
81
+ submitted: "submitted";
82
+ cancelled: "cancelled";
83
+ error: "error";
84
+ }>>;
85
+ display: z.ZodOptional<z.ZodEnum<{
86
+ expanded: "expanded";
87
+ collapsed: "collapsed";
88
+ }>>;
89
+ groupId: z.ZodOptional<z.ZodString>;
90
+ size: z.ZodOptional<z.ZodEnum<{
91
+ small: "small";
92
+ medium: "medium";
93
+ large: "large";
94
+ full: "full";
95
+ }>>;
96
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
97
+ }, z.core.$strip>, z.ZodObject<{
98
+ kind: z.ZodLiteral<"form">;
99
+ fields: z.ZodArray<z.ZodObject<{
100
+ id: z.ZodString;
101
+ label: z.ZodString;
102
+ type: z.ZodEnum<{
103
+ number: "number";
104
+ boolean: "boolean";
105
+ password: "password";
106
+ textarea: "textarea";
107
+ text: "text";
108
+ select: "select";
109
+ multiselect: "multiselect";
110
+ date: "date";
111
+ }>;
112
+ description: z.ZodOptional<z.ZodString>;
113
+ placeholder: z.ZodOptional<z.ZodString>;
114
+ required: z.ZodOptional<z.ZodBoolean>;
115
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
116
+ label: z.ZodString;
117
+ value: z.ZodString;
118
+ }, z.core.$strip>>>;
119
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
120
+ }, z.core.$strip>>;
121
+ submitLabel: z.ZodOptional<z.ZodString>;
122
+ widgetId: z.ZodOptional<z.ZodString>;
123
+ title: z.ZodOptional<z.ZodString>;
124
+ description: z.ZodOptional<z.ZodString>;
125
+ media: z.ZodOptional<z.ZodObject<{
126
+ type: z.ZodEnum<{
127
+ image: "image";
128
+ video: "video";
129
+ audio: "audio";
130
+ file: "file";
131
+ }>;
132
+ url: z.ZodString;
133
+ title: z.ZodOptional<z.ZodString>;
134
+ alt: z.ZodOptional<z.ZodString>;
135
+ thumbnailUrl: z.ZodOptional<z.ZodString>;
136
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
137
+ }, z.core.$strip>>;
138
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
139
+ id: z.ZodString;
140
+ label: z.ZodString;
141
+ value: z.ZodOptional<z.ZodUnknown>;
142
+ variant: z.ZodOptional<z.ZodEnum<{
143
+ primary: "primary";
144
+ secondary: "secondary";
145
+ danger: "danger";
146
+ }>>;
147
+ disabled: z.ZodOptional<z.ZodBoolean>;
148
+ }, z.core.$strip>>>;
149
+ state: z.ZodOptional<z.ZodEnum<{
150
+ open: "open";
151
+ submitted: "submitted";
152
+ cancelled: "cancelled";
153
+ error: "error";
154
+ }>>;
155
+ display: z.ZodOptional<z.ZodEnum<{
156
+ expanded: "expanded";
157
+ collapsed: "collapsed";
158
+ }>>;
159
+ groupId: z.ZodOptional<z.ZodString>;
160
+ size: z.ZodOptional<z.ZodEnum<{
161
+ small: "small";
162
+ medium: "medium";
163
+ large: "large";
164
+ full: "full";
165
+ }>>;
166
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
167
+ }, z.core.$strip>, z.ZodObject<{
168
+ kind: z.ZodLiteral<"list">;
169
+ items: z.ZodArray<z.ZodObject<{
170
+ id: z.ZodString;
171
+ label: z.ZodString;
172
+ description: z.ZodOptional<z.ZodString>;
173
+ image: z.ZodOptional<z.ZodString>;
174
+ badge: z.ZodOptional<z.ZodString>;
175
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
176
+ id: z.ZodString;
177
+ label: z.ZodString;
178
+ value: z.ZodOptional<z.ZodUnknown>;
179
+ variant: z.ZodOptional<z.ZodEnum<{
180
+ primary: "primary";
181
+ secondary: "secondary";
182
+ danger: "danger";
183
+ }>>;
184
+ disabled: z.ZodOptional<z.ZodBoolean>;
185
+ }, z.core.$strip>>>;
186
+ status: z.ZodOptional<z.ZodString>;
187
+ statusVariant: z.ZodOptional<z.ZodEnum<{
188
+ success: "success";
189
+ danger: "danger";
190
+ default: "default";
191
+ warning: "warning";
192
+ info: "info";
193
+ }>>;
194
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
195
+ }, z.core.$strip>>;
196
+ layout: z.ZodOptional<z.ZodEnum<{
197
+ default: "default";
198
+ checklist: "checklist";
199
+ }>>;
200
+ widgetId: z.ZodOptional<z.ZodString>;
201
+ title: z.ZodOptional<z.ZodString>;
202
+ description: z.ZodOptional<z.ZodString>;
203
+ media: z.ZodOptional<z.ZodObject<{
204
+ type: z.ZodEnum<{
205
+ image: "image";
206
+ video: "video";
207
+ audio: "audio";
208
+ file: "file";
209
+ }>;
210
+ url: z.ZodString;
211
+ title: z.ZodOptional<z.ZodString>;
212
+ alt: z.ZodOptional<z.ZodString>;
213
+ thumbnailUrl: z.ZodOptional<z.ZodString>;
214
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
215
+ }, z.core.$strip>>;
216
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
217
+ id: z.ZodString;
218
+ label: z.ZodString;
219
+ value: z.ZodOptional<z.ZodUnknown>;
220
+ variant: z.ZodOptional<z.ZodEnum<{
221
+ primary: "primary";
222
+ secondary: "secondary";
223
+ danger: "danger";
224
+ }>>;
225
+ disabled: z.ZodOptional<z.ZodBoolean>;
226
+ }, z.core.$strip>>>;
227
+ state: z.ZodOptional<z.ZodEnum<{
228
+ open: "open";
229
+ submitted: "submitted";
230
+ cancelled: "cancelled";
231
+ error: "error";
232
+ }>>;
233
+ display: z.ZodOptional<z.ZodEnum<{
234
+ expanded: "expanded";
235
+ collapsed: "collapsed";
236
+ }>>;
237
+ groupId: z.ZodOptional<z.ZodString>;
238
+ size: z.ZodOptional<z.ZodEnum<{
239
+ small: "small";
240
+ medium: "medium";
241
+ large: "large";
242
+ full: "full";
243
+ }>>;
244
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
245
+ }, z.core.$strip>, z.ZodObject<{
246
+ kind: z.ZodLiteral<"media">;
247
+ items: z.ZodArray<z.ZodObject<{
248
+ type: z.ZodEnum<{
249
+ image: "image";
250
+ video: "video";
251
+ audio: "audio";
252
+ file: "file";
253
+ }>;
254
+ url: z.ZodString;
255
+ title: z.ZodOptional<z.ZodString>;
256
+ alt: z.ZodOptional<z.ZodString>;
257
+ thumbnailUrl: z.ZodOptional<z.ZodString>;
258
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
259
+ }, z.core.$strip>>;
260
+ layout: z.ZodOptional<z.ZodEnum<{
261
+ single: "single";
262
+ grid: "grid";
263
+ carousel: "carousel";
264
+ }>>;
265
+ widgetId: z.ZodOptional<z.ZodString>;
266
+ title: z.ZodOptional<z.ZodString>;
267
+ description: z.ZodOptional<z.ZodString>;
268
+ media: z.ZodOptional<z.ZodObject<{
269
+ type: z.ZodEnum<{
270
+ image: "image";
271
+ video: "video";
272
+ audio: "audio";
273
+ file: "file";
274
+ }>;
275
+ url: z.ZodString;
276
+ title: z.ZodOptional<z.ZodString>;
277
+ alt: z.ZodOptional<z.ZodString>;
278
+ thumbnailUrl: z.ZodOptional<z.ZodString>;
279
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
280
+ }, z.core.$strip>>;
281
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
282
+ id: z.ZodString;
283
+ label: z.ZodString;
284
+ value: z.ZodOptional<z.ZodUnknown>;
285
+ variant: z.ZodOptional<z.ZodEnum<{
286
+ primary: "primary";
287
+ secondary: "secondary";
288
+ danger: "danger";
289
+ }>>;
290
+ disabled: z.ZodOptional<z.ZodBoolean>;
291
+ }, z.core.$strip>>>;
292
+ state: z.ZodOptional<z.ZodEnum<{
293
+ open: "open";
294
+ submitted: "submitted";
295
+ cancelled: "cancelled";
296
+ error: "error";
297
+ }>>;
298
+ display: z.ZodOptional<z.ZodEnum<{
299
+ expanded: "expanded";
300
+ collapsed: "collapsed";
301
+ }>>;
302
+ groupId: z.ZodOptional<z.ZodString>;
303
+ size: z.ZodOptional<z.ZodEnum<{
304
+ small: "small";
305
+ medium: "medium";
306
+ large: "large";
307
+ full: "full";
308
+ }>>;
309
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
310
+ }, z.core.$strip>, z.ZodObject<{
311
+ kind: z.ZodLiteral<"diff">;
312
+ files: z.ZodArray<z.ZodObject<{
313
+ path: z.ZodString;
314
+ oldPath: z.ZodOptional<z.ZodString>;
315
+ status: z.ZodEnum<{
316
+ added: "added";
317
+ deleted: "deleted";
318
+ modified: "modified";
319
+ renamed: "renamed";
320
+ }>;
321
+ language: z.ZodOptional<z.ZodString>;
322
+ additions: z.ZodOptional<z.ZodNumber>;
323
+ deletions: z.ZodOptional<z.ZodNumber>;
324
+ patch: z.ZodOptional<z.ZodString>;
325
+ before: z.ZodOptional<z.ZodString>;
326
+ after: z.ZodOptional<z.ZodString>;
327
+ truncated: z.ZodOptional<z.ZodBoolean>;
328
+ }, z.core.$strip>>;
329
+ layout: z.ZodOptional<z.ZodEnum<{
330
+ unified: "unified";
331
+ split: "split";
332
+ }>>;
333
+ widgetId: z.ZodOptional<z.ZodString>;
334
+ title: z.ZodOptional<z.ZodString>;
335
+ description: z.ZodOptional<z.ZodString>;
336
+ media: z.ZodOptional<z.ZodObject<{
337
+ type: z.ZodEnum<{
338
+ image: "image";
339
+ video: "video";
340
+ audio: "audio";
341
+ file: "file";
342
+ }>;
343
+ url: z.ZodString;
344
+ title: z.ZodOptional<z.ZodString>;
345
+ alt: z.ZodOptional<z.ZodString>;
346
+ thumbnailUrl: z.ZodOptional<z.ZodString>;
347
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
348
+ }, z.core.$strip>>;
349
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
350
+ id: z.ZodString;
351
+ label: z.ZodString;
352
+ value: z.ZodOptional<z.ZodUnknown>;
353
+ variant: z.ZodOptional<z.ZodEnum<{
354
+ primary: "primary";
355
+ secondary: "secondary";
356
+ danger: "danger";
357
+ }>>;
358
+ disabled: z.ZodOptional<z.ZodBoolean>;
359
+ }, z.core.$strip>>>;
360
+ state: z.ZodOptional<z.ZodEnum<{
361
+ open: "open";
362
+ submitted: "submitted";
363
+ cancelled: "cancelled";
364
+ error: "error";
365
+ }>>;
366
+ display: z.ZodOptional<z.ZodEnum<{
367
+ expanded: "expanded";
368
+ collapsed: "collapsed";
369
+ }>>;
370
+ groupId: z.ZodOptional<z.ZodString>;
371
+ size: z.ZodOptional<z.ZodEnum<{
372
+ small: "small";
373
+ medium: "medium";
374
+ large: "large";
375
+ full: "full";
376
+ }>>;
377
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
378
+ }, z.core.$strip>, z.ZodObject<{
379
+ kind: z.ZodLiteral<"table">;
380
+ columns: z.ZodArray<z.ZodObject<{
381
+ id: z.ZodString;
382
+ label: z.ZodString;
383
+ align: z.ZodOptional<z.ZodEnum<{
384
+ left: "left";
385
+ right: "right";
386
+ center: "center";
387
+ }>>;
388
+ }, z.core.$strip>>;
389
+ rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
390
+ widgetId: z.ZodOptional<z.ZodString>;
391
+ title: z.ZodOptional<z.ZodString>;
392
+ description: z.ZodOptional<z.ZodString>;
393
+ media: z.ZodOptional<z.ZodObject<{
394
+ type: z.ZodEnum<{
395
+ image: "image";
396
+ video: "video";
397
+ audio: "audio";
398
+ file: "file";
399
+ }>;
400
+ url: z.ZodString;
401
+ title: z.ZodOptional<z.ZodString>;
402
+ alt: z.ZodOptional<z.ZodString>;
403
+ thumbnailUrl: z.ZodOptional<z.ZodString>;
404
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
405
+ }, z.core.$strip>>;
406
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
407
+ id: z.ZodString;
408
+ label: z.ZodString;
409
+ value: z.ZodOptional<z.ZodUnknown>;
410
+ variant: z.ZodOptional<z.ZodEnum<{
411
+ primary: "primary";
412
+ secondary: "secondary";
413
+ danger: "danger";
414
+ }>>;
415
+ disabled: z.ZodOptional<z.ZodBoolean>;
416
+ }, z.core.$strip>>>;
417
+ state: z.ZodOptional<z.ZodEnum<{
418
+ open: "open";
419
+ submitted: "submitted";
420
+ cancelled: "cancelled";
421
+ error: "error";
422
+ }>>;
423
+ display: z.ZodOptional<z.ZodEnum<{
424
+ expanded: "expanded";
425
+ collapsed: "collapsed";
426
+ }>>;
427
+ groupId: z.ZodOptional<z.ZodString>;
428
+ size: z.ZodOptional<z.ZodEnum<{
429
+ small: "small";
430
+ medium: "medium";
431
+ large: "large";
432
+ full: "full";
433
+ }>>;
434
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
435
+ }, z.core.$strip>], "kind">;
436
+ /** One-line reason a widget payload does not match the schema, or null when it does. */
437
+ export declare function uiWidgetIssue(widget: unknown): string | null;
438
+ //# sourceMappingURL=ui-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-schema.d.ts","sourceRoot":"","sources":["../src/ui-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmDxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAkEzB,CAAC;AAEH,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM5D"}
@@ -0,0 +1,115 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Runtime shape of `RenderUIWidgetData` (`ui.ts`). Keep the two in step: the
4
+ * runtime checks every `client:ui:widget` against this before it is stored.
5
+ * Objects are non-strict so producers may carry extra keys.
6
+ */
7
+ const action = z.object({
8
+ id: z.string().min(1),
9
+ label: z.string(),
10
+ value: z.unknown().optional(),
11
+ variant: z.enum(['primary', 'secondary', 'danger']).optional(),
12
+ disabled: z.boolean().optional(),
13
+ });
14
+ const field = z.object({
15
+ id: z.string().min(1),
16
+ label: z.string(),
17
+ type: z.enum(['text', 'textarea', 'number', 'boolean', 'select', 'multiselect', 'date', 'password']),
18
+ description: z.string().optional(),
19
+ placeholder: z.string().optional(),
20
+ required: z.boolean().optional(),
21
+ options: z.array(z.object({ label: z.string(), value: z.string() })).optional(),
22
+ defaultValue: z.unknown().optional(),
23
+ });
24
+ const mediaItem = z.object({
25
+ type: z.enum(['image', 'video', 'audio', 'file']),
26
+ url: z.string(),
27
+ title: z.string().optional(),
28
+ alt: z.string().optional(),
29
+ thumbnailUrl: z.string().optional(),
30
+ metadata: z.record(z.string(), z.unknown()).optional(),
31
+ });
32
+ const base = {
33
+ widgetId: z.string().optional(),
34
+ title: z.string().optional(),
35
+ description: z.string().optional(),
36
+ media: mediaItem.optional(),
37
+ actions: z.array(action).optional(),
38
+ state: z.enum(['open', 'submitted', 'cancelled', 'error']).optional(),
39
+ display: z.enum(['expanded', 'collapsed']).optional(),
40
+ groupId: z.string().optional(),
41
+ size: z.enum(['small', 'medium', 'large', 'full']).optional(),
42
+ metadata: z.record(z.string(), z.unknown()).optional(),
43
+ };
44
+ const statusVariant = z.enum(['default', 'success', 'warning', 'danger', 'info']);
45
+ export const uiWidgetSchema = z.discriminatedUnion('kind', [
46
+ z.object({ ...base, kind: z.literal('message'), body: z.string().optional() }),
47
+ z.object({ ...base, kind: z.literal('choice'), actions: z.array(action).min(1) }),
48
+ z.object({
49
+ ...base,
50
+ kind: z.literal('form'),
51
+ fields: z.array(field),
52
+ submitLabel: z.string().optional(),
53
+ }),
54
+ z.object({
55
+ ...base,
56
+ kind: z.literal('list'),
57
+ items: z.array(z.object({
58
+ id: z.string(),
59
+ label: z.string(),
60
+ description: z.string().optional(),
61
+ image: z.string().optional(),
62
+ badge: z.string().optional(),
63
+ actions: z.array(action).optional(),
64
+ status: z.string().optional(),
65
+ statusVariant: statusVariant.optional(),
66
+ metadata: z.record(z.string(), z.unknown()).optional(),
67
+ })),
68
+ layout: z.enum(['default', 'checklist']).optional(),
69
+ }),
70
+ z.object({
71
+ ...base,
72
+ kind: z.literal('media'),
73
+ items: z.array(mediaItem),
74
+ layout: z.enum(['single', 'grid', 'carousel']).optional(),
75
+ }),
76
+ z.object({
77
+ ...base,
78
+ kind: z.literal('diff'),
79
+ files: z.array(z.object({
80
+ path: z.string(),
81
+ oldPath: z.string().optional(),
82
+ status: z.enum(['added', 'deleted', 'modified', 'renamed']),
83
+ language: z.string().optional(),
84
+ additions: z.number().optional(),
85
+ deletions: z.number().optional(),
86
+ patch: z.string().optional(),
87
+ before: z.string().optional(),
88
+ after: z.string().optional(),
89
+ truncated: z.boolean().optional(),
90
+ })),
91
+ layout: z.enum(['unified', 'split']).optional(),
92
+ }),
93
+ z.object({
94
+ ...base,
95
+ kind: z.literal('table'),
96
+ columns: z
97
+ .array(z.object({
98
+ id: z.string().min(1),
99
+ label: z.string(),
100
+ align: z.enum(['left', 'right', 'center']).optional(),
101
+ }))
102
+ .min(1),
103
+ rows: z.array(z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()]))),
104
+ }),
105
+ ]);
106
+ /** One-line reason a widget payload does not match the schema, or null when it does. */
107
+ export function uiWidgetIssue(widget) {
108
+ const result = uiWidgetSchema.safeParse(widget);
109
+ if (result.success)
110
+ return null;
111
+ const issue = result.error.issues[0];
112
+ const path = issue?.path.length ? issue.path.join('.') : 'widget';
113
+ return `${path}: ${issue?.message ?? 'invalid widget'}`;
114
+ }
115
+ //# sourceMappingURL=ui-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-schema.js","sourceRoot":"","sources":["../src/ui-schema.ts"],"names":[],"mappings":"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"}
package/dist/ui.d.ts CHANGED
@@ -106,7 +106,19 @@ export type UIDiffWidget = UIWidgetBase & {
106
106
  files: UIDiffFile[];
107
107
  layout?: 'unified' | 'split';
108
108
  };
109
- export type UIWidgetSpec = UIMessageWidget | UIChoiceWidget | UIFormWidget | UIListWidget | UIMediaWidget | UIDiffWidget;
109
+ export type UITableColumn = {
110
+ id: string;
111
+ label: string;
112
+ align?: 'left' | 'right' | 'center';
113
+ };
114
+ export type UITableCell = string | number | boolean | null;
115
+ export type UITableWidget = UIWidgetBase & {
116
+ kind: 'table';
117
+ columns: UITableColumn[];
118
+ /** Each row maps column id → cell value. */
119
+ rows: Array<Record<string, UITableCell>>;
120
+ };
121
+ export type UIWidgetSpec = UIMessageWidget | UIChoiceWidget | UIFormWidget | UIListWidget | UIMediaWidget | UIDiffWidget | UITableWidget;
110
122
  export type RenderUIWidgetData = (Omit<UIMessageWidget, 'widgetId'> & {
111
123
  widgetId?: string;
112
124
  }) | (Omit<UIChoiceWidget, 'widgetId'> & {
@@ -119,5 +131,7 @@ export type RenderUIWidgetData = (Omit<UIMessageWidget, 'widgetId'> & {
119
131
  widgetId?: string;
120
132
  }) | (Omit<UIDiffWidget, 'widgetId'> & {
121
133
  widgetId?: string;
134
+ }) | (Omit<UITableWidget, 'widgetId'> & {
135
+ widgetId?: string;
122
136
  });
123
137
  //# sourceMappingURL=ui.d.ts.map
package/dist/ui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meetopenbot/plugin-sdk",
3
- "version": "2.1.0",
3
+ "version": "2.3.0",
4
4
  "description": "Types and helpers for building OpenBot plugins.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",