@aigentyc/mcp 0.1.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.
Files changed (107) hide show
  1. package/AGENTS.md +197 -0
  2. package/LICENSE +21 -0
  3. package/README.md +112 -0
  4. package/context7.json +3 -0
  5. package/dist/cli.d.ts +3 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +289 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/client.d.ts +10 -0
  10. package/dist/client.d.ts.map +1 -0
  11. package/dist/client.js +70 -0
  12. package/dist/client.js.map +1 -0
  13. package/dist/config.d.ts +31 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +79 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/errors.d.ts +10 -0
  18. package/dist/errors.d.ts.map +1 -0
  19. package/dist/errors.js +28 -0
  20. package/dist/errors.js.map +1 -0
  21. package/dist/fs-safety.d.ts +29 -0
  22. package/dist/fs-safety.d.ts.map +1 -0
  23. package/dist/fs-safety.js +107 -0
  24. package/dist/fs-safety.js.map +1 -0
  25. package/dist/index.d.ts +5 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +4 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/llms-full.txt +659 -0
  30. package/dist/server.d.ts +2 -0
  31. package/dist/server.d.ts.map +1 -0
  32. package/dist/server.js +57 -0
  33. package/dist/server.js.map +1 -0
  34. package/dist/tools/analytics.d.ts +4 -0
  35. package/dist/tools/analytics.d.ts.map +1 -0
  36. package/dist/tools/analytics.js +82 -0
  37. package/dist/tools/analytics.js.map +1 -0
  38. package/dist/tools/backups.d.ts +4 -0
  39. package/dist/tools/backups.d.ts.map +1 -0
  40. package/dist/tools/backups.js +99 -0
  41. package/dist/tools/backups.js.map +1 -0
  42. package/dist/tools/config.d.ts +4 -0
  43. package/dist/tools/config.d.ts.map +1 -0
  44. package/dist/tools/config.js +84 -0
  45. package/dist/tools/config.js.map +1 -0
  46. package/dist/tools/corrections.d.ts +4 -0
  47. package/dist/tools/corrections.d.ts.map +1 -0
  48. package/dist/tools/corrections.js +69 -0
  49. package/dist/tools/corrections.js.map +1 -0
  50. package/dist/tools/data_stores.d.ts +4 -0
  51. package/dist/tools/data_stores.d.ts.map +1 -0
  52. package/dist/tools/data_stores.js +244 -0
  53. package/dist/tools/data_stores.js.map +1 -0
  54. package/dist/tools/documents.d.ts +4 -0
  55. package/dist/tools/documents.d.ts.map +1 -0
  56. package/dist/tools/documents.js +162 -0
  57. package/dist/tools/documents.js.map +1 -0
  58. package/dist/tools/extract.d.ts +4 -0
  59. package/dist/tools/extract.d.ts.map +1 -0
  60. package/dist/tools/extract.js +61 -0
  61. package/dist/tools/extract.js.map +1 -0
  62. package/dist/tools/files.d.ts +4 -0
  63. package/dist/tools/files.d.ts.map +1 -0
  64. package/dist/tools/files.js +198 -0
  65. package/dist/tools/files.js.map +1 -0
  66. package/dist/tools/golden_answers.d.ts +4 -0
  67. package/dist/tools/golden_answers.d.ts.map +1 -0
  68. package/dist/tools/golden_answers.js +117 -0
  69. package/dist/tools/golden_answers.js.map +1 -0
  70. package/dist/tools/helpers.d.ts +5 -0
  71. package/dist/tools/helpers.d.ts.map +1 -0
  72. package/dist/tools/helpers.js +10 -0
  73. package/dist/tools/helpers.js.map +1 -0
  74. package/dist/tools/index.d.ts +4 -0
  75. package/dist/tools/index.d.ts.map +1 -0
  76. package/dist/tools/index.js +35 -0
  77. package/dist/tools/index.js.map +1 -0
  78. package/dist/tools/jobs.d.ts +4 -0
  79. package/dist/tools/jobs.d.ts.map +1 -0
  80. package/dist/tools/jobs.js +78 -0
  81. package/dist/tools/jobs.js.map +1 -0
  82. package/dist/tools/link_sources.d.ts +4 -0
  83. package/dist/tools/link_sources.d.ts.map +1 -0
  84. package/dist/tools/link_sources.js +155 -0
  85. package/dist/tools/link_sources.js.map +1 -0
  86. package/dist/tools/misc.d.ts +8 -0
  87. package/dist/tools/misc.d.ts.map +1 -0
  88. package/dist/tools/misc.js +73 -0
  89. package/dist/tools/misc.js.map +1 -0
  90. package/dist/tools/page_questions.d.ts +4 -0
  91. package/dist/tools/page_questions.d.ts.map +1 -0
  92. package/dist/tools/page_questions.js +77 -0
  93. package/dist/tools/page_questions.js.map +1 -0
  94. package/dist/tools/personas.d.ts +4 -0
  95. package/dist/tools/personas.d.ts.map +1 -0
  96. package/dist/tools/personas.js +78 -0
  97. package/dist/tools/personas.js.map +1 -0
  98. package/dist/tools/tools_crud.d.ts +4 -0
  99. package/dist/tools/tools_crud.d.ts.map +1 -0
  100. package/dist/tools/tools_crud.js +207 -0
  101. package/dist/tools/tools_crud.js.map +1 -0
  102. package/dist/tools/types.d.ts +25 -0
  103. package/dist/tools/types.d.ts.map +1 -0
  104. package/dist/tools/types.js +15 -0
  105. package/dist/tools/types.js.map +1 -0
  106. package/llms.txt +150 -0
  107. package/package.json +53 -0
@@ -0,0 +1,244 @@
1
+ import { z } from "zod";
2
+ import { pid, projectIdArg } from "./helpers.js";
3
+ import { defineTool } from "./types.js";
4
+ const columnType = z.enum([
5
+ "text",
6
+ "longtext",
7
+ "number",
8
+ "boolean",
9
+ "url",
10
+ "image",
11
+ "date",
12
+ "json",
13
+ ]);
14
+ const columnSpec = z.object({
15
+ key: z.string().min(1),
16
+ label: z.string().optional(),
17
+ type: columnType.default("text"),
18
+ });
19
+ export function dataStoresTools(client) {
20
+ return [
21
+ defineTool({
22
+ name: "data_stores_list",
23
+ title: "List data stores",
24
+ description: "List structured data tables (data stores) in the project.",
25
+ inputSchema: z.object({ projectId: projectIdArg }),
26
+ handler: async (args) => {
27
+ const projectId = pid(client, args.projectId);
28
+ return client.get(`/api/dashboard/${projectId}/data-stores`);
29
+ },
30
+ }),
31
+ defineTool({
32
+ name: "data_stores_create",
33
+ title: "Create data store",
34
+ description: "Create a new data store (structured table) with a schema.",
35
+ inputSchema: z.object({
36
+ projectId: projectIdArg,
37
+ name: z.string().min(1).max(255),
38
+ description: z.string().optional(),
39
+ columns: z.array(columnSpec).min(1).max(50),
40
+ settings: z.record(z.unknown()).optional(),
41
+ }),
42
+ handler: async (args) => {
43
+ const { projectId: rawPid, ...body } = args;
44
+ const projectId = pid(client, rawPid);
45
+ return client.post(`/api/dashboard/${projectId}/data-stores`, body);
46
+ },
47
+ }),
48
+ defineTool({
49
+ name: "data_stores_get",
50
+ title: "Get data store",
51
+ description: "Fetch a data store's schema + metadata.",
52
+ inputSchema: z.object({
53
+ projectId: projectIdArg,
54
+ storeId: z.string().min(1),
55
+ }),
56
+ handler: async (args) => {
57
+ const projectId = pid(client, args.projectId);
58
+ return client.get(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}`);
59
+ },
60
+ }),
61
+ defineTool({
62
+ name: "data_stores_update",
63
+ title: "Update data store",
64
+ description: "Patch a data store's name, description, columns, or settings.",
65
+ inputSchema: z.object({
66
+ projectId: projectIdArg,
67
+ storeId: z.string().min(1),
68
+ patch: z.object({
69
+ name: z.string().optional(),
70
+ description: z.string().optional(),
71
+ columns: z.array(columnSpec).max(50).optional(),
72
+ settings: z.record(z.unknown()).optional(),
73
+ }),
74
+ }),
75
+ handler: async (args) => {
76
+ const projectId = pid(client, args.projectId);
77
+ return client.patch(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}`, args.patch);
78
+ },
79
+ }),
80
+ defineTool({
81
+ name: "data_stores_delete",
82
+ title: "Delete data store",
83
+ description: "Delete a data store and all its rows. Destructive.",
84
+ inputSchema: z.object({
85
+ projectId: projectIdArg,
86
+ storeId: z.string().min(1),
87
+ confirm: z.boolean().default(false),
88
+ }),
89
+ handler: async (args) => {
90
+ if (!args.confirm) {
91
+ return {
92
+ deleted: false,
93
+ reason: "Destructive. Re-invoke with confirm=true.",
94
+ };
95
+ }
96
+ const projectId = pid(client, args.projectId);
97
+ return client.delete(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}`);
98
+ },
99
+ }),
100
+ defineTool({
101
+ name: "data_stores_list_rows",
102
+ title: "List rows",
103
+ description: "List rows in a data store with pagination + optional search.",
104
+ inputSchema: z.object({
105
+ projectId: projectIdArg,
106
+ storeId: z.string().min(1),
107
+ page: z.number().int().min(1).default(1),
108
+ pageSize: z.number().int().min(1).max(200).default(50),
109
+ search: z.string().optional(),
110
+ }),
111
+ handler: async (args) => {
112
+ const projectId = pid(client, args.projectId);
113
+ return client.get(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}/rows`, { page: args.page, pageSize: args.pageSize, search: args.search });
114
+ },
115
+ }),
116
+ defineTool({
117
+ name: "data_stores_create_row",
118
+ title: "Create row",
119
+ description: "Insert one row into a data store.",
120
+ inputSchema: z.object({
121
+ projectId: projectIdArg,
122
+ storeId: z.string().min(1),
123
+ data: z.record(z.unknown()),
124
+ }),
125
+ handler: async (args) => {
126
+ const projectId = pid(client, args.projectId);
127
+ return client.post(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}/rows`, { data: args.data });
128
+ },
129
+ }),
130
+ defineTool({
131
+ name: "data_stores_update_row",
132
+ title: "Update row",
133
+ description: "Update one row in a data store by id.",
134
+ inputSchema: z.object({
135
+ projectId: projectIdArg,
136
+ storeId: z.string().min(1),
137
+ rowId: z.string().min(1),
138
+ data: z.record(z.unknown()),
139
+ }),
140
+ handler: async (args) => {
141
+ const projectId = pid(client, args.projectId);
142
+ return client.patch(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}/rows/${encodeURIComponent(args.rowId)}`, { data: args.data });
143
+ },
144
+ }),
145
+ defineTool({
146
+ name: "data_stores_delete_row",
147
+ title: "Delete row",
148
+ description: "Delete one row by id.",
149
+ inputSchema: z.object({
150
+ projectId: projectIdArg,
151
+ storeId: z.string().min(1),
152
+ rowId: z.string().min(1),
153
+ }),
154
+ handler: async (args) => {
155
+ const projectId = pid(client, args.projectId);
156
+ return client.delete(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}/rows/${encodeURIComponent(args.rowId)}`);
157
+ },
158
+ }),
159
+ defineTool({
160
+ name: "data_stores_bulk_upsert",
161
+ title: "Bulk upsert rows",
162
+ description: "Insert many rows at once (max 10k). Does not dedupe by default.",
163
+ inputSchema: z.object({
164
+ projectId: projectIdArg,
165
+ storeId: z.string().min(1),
166
+ rows: z.array(z.record(z.unknown())).min(1).max(10_000),
167
+ }),
168
+ handler: async (args) => {
169
+ const projectId = pid(client, args.projectId);
170
+ return client.post(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}/rows/bulk`, { rows: args.rows });
171
+ },
172
+ }),
173
+ defineTool({
174
+ name: "data_stores_bulk_delete",
175
+ title: "Bulk delete rows",
176
+ description: "Delete multiple rows by id in one call. Destructive.",
177
+ inputSchema: z.object({
178
+ projectId: projectIdArg,
179
+ storeId: z.string().min(1),
180
+ rowIds: z.array(z.string().min(1)).min(1).max(10_000),
181
+ confirm: z.boolean().default(false),
182
+ }),
183
+ handler: async (args) => {
184
+ if (!args.confirm) {
185
+ return {
186
+ deleted: false,
187
+ reason: "Destructive. Re-invoke with confirm=true.",
188
+ };
189
+ }
190
+ const projectId = pid(client, args.projectId);
191
+ return client.delete(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}/rows/bulk`, { rowIds: args.rowIds });
192
+ },
193
+ }),
194
+ defineTool({
195
+ name: "data_stores_import",
196
+ title: "Import rows",
197
+ description: "Bulk-import rows (≤10k) with optional column schema. `replaceExisting: true` wipes existing rows first.",
198
+ inputSchema: z.object({
199
+ projectId: projectIdArg,
200
+ storeId: z.string().min(1),
201
+ columns: z.array(columnSpec).max(50).optional(),
202
+ rows: z.array(z.record(z.unknown())).min(1).max(10_000),
203
+ replaceExisting: z.boolean().default(false),
204
+ }),
205
+ handler: async (args) => {
206
+ const projectId = pid(client, args.projectId);
207
+ return client.post(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}/import`, {
208
+ columns: args.columns,
209
+ rows: args.rows,
210
+ replaceExisting: args.replaceExisting,
211
+ });
212
+ },
213
+ }),
214
+ defineTool({
215
+ name: "data_stores_export",
216
+ title: "Export rows",
217
+ description: "Export all rows of a data store as JSON.",
218
+ inputSchema: z.object({
219
+ projectId: projectIdArg,
220
+ storeId: z.string().min(1),
221
+ }),
222
+ handler: async (args) => {
223
+ const projectId = pid(client, args.projectId);
224
+ return client.get(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}/export`);
225
+ },
226
+ }),
227
+ defineTool({
228
+ name: "data_stores_scan_website",
229
+ title: "Scan website into data store",
230
+ description: "Crawl a website and extract structured rows into the store. Returns a jobId; use jobs_wait to block until done.",
231
+ inputSchema: z.object({
232
+ projectId: projectIdArg,
233
+ storeId: z.string().min(1),
234
+ url: z.string().url(),
235
+ maxPages: z.number().int().min(1).max(500).default(20),
236
+ }),
237
+ handler: async (args) => {
238
+ const projectId = pid(client, args.projectId);
239
+ return client.post(`/api/dashboard/${projectId}/data-stores/${encodeURIComponent(args.storeId)}/scan`, { url: args.url, maxPages: args.maxPages });
240
+ },
241
+ }),
242
+ ];
243
+ }
244
+ //# sourceMappingURL=data_stores.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data_stores.js","sourceRoot":"","sources":["../../src/tools/data_stores.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { DashboardClient } from "../client.js";
2
+ import { type ToolDef } from "./types.js";
3
+ export declare function documentsTools(client: DashboardClient): ToolDef[];
4
+ //# sourceMappingURL=documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AActD,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,EAAE,CA0KjE"}
@@ -0,0 +1,162 @@
1
+ import { z } from "zod";
2
+ import { defineTool } from "./types.js";
3
+ const projectIdArg = z
4
+ .string()
5
+ .min(1)
6
+ .optional()
7
+ .describe("Project ID. Defaults to the active profile's projectId if omitted.");
8
+ function pid(client, projectId) {
9
+ return projectId ?? client.profile.projectId;
10
+ }
11
+ export function documentsTools(client) {
12
+ return [
13
+ defineTool({
14
+ name: "documents_list",
15
+ title: "List documents",
16
+ description: "List documents in a project with pagination, search, and filtering. Returns document summaries (name, chunk count, source).",
17
+ inputSchema: z.object({
18
+ projectId: projectIdArg,
19
+ search: z.string().optional(),
20
+ sourceType: z.enum(["pdf", "url", "manual"]).optional(),
21
+ sectorId: z
22
+ .string()
23
+ .optional()
24
+ .describe("Filter by sector, or '_unassigned' for docs without one."),
25
+ page: z.number().int().min(1).default(1),
26
+ pageSize: z.number().int().min(1).max(100).default(20),
27
+ sortBy: z.enum(["extractedAt", "chunks"]).default("extractedAt"),
28
+ sortOrder: z.enum(["asc", "desc"]).default("desc"),
29
+ }),
30
+ handler: async (args) => {
31
+ const projectId = pid(client, args.projectId);
32
+ return client.get(`/api/dashboard/${projectId}/documents`, {
33
+ search: args.search,
34
+ sourceType: args.sourceType,
35
+ sectorId: args.sectorId,
36
+ page: args.page,
37
+ pageSize: args.pageSize,
38
+ sortBy: args.sortBy,
39
+ sortOrder: args.sortOrder,
40
+ });
41
+ },
42
+ }),
43
+ defineTool({
44
+ name: "documents_get",
45
+ title: "Get document chunks",
46
+ description: "Get all chunks of a single document by name, including enrichment metadata.",
47
+ inputSchema: z.object({
48
+ projectId: projectIdArg,
49
+ documentName: z.string().min(1),
50
+ }),
51
+ handler: async (args) => {
52
+ const projectId = pid(client, args.projectId);
53
+ return client.get(`/api/dashboard/${projectId}/documents`, {
54
+ documentName: args.documentName,
55
+ });
56
+ },
57
+ }),
58
+ defineTool({
59
+ name: "documents_delete",
60
+ title: "Delete document",
61
+ description: "Delete all chunks of a document (including non-current versions) from MySQL and Qdrant. Destructive.",
62
+ inputSchema: z.object({
63
+ projectId: projectIdArg,
64
+ documentName: z.string().min(1),
65
+ confirm: z
66
+ .boolean()
67
+ .default(false)
68
+ .describe("Required true to actually delete. Guards against misfires."),
69
+ }),
70
+ handler: async (args) => {
71
+ if (!args.confirm) {
72
+ return {
73
+ deleted: false,
74
+ reason: "Destructive operation. Re-invoke with confirm=true to proceed.",
75
+ };
76
+ }
77
+ const projectId = pid(client, args.projectId);
78
+ return client.delete(`/api/dashboard/${projectId}/documents`, {
79
+ documentName: args.documentName,
80
+ });
81
+ },
82
+ }),
83
+ defineTool({
84
+ name: "documents_create_from_text",
85
+ title: "Create document from text",
86
+ description: "Create a new manual-text document in the knowledge base. Chunks, embeds, and indexes synchronously. Shows up under the dashboard's 'Text' tab. For URL-sourced content use extract_from_urls instead (it goes through the crawler and links to a link_source). For file uploads use files_upload.",
87
+ inputSchema: z.object({
88
+ projectId: projectIdArg,
89
+ title: z.string().min(1).max(200),
90
+ content: z.string().min(50),
91
+ sectorId: z.string().optional(),
92
+ audience: z.array(z.string()).optional(),
93
+ }),
94
+ handler: async (args) => {
95
+ const projectId = pid(client, args.projectId);
96
+ return client.post(`/api/dashboard/${projectId}/documents/create`, {
97
+ title: args.title,
98
+ content: args.content,
99
+ sectorId: args.sectorId,
100
+ sourceType: "manual",
101
+ audience: args.audience,
102
+ });
103
+ },
104
+ }),
105
+ defineTool({
106
+ name: "documents_merge",
107
+ title: "Merge two consecutive chunks",
108
+ description: "Merge two consecutive chunks of the same document into one. Re-embeds the merged content and updates Qdrant. Provide the merged content verbatim.",
109
+ inputSchema: z.object({
110
+ projectId: projectIdArg,
111
+ chunkId1: z.number().int(),
112
+ chunkId2: z.number().int(),
113
+ mergedContent: z.string().min(1),
114
+ }),
115
+ handler: async (args) => {
116
+ const projectId = pid(client, args.projectId);
117
+ return client.post(`/api/dashboard/${projectId}/documents/merge`, {
118
+ chunkId1: args.chunkId1,
119
+ chunkId2: args.chunkId2,
120
+ mergedContent: args.mergedContent,
121
+ });
122
+ },
123
+ }),
124
+ defineTool({
125
+ name: "documents_versions",
126
+ title: "List or create document versions",
127
+ description: "action=list → return version history for a specific chunk (documentName + chunkIndex). action=create → create a new version of a chunk (documentId + newContent + changeReason).",
128
+ inputSchema: z.object({
129
+ projectId: projectIdArg,
130
+ action: z.enum(["list", "create"]).default("list"),
131
+ documentName: z.string().optional(),
132
+ chunkIndex: z.number().int().optional(),
133
+ documentId: z.number().int().optional(),
134
+ newContent: z.string().optional(),
135
+ changeReason: z.string().optional(),
136
+ }),
137
+ handler: async (args) => {
138
+ const projectId = pid(client, args.projectId);
139
+ if (args.action === "list") {
140
+ if (!args.documentName || args.chunkIndex === undefined) {
141
+ throw new Error("action=list requires documentName and chunkIndex");
142
+ }
143
+ return client.get(`/api/dashboard/${projectId}/documents/versions`, {
144
+ documentName: args.documentName,
145
+ chunkIndex: args.chunkIndex,
146
+ });
147
+ }
148
+ if (args.documentId === undefined ||
149
+ !args.newContent ||
150
+ !args.changeReason) {
151
+ throw new Error("action=create requires documentId, newContent, and changeReason");
152
+ }
153
+ return client.post(`/api/dashboard/${projectId}/documents/versions`, {
154
+ documentId: args.documentId,
155
+ newContent: args.newContent,
156
+ changeReason: args.changeReason,
157
+ });
158
+ },
159
+ }),
160
+ ];
161
+ }
162
+ //# sourceMappingURL=documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { DashboardClient } from "../client.js";
2
+ import { type ToolDef } from "./types.js";
3
+ export declare function extractTools(client: DashboardClient): ToolDef[];
4
+ //# sourceMappingURL=extract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/tools/extract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,EAAE,CA+B/D"}
@@ -0,0 +1,61 @@
1
+ import { z } from "zod";
2
+ import { pid, projectIdArg } from "./helpers.js";
3
+ import { defineTool } from "./types.js";
4
+ export function extractTools(client) {
5
+ return [
6
+ defineTool({
7
+ name: "extract_from_urls",
8
+ title: "Extract documents from URLs",
9
+ description: "Batch-extract documents from a list of URLs into the project's knowledge base. Returns synchronously when fast; for large batches the backend may return a jobId (then use jobs_wait).",
10
+ inputSchema: z.object({
11
+ projectId: projectIdArg,
12
+ urls: z.array(z.string().url()).min(1).max(500),
13
+ concurrency: z.number().int().min(1).max(10).default(3),
14
+ sectorId: z.string().optional(),
15
+ audience: z.array(z.string()).optional(),
16
+ }),
17
+ handler: async (args) => {
18
+ for (const url of args.urls) {
19
+ assertPublicUrl(url);
20
+ }
21
+ const projectId = pid(client, args.projectId);
22
+ return client.post(`/api/dashboard/${projectId}/extract-documents`, {
23
+ urls: args.urls,
24
+ concurrency: args.concurrency,
25
+ sectorId: args.sectorId,
26
+ audience: args.audience,
27
+ });
28
+ },
29
+ }),
30
+ ];
31
+ }
32
+ /**
33
+ * Defense-in-depth against SSRF: refuse private IP ranges and metadata
34
+ * endpoints before we even hit the server. The server also validates.
35
+ */
36
+ function assertPublicUrl(url) {
37
+ let parsed;
38
+ try {
39
+ parsed = new URL(url);
40
+ }
41
+ catch {
42
+ throw new Error(`Invalid URL: ${url}`);
43
+ }
44
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
45
+ throw new Error(`Only http/https URLs allowed: ${url}`);
46
+ }
47
+ const host = parsed.hostname.toLowerCase();
48
+ if (host === "localhost" ||
49
+ host === "127.0.0.1" ||
50
+ host === "::1" ||
51
+ host === "169.254.169.254" ||
52
+ host === "metadata.google.internal" ||
53
+ host.endsWith(".localhost") ||
54
+ host.endsWith(".local")) {
55
+ throw new Error(`Refusing local/metadata host: ${host}`);
56
+ }
57
+ if (/^10\./.test(host) || /^192\.168\./.test(host) || /^172\.(1[6-9]|2\d|3[01])\./.test(host)) {
58
+ throw new Error(`Refusing private IP range: ${host}`);
59
+ }
60
+ }
61
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/tools/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAEtD,MAAM,UAAU,YAAY,CAAC,MAAuB;IAClD,OAAO;QACL,UAAU,CAAC;YACT,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,6BAA6B;YACpC,WAAW,EACT,wLAAwL;YAC1L,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,SAAS,EAAE,YAAY;gBACvB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC/C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC/B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACzC,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,eAAe,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9C,OAAO,MAAM,CAAC,IAAI,CAChB,kBAAkB,SAAS,oBAAoB,EAC/C;oBACE,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CACF,CAAC;YACJ,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC3C,IACE,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,KAAK;QACd,IAAI,KAAK,iBAAiB;QAC1B,IAAI,KAAK,0BAA0B;QACnC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACvB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9F,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DashboardClient } from "../client.js";
2
+ import { type ToolDef } from "./types.js";
3
+ export declare function filesTools(client: DashboardClient): ToolDef[];
4
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAUpD,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,EAAE,CAkO7D"}