@zerobuild/mcp 2.6.1

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.
Files changed (50) hide show
  1. package/README.md +114 -0
  2. package/dist/client.d.ts +79 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +137 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/index.d.ts +3 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +171 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/prompts/index.d.ts +4 -0
  11. package/dist/prompts/index.d.ts.map +1 -0
  12. package/dist/prompts/index.js +164 -0
  13. package/dist/prompts/index.js.map +1 -0
  14. package/dist/resources/channels.d.ts +4 -0
  15. package/dist/resources/channels.d.ts.map +1 -0
  16. package/dist/resources/channels.js +58 -0
  17. package/dist/resources/channels.js.map +1 -0
  18. package/dist/resources/contacts.d.ts +4 -0
  19. package/dist/resources/contacts.d.ts.map +1 -0
  20. package/dist/resources/contacts.js +73 -0
  21. package/dist/resources/contacts.js.map +1 -0
  22. package/dist/resources/conversations.d.ts +4 -0
  23. package/dist/resources/conversations.d.ts.map +1 -0
  24. package/dist/resources/conversations.js +97 -0
  25. package/dist/resources/conversations.js.map +1 -0
  26. package/dist/resources/documents.d.ts +4 -0
  27. package/dist/resources/documents.d.ts.map +1 -0
  28. package/dist/resources/documents.js +63 -0
  29. package/dist/resources/documents.js.map +1 -0
  30. package/dist/resources/search.d.ts +4 -0
  31. package/dist/resources/search.d.ts.map +1 -0
  32. package/dist/resources/search.js +44 -0
  33. package/dist/resources/search.js.map +1 -0
  34. package/dist/tools/conversations.d.ts +4 -0
  35. package/dist/tools/conversations.d.ts.map +1 -0
  36. package/dist/tools/conversations.js +124 -0
  37. package/dist/tools/conversations.js.map +1 -0
  38. package/dist/tools/documents.d.ts +4 -0
  39. package/dist/tools/documents.d.ts.map +1 -0
  40. package/dist/tools/documents.js +75 -0
  41. package/dist/tools/documents.js.map +1 -0
  42. package/dist/tools/messages.d.ts +4 -0
  43. package/dist/tools/messages.d.ts.map +1 -0
  44. package/dist/tools/messages.js +31 -0
  45. package/dist/tools/messages.js.map +1 -0
  46. package/dist/tools/search.d.ts +4 -0
  47. package/dist/tools/search.d.ts.map +1 -0
  48. package/dist/tools/search.js +37 -0
  49. package/dist/tools/search.js.map +1 -0
  50. package/package.json +37 -0
package/README.md ADDED
@@ -0,0 +1,114 @@
1
+ # @zerobuild/mcp
2
+
3
+ MCP (Model Context Protocol) server for Zerobuild. Connect Claude, Cursor, Windsurf, or any MCP-compatible AI agent to your Zerobuild workspace.
4
+
5
+ ## Quick Start
6
+
7
+ ### 1. Create an API Key
8
+
9
+ In your Zerobuild workspace, go to **Settings > API Keys** and create a key with `read,write` scopes.
10
+
11
+ ### 2. Configure your MCP client
12
+
13
+ **Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
14
+
15
+ ```json
16
+ {
17
+ "mcpServers": {
18
+ "zerobuild": {
19
+ "command": "npx",
20
+ "args": ["-y", "@zerobuild/mcp"],
21
+ "env": {
22
+ "ZEROBUILD_API_KEY": "zb_live_...",
23
+ "ZEROBUILD_URL": "https://app.zerobuild.ai"
24
+ }
25
+ }
26
+ }
27
+ }
28
+ ```
29
+
30
+ **Claude Code:**
31
+
32
+ ```bash
33
+ claude mcp add zerobuild -- npx -y @zerobuild/mcp
34
+ # Then set env vars: ZEROBUILD_API_KEY, ZEROBUILD_URL
35
+ ```
36
+
37
+ **Cursor / Windsurf:** Same config format as Claude Desktop in their respective MCP settings.
38
+
39
+ ### 3. HTTP mode (self-hosted)
40
+
41
+ Run as a hosted HTTP endpoint instead of stdio:
42
+
43
+ ```bash
44
+ ZEROBUILD_API_KEY=zb_live_... \
45
+ ZEROBUILD_URL=https://app.zerobuild.ai \
46
+ npx -y @zerobuild/mcp --http
47
+ ```
48
+
49
+ Server starts at `http://localhost:3002/mcp` (configurable via `MCP_PORT`). Any MCP client that supports the Streamable HTTP transport can connect to this URL.
50
+
51
+ ## What's Available
52
+
53
+ ### Resources (read context)
54
+
55
+ | Resource | Description |
56
+ |---|---|
57
+ | `zerobuild://conversations` | Open live chat conversations |
58
+ | `zerobuild://conversations/{id}` | Conversation detail with messages |
59
+ | `zerobuild://contacts` | All contacts |
60
+ | `zerobuild://contacts/{id}` | Contact detail |
61
+ | `zerobuild://channels` | Team chat channels |
62
+ | `zerobuild://channels/{id}/messages` | Recent channel messages |
63
+ | `zerobuild://documents` | Document tree |
64
+ | `zerobuild://documents/{id}` | Document content |
65
+ | `zerobuild://search/{query}` | Unified search |
66
+
67
+ ### Tools (actions)
68
+
69
+ | Tool | Description |
70
+ |---|---|
71
+ | `list_channels` | List channels with IDs |
72
+ | `list_conversations` | List conversations with IDs |
73
+ | `send_message` | Send message to a channel |
74
+ | `reply_to_conversation` | Reply to a customer |
75
+ | `add_internal_note` | Add internal note (team only) |
76
+ | `close_conversation` | Close a conversation |
77
+ | `assign_conversation` | Assign to an agent |
78
+ | `transfer_conversation` | Transfer with handoff note |
79
+ | `tag_conversation` | Add/remove tags |
80
+ | `create_document` | Create doc or folder |
81
+ | `update_document` | Update doc content |
82
+ | `search` | Full-text search |
83
+
84
+ ### Prompts (workflows)
85
+
86
+ | Prompt | Description |
87
+ |---|---|
88
+ | `summarize-conversation` | Summarize with customer context |
89
+ | `draft-reply` | Draft reply using conversation history |
90
+ | `find-related` | Find related conversations/docs |
91
+ | `conversation-handoff` | Generate transfer summary |
92
+ | `daily-digest` | Daily conversation activity digest |
93
+
94
+ ## Environment Variables
95
+
96
+ | Variable | Required | Default | Description |
97
+ |---|---|---|---|
98
+ | `ZEROBUILD_API_KEY` | Yes | — | API key (`zb_live_*`) |
99
+ | `ZEROBUILD_URL` | No | `http://localhost:3001` | Zerobuild API base URL |
100
+ | `MCP_PORT` | No | `3002` | HTTP server port (--http mode only) |
101
+
102
+ ## Examples
103
+
104
+ **Ask Claude to summarize today's conversations:**
105
+ > "Summarize all open live chat conversations in my Zerobuild workspace"
106
+
107
+ **Create a doc from a conversation:**
108
+ > "Take the key points from conversation #42 and create a document called 'Meeting Follow-up'"
109
+
110
+ **Reply to a customer:**
111
+ > "Draft a reply to the latest message in conversation #15, suggesting they check our docs"
112
+
113
+ **Search across everything:**
114
+ > "Search my workspace for anything related to 'shipping delay'"
@@ -0,0 +1,79 @@
1
+ /**
2
+ * HTTP client for the Zerobuild REST API.
3
+ * Handles auth, envelope unwrapping, and pagination.
4
+ */
5
+ export declare class ZerobuildApiError extends Error {
6
+ status: number;
7
+ code: string;
8
+ constructor(status: number, code: string, message: string);
9
+ }
10
+ export declare class ZerobuildClient {
11
+ private apiKey;
12
+ readonly baseUrl: string;
13
+ constructor(baseUrl: string, apiKey: string);
14
+ private request;
15
+ private buildQuery;
16
+ listConversations(params?: {
17
+ status?: string;
18
+ view?: string;
19
+ tagId?: string;
20
+ cursor?: string;
21
+ limit?: number;
22
+ }): Promise<{
23
+ conversations: any[];
24
+ hasMore: boolean;
25
+ }>;
26
+ getConversation(id: string): Promise<any>;
27
+ getConversationMessages(id: string, params?: {
28
+ cursor?: string;
29
+ limit?: number;
30
+ }): Promise<any[]>;
31
+ replyToConversation(id: string, body: {
32
+ content: string;
33
+ isInternalNote?: boolean;
34
+ }): Promise<any>;
35
+ closeConversation(id: string): Promise<void>;
36
+ assignConversation(id: string, userId: string | null): Promise<void>;
37
+ transferConversation(id: string, body: {
38
+ targetUserId: string;
39
+ note?: string;
40
+ }): Promise<void>;
41
+ listContacts(params?: {
42
+ search?: string;
43
+ cursor?: string;
44
+ limit?: number;
45
+ }): Promise<any[]>;
46
+ getContact(id: string): Promise<any>;
47
+ listChannels(): Promise<any[]>;
48
+ getChannelMessages(channelId: string, params?: {
49
+ cursor?: string;
50
+ limit?: number;
51
+ }): Promise<any[]>;
52
+ sendChannelMessage(channelId: string, body: {
53
+ content: string;
54
+ }): Promise<any>;
55
+ listDocuments(params?: {
56
+ parentId?: string;
57
+ }): Promise<any[]>;
58
+ getDocument(id: string): Promise<any>;
59
+ createDocument(body: {
60
+ title: string;
61
+ content?: unknown;
62
+ parentId?: string | null;
63
+ isFolder?: boolean;
64
+ }): Promise<any>;
65
+ updateDocument(id: string, body: {
66
+ title?: string;
67
+ content?: unknown;
68
+ }): Promise<any>;
69
+ listTags(): Promise<any[]>;
70
+ addTagToConversation(conversationId: string, tagId: string): Promise<void>;
71
+ removeTagFromConversation(conversationId: string, tagId: string): Promise<void>;
72
+ listCannedResponses(): Promise<any[]>;
73
+ search(params: {
74
+ q: string;
75
+ type?: string;
76
+ limit?: number;
77
+ }): Promise<any>;
78
+ }
79
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,137 @@
1
+ /**
2
+ * HTTP client for the Zerobuild REST API.
3
+ * Handles auth, envelope unwrapping, and pagination.
4
+ */
5
+ export class ZerobuildApiError extends Error {
6
+ status;
7
+ code;
8
+ constructor(status, code, message) {
9
+ super(message);
10
+ this.status = status;
11
+ this.code = code;
12
+ this.name = "ZerobuildApiError";
13
+ }
14
+ }
15
+ export class ZerobuildClient {
16
+ apiKey;
17
+ baseUrl;
18
+ constructor(baseUrl, apiKey) {
19
+ this.apiKey = apiKey;
20
+ this.baseUrl = baseUrl;
21
+ }
22
+ async request(method, path, body) {
23
+ const url = `${this.baseUrl}/api${path}`;
24
+ const headers = {
25
+ Authorization: `Bearer ${this.apiKey}`,
26
+ "Content-Type": "application/json",
27
+ };
28
+ const res = await fetch(url, {
29
+ method,
30
+ headers,
31
+ body: body ? JSON.stringify(body) : undefined,
32
+ });
33
+ if (!res.ok) {
34
+ let code = "UNKNOWN";
35
+ let message = `API error: ${res.status} ${res.statusText}`;
36
+ try {
37
+ const err = (await res.json());
38
+ if (err.error) {
39
+ code = err.error.code;
40
+ message = err.error.message;
41
+ }
42
+ }
43
+ catch {
44
+ // use default message
45
+ }
46
+ throw new ZerobuildApiError(res.status, code, message);
47
+ }
48
+ const json = (await res.json());
49
+ if (json.error) {
50
+ throw new ZerobuildApiError(400, json.error.code, json.error.message);
51
+ }
52
+ return json.data;
53
+ }
54
+ buildQuery(params) {
55
+ const entries = Object.entries(params).filter(([, v]) => v !== undefined && v !== null);
56
+ if (entries.length === 0)
57
+ return "";
58
+ return "?" + entries.map(([k, v]) => `${k}=${encodeURIComponent(String(v))}`).join("&");
59
+ }
60
+ // --- Conversations ---
61
+ async listConversations(params) {
62
+ const query = this.buildQuery(params ?? {});
63
+ return this.request("GET", `/conversations${query}`);
64
+ }
65
+ async getConversation(id) {
66
+ return this.request("GET", `/conversations/${id}`);
67
+ }
68
+ async getConversationMessages(id, params) {
69
+ const query = this.buildQuery(params ?? {});
70
+ return this.request("GET", `/conversations/${id}/messages${query}`);
71
+ }
72
+ async replyToConversation(id, body) {
73
+ return this.request("POST", `/conversations/${id}/messages`, body);
74
+ }
75
+ async closeConversation(id) {
76
+ await this.request("PATCH", `/conversations/${id}/close`);
77
+ }
78
+ async assignConversation(id, userId) {
79
+ await this.request("PATCH", `/conversations/${id}/assign`, { userId });
80
+ }
81
+ async transferConversation(id, body) {
82
+ await this.request("POST", `/conversations/${id}/transfer`, body);
83
+ }
84
+ // --- Contacts ---
85
+ async listContacts(params) {
86
+ const query = this.buildQuery(params ?? {});
87
+ return this.request("GET", `/contacts${query}`);
88
+ }
89
+ async getContact(id) {
90
+ return this.request("GET", `/contacts/${id}`);
91
+ }
92
+ // --- Channels ---
93
+ async listChannels() {
94
+ return this.request("GET", "/channels");
95
+ }
96
+ async getChannelMessages(channelId, params) {
97
+ const query = this.buildQuery(params ?? {});
98
+ return this.request("GET", `/channels/${channelId}/messages${query}`);
99
+ }
100
+ async sendChannelMessage(channelId, body) {
101
+ return this.request("POST", `/channels/${channelId}/messages`, body);
102
+ }
103
+ // --- Documents ---
104
+ async listDocuments(params) {
105
+ const query = this.buildQuery(params ?? {});
106
+ return this.request("GET", `/documents${query}`);
107
+ }
108
+ async getDocument(id) {
109
+ return this.request("GET", `/documents/${id}`);
110
+ }
111
+ async createDocument(body) {
112
+ return this.request("POST", "/documents", body);
113
+ }
114
+ async updateDocument(id, body) {
115
+ return this.request("PATCH", `/documents/${id}`, body);
116
+ }
117
+ // --- Tags ---
118
+ async listTags() {
119
+ return this.request("GET", "/conversation-tags");
120
+ }
121
+ async addTagToConversation(conversationId, tagId) {
122
+ await this.request("POST", `/conversations/${conversationId}/tags/${tagId}`);
123
+ }
124
+ async removeTagFromConversation(conversationId, tagId) {
125
+ await this.request("DELETE", `/conversations/${conversationId}/tags/${tagId}`);
126
+ }
127
+ // --- Canned Responses ---
128
+ async listCannedResponses() {
129
+ return this.request("GET", "/canned");
130
+ }
131
+ // --- Search ---
132
+ async search(params) {
133
+ const query = this.buildQuery(params);
134
+ return this.request("GET", `/search${query}`);
135
+ }
136
+ }
137
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,171 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
5
+ import { createServer } from "node:http";
6
+ import { randomUUID } from "node:crypto";
7
+ import { ZerobuildClient } from "./client.js";
8
+ import { registerConversationResources } from "./resources/conversations.js";
9
+ import { registerContactResources } from "./resources/contacts.js";
10
+ import { registerChannelResources } from "./resources/channels.js";
11
+ import { registerDocumentResources } from "./resources/documents.js";
12
+ import { registerSearchResource } from "./resources/search.js";
13
+ import { registerConversationTools } from "./tools/conversations.js";
14
+ import { registerMessageTools } from "./tools/messages.js";
15
+ import { registerDocumentTools } from "./tools/documents.js";
16
+ import { registerSearchTool } from "./tools/search.js";
17
+ import { registerPrompts } from "./prompts/index.js";
18
+ const HELP = `
19
+ Zerobuild MCP Server
20
+
21
+ Exposes your Zerobuild workspace to AI agents via the Model Context Protocol.
22
+
23
+ Modes:
24
+ stdio (default) — for Claude Desktop, Cursor, etc.
25
+ --http — hosted HTTP endpoint for remote clients
26
+
27
+ Environment variables:
28
+ ZEROBUILD_API_KEY (required) API key for authentication (zb_live_*)
29
+ ZEROBUILD_URL (optional) API base URL (default: http://localhost:3001)
30
+ MCP_PORT (optional) HTTP server port when using --http (default: 3002)
31
+
32
+ Usage with Claude Desktop (stdio):
33
+ {
34
+ "mcpServers": {
35
+ "zerobuild": {
36
+ "command": "npx",
37
+ "args": ["@zerobuild/mcp"],
38
+ "env": {
39
+ "ZEROBUILD_API_KEY": "zb_live_...",
40
+ "ZEROBUILD_URL": "https://your-instance.zerobuild.ai"
41
+ }
42
+ }
43
+ }
44
+ }
45
+
46
+ Usage as hosted endpoint (HTTP):
47
+ ZEROBUILD_API_KEY=zb_live_... zerobuild-mcp --http
48
+
49
+ Then configure clients to connect to: http://localhost:3002/mcp
50
+ `.trim();
51
+ function createMcpServer(client) {
52
+ const server = new McpServer({
53
+ name: "zerobuild",
54
+ version: "2.6.1",
55
+ });
56
+ // Register resources
57
+ registerConversationResources(server, client);
58
+ registerContactResources(server, client);
59
+ registerChannelResources(server, client);
60
+ registerDocumentResources(server, client);
61
+ registerSearchResource(server, client);
62
+ // Register tools
63
+ registerConversationTools(server, client);
64
+ registerMessageTools(server, client);
65
+ registerDocumentTools(server, client);
66
+ registerSearchTool(server, client);
67
+ // Register prompts
68
+ registerPrompts(server, client);
69
+ return server;
70
+ }
71
+ async function startStdio(client) {
72
+ const server = createMcpServer(client);
73
+ const transport = new StdioServerTransport();
74
+ await server.connect(transport);
75
+ console.error(`Zerobuild MCP server running via stdio (API: ${client.baseUrl})`);
76
+ }
77
+ async function startHttp(client) {
78
+ const port = parseInt(process.env.MCP_PORT || "3002", 10);
79
+ // Map of session ID -> transport for stateful sessions
80
+ const sessions = new Map();
81
+ const httpServer = createServer(async (req, res) => {
82
+ const url = new URL(req.url || "/", `http://localhost:${port}`);
83
+ // CORS headers
84
+ res.setHeader("Access-Control-Allow-Origin", "*");
85
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
86
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, mcp-session-id");
87
+ res.setHeader("Access-Control-Expose-Headers", "mcp-session-id");
88
+ if (req.method === "OPTIONS") {
89
+ res.writeHead(204);
90
+ res.end();
91
+ return;
92
+ }
93
+ if (url.pathname !== "/mcp") {
94
+ res.writeHead(404, { "Content-Type": "application/json" });
95
+ res.end(JSON.stringify({ error: "Not found. MCP endpoint is at /mcp" }));
96
+ return;
97
+ }
98
+ // Get or create session
99
+ const sessionId = req.headers["mcp-session-id"];
100
+ if (req.method === "POST" && !sessionId) {
101
+ // New session — initialize
102
+ const transport = new StreamableHTTPServerTransport({
103
+ sessionIdGenerator: () => randomUUID(),
104
+ });
105
+ const server = createMcpServer(client);
106
+ await server.connect(transport);
107
+ // Store session after initialization sets the ID
108
+ transport.onclose = () => {
109
+ if (transport.sessionId) {
110
+ sessions.delete(transport.sessionId);
111
+ }
112
+ };
113
+ await transport.handleRequest(req, res);
114
+ // Session ID is set after handling the initialize request
115
+ if (transport.sessionId) {
116
+ sessions.set(transport.sessionId, transport);
117
+ }
118
+ return;
119
+ }
120
+ if (sessionId) {
121
+ const transport = sessions.get(sessionId);
122
+ if (!transport) {
123
+ res.writeHead(404, { "Content-Type": "application/json" });
124
+ res.end(JSON.stringify({ error: "Session not found" }));
125
+ return;
126
+ }
127
+ await transport.handleRequest(req, res);
128
+ return;
129
+ }
130
+ // GET without session (for SSE stream) or other methods
131
+ if (req.method === "GET") {
132
+ res.writeHead(400, { "Content-Type": "application/json" });
133
+ res.end(JSON.stringify({ error: "Missing mcp-session-id header" }));
134
+ return;
135
+ }
136
+ res.writeHead(400, { "Content-Type": "application/json" });
137
+ res.end(JSON.stringify({ error: "Missing mcp-session-id header for existing session" }));
138
+ });
139
+ httpServer.listen(port, () => {
140
+ console.log(`Zerobuild MCP server running at http://localhost:${port}/mcp`);
141
+ console.log(`API: ${client.baseUrl}`);
142
+ });
143
+ }
144
+ async function main() {
145
+ // Handle --help
146
+ if (process.argv.includes("--help") || process.argv.includes("-h")) {
147
+ console.log(HELP);
148
+ process.exit(0);
149
+ }
150
+ // Read config from env
151
+ const apiKey = process.env.ZEROBUILD_API_KEY;
152
+ const baseUrl = process.env.ZEROBUILD_URL || "http://localhost:3001";
153
+ if (!apiKey) {
154
+ console.error("Error: ZEROBUILD_API_KEY environment variable is required.\n");
155
+ console.error(HELP);
156
+ process.exit(1);
157
+ }
158
+ const client = new ZerobuildClient(baseUrl, apiKey);
159
+ const httpMode = process.argv.includes("--http");
160
+ if (httpMode) {
161
+ await startHttp(client);
162
+ }
163
+ else {
164
+ await startStdio(client);
165
+ }
166
+ }
167
+ main().catch((err) => {
168
+ console.error("Fatal error:", err);
169
+ process.exit(1);
170
+ });
171
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { ZerobuildClient } from "../client.js";
3
+ export declare function registerPrompts(server: McpServer, client: ZerobuildClient): void;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,eAAe,QA8MxB"}