@cogitator-ai/core 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,289 @@
1
+ import { z } from 'zod';
2
+ import { tool } from '../tool';
3
+ const githubParams = z.object({
4
+ action: z
5
+ .enum([
6
+ 'get_repo',
7
+ 'list_issues',
8
+ 'get_issue',
9
+ 'create_issue',
10
+ 'update_issue',
11
+ 'list_prs',
12
+ 'get_pr',
13
+ 'create_pr',
14
+ 'get_file',
15
+ 'list_commits',
16
+ 'search_code',
17
+ 'search_issues',
18
+ ])
19
+ .describe('GitHub API action to perform'),
20
+ owner: z.string().describe('Repository owner (user or organization)'),
21
+ repo: z.string().describe('Repository name'),
22
+ number: z.number().int().optional().describe('Issue or PR number (for get/update operations)'),
23
+ title: z.string().optional().describe('Title for new issue/PR'),
24
+ body: z.string().optional().describe('Body/description for new issue/PR'),
25
+ state: z
26
+ .enum(['open', 'closed', 'all'])
27
+ .optional()
28
+ .describe('Filter by state (default: open)'),
29
+ labels: z.array(z.string()).optional().describe('Labels for issue'),
30
+ assignees: z.array(z.string()).optional().describe('Assignees for issue'),
31
+ path: z.string().optional().describe('File path (for get_file)'),
32
+ ref: z.string().optional().describe('Git ref/branch (default: main)'),
33
+ base: z.string().optional().describe('Base branch for PR'),
34
+ head: z.string().optional().describe('Head branch for PR'),
35
+ query: z.string().optional().describe('Search query'),
36
+ perPage: z.number().int().min(1).max(100).optional().describe('Results per page (default: 30)'),
37
+ page: z.number().int().min(1).optional().describe('Page number (default: 1)'),
38
+ });
39
+ const GITHUB_API = 'https://api.github.com';
40
+ async function githubFetch(endpoint, token, options = {}) {
41
+ const response = await fetch(`${GITHUB_API}${endpoint}`, {
42
+ ...options,
43
+ headers: {
44
+ Accept: 'application/vnd.github+json',
45
+ Authorization: `Bearer ${token}`,
46
+ 'X-GitHub-Api-Version': '2022-11-28',
47
+ ...options.headers,
48
+ },
49
+ });
50
+ if (!response.ok) {
51
+ const error = await response.text();
52
+ throw new Error(`GitHub API error ${response.status}: ${error}`);
53
+ }
54
+ return response.json();
55
+ }
56
+ async function executeAction(action, params, token) {
57
+ const { owner, repo, number, title, body, state, labels, assignees, path, ref, base, head, query, perPage = 30, page = 1 } = params;
58
+ const queryParams = new URLSearchParams();
59
+ if (state && state !== 'all')
60
+ queryParams.set('state', state);
61
+ if (perPage)
62
+ queryParams.set('per_page', perPage.toString());
63
+ if (page)
64
+ queryParams.set('page', page.toString());
65
+ const qs = queryParams.toString();
66
+ const queryString = qs ? `?${qs}` : '';
67
+ switch (action) {
68
+ case 'get_repo': {
69
+ const data = (await githubFetch(`/repos/${owner}/${repo}`, token));
70
+ return {
71
+ name: data.name,
72
+ fullName: data.full_name,
73
+ description: data.description,
74
+ url: data.html_url,
75
+ defaultBranch: data.default_branch,
76
+ stars: data.stargazers_count,
77
+ forks: data.forks_count,
78
+ openIssues: data.open_issues_count,
79
+ language: data.language,
80
+ topics: data.topics,
81
+ };
82
+ }
83
+ case 'list_issues': {
84
+ const data = (await githubFetch(`/repos/${owner}/${repo}/issues${queryString}`, token));
85
+ return data
86
+ .filter((i) => !('pull_request' in i))
87
+ .map((i) => ({
88
+ number: i.number,
89
+ title: i.title,
90
+ state: i.state,
91
+ url: i.html_url,
92
+ author: i.user.login,
93
+ labels: i.labels.map((l) => l.name),
94
+ createdAt: i.created_at,
95
+ }));
96
+ }
97
+ case 'get_issue': {
98
+ if (!number)
99
+ throw new Error('Issue number required');
100
+ const data = (await githubFetch(`/repos/${owner}/${repo}/issues/${number}`, token));
101
+ return {
102
+ number: data.number,
103
+ title: data.title,
104
+ state: data.state,
105
+ url: data.html_url,
106
+ body: data.body,
107
+ author: data.user.login,
108
+ labels: data.labels.map((l) => l.name),
109
+ assignees: data.assignees.map((a) => a.login),
110
+ createdAt: data.created_at,
111
+ updatedAt: data.updated_at,
112
+ };
113
+ }
114
+ case 'create_issue': {
115
+ if (!title)
116
+ throw new Error('Issue title required');
117
+ const payload = { title, body };
118
+ if (labels)
119
+ payload.labels = labels;
120
+ if (assignees)
121
+ payload.assignees = assignees;
122
+ const data = (await githubFetch(`/repos/${owner}/${repo}/issues`, token, {
123
+ method: 'POST',
124
+ headers: { 'Content-Type': 'application/json' },
125
+ body: JSON.stringify(payload),
126
+ }));
127
+ return {
128
+ number: data.number,
129
+ title: data.title,
130
+ url: data.html_url,
131
+ created: true,
132
+ };
133
+ }
134
+ case 'update_issue': {
135
+ if (!number)
136
+ throw new Error('Issue number required');
137
+ const payload = {};
138
+ if (title)
139
+ payload.title = title;
140
+ if (body !== undefined)
141
+ payload.body = body;
142
+ if (state && state !== 'all')
143
+ payload.state = state;
144
+ if (labels)
145
+ payload.labels = labels;
146
+ if (assignees)
147
+ payload.assignees = assignees;
148
+ const data = (await githubFetch(`/repos/${owner}/${repo}/issues/${number}`, token, {
149
+ method: 'PATCH',
150
+ headers: { 'Content-Type': 'application/json' },
151
+ body: JSON.stringify(payload),
152
+ }));
153
+ return {
154
+ number: data.number,
155
+ title: data.title,
156
+ state: data.state,
157
+ url: data.html_url,
158
+ updated: true,
159
+ };
160
+ }
161
+ case 'list_prs': {
162
+ const data = (await githubFetch(`/repos/${owner}/${repo}/pulls${queryString}`, token));
163
+ return data.map((pr) => ({
164
+ number: pr.number,
165
+ title: pr.title,
166
+ state: pr.state,
167
+ url: pr.html_url,
168
+ author: pr.user.login,
169
+ head: pr.head.ref,
170
+ base: pr.base.ref,
171
+ createdAt: pr.created_at,
172
+ }));
173
+ }
174
+ case 'get_pr': {
175
+ if (!number)
176
+ throw new Error('PR number required');
177
+ const data = (await githubFetch(`/repos/${owner}/${repo}/pulls/${number}`, token));
178
+ return {
179
+ number: data.number,
180
+ title: data.title,
181
+ state: data.state,
182
+ url: data.html_url,
183
+ body: data.body,
184
+ author: data.user.login,
185
+ head: data.head.ref,
186
+ base: data.base.ref,
187
+ merged: data.merged,
188
+ mergeable: data.mergeable,
189
+ labels: data.labels.map((l) => l.name),
190
+ createdAt: data.created_at,
191
+ updatedAt: data.updated_at,
192
+ };
193
+ }
194
+ case 'create_pr': {
195
+ if (!title)
196
+ throw new Error('PR title required');
197
+ if (!head)
198
+ throw new Error('Head branch required');
199
+ if (!base)
200
+ throw new Error('Base branch required');
201
+ const data = (await githubFetch(`/repos/${owner}/${repo}/pulls`, token, {
202
+ method: 'POST',
203
+ headers: { 'Content-Type': 'application/json' },
204
+ body: JSON.stringify({ title, body, head, base }),
205
+ }));
206
+ return {
207
+ number: data.number,
208
+ title: data.title,
209
+ url: data.html_url,
210
+ created: true,
211
+ };
212
+ }
213
+ case 'get_file': {
214
+ if (!path)
215
+ throw new Error('File path required');
216
+ const refParam = ref ? `?ref=${ref}` : '';
217
+ const data = (await githubFetch(`/repos/${owner}/${repo}/contents/${path}${refParam}`, token));
218
+ const content = data.encoding === 'base64' ? Buffer.from(data.content, 'base64').toString('utf-8') : data.content;
219
+ return {
220
+ name: data.name,
221
+ path: data.path,
222
+ sha: data.sha,
223
+ size: data.size,
224
+ url: data.html_url,
225
+ content,
226
+ };
227
+ }
228
+ case 'list_commits': {
229
+ const refParam = ref ? `&sha=${ref}` : '';
230
+ const data = (await githubFetch(`/repos/${owner}/${repo}/commits${queryString}${refParam}`, token));
231
+ return data.map((c) => ({
232
+ sha: c.sha.slice(0, 7),
233
+ fullSha: c.sha,
234
+ message: c.commit.message.split('\n')[0],
235
+ author: c.commit.author.name,
236
+ date: c.commit.author.date,
237
+ url: c.html_url,
238
+ }));
239
+ }
240
+ case 'search_code': {
241
+ if (!query)
242
+ throw new Error('Search query required');
243
+ const searchQuery = `${query} repo:${owner}/${repo}`;
244
+ const data = (await githubFetch(`/search/code?q=${encodeURIComponent(searchQuery)}&per_page=${perPage}&page=${page}`, token));
245
+ return {
246
+ totalCount: data.total_count,
247
+ results: data.items.map((i) => ({
248
+ path: i.path,
249
+ url: i.html_url,
250
+ })),
251
+ };
252
+ }
253
+ case 'search_issues': {
254
+ if (!query)
255
+ throw new Error('Search query required');
256
+ const searchQuery = `${query} repo:${owner}/${repo}`;
257
+ const data = (await githubFetch(`/search/issues?q=${encodeURIComponent(searchQuery)}&per_page=${perPage}&page=${page}`, token));
258
+ return {
259
+ totalCount: data.total_count,
260
+ results: data.items.map((i) => ({
261
+ number: i.number,
262
+ title: i.title,
263
+ url: i.html_url,
264
+ })),
265
+ };
266
+ }
267
+ }
268
+ }
269
+ export const githubApi = tool({
270
+ name: 'github_api',
271
+ description: 'Interact with GitHub API. Get repo info, list/create/update issues and PRs, read files, list commits, search code. Requires GITHUB_TOKEN environment variable.',
272
+ parameters: githubParams,
273
+ category: 'development',
274
+ tags: ['github', 'git', 'issues', 'pr', 'code', 'repository'],
275
+ sideEffects: ['network'],
276
+ execute: async (params) => {
277
+ const token = process.env.GITHUB_TOKEN;
278
+ if (!token) {
279
+ return { error: 'GITHUB_TOKEN environment variable not set' };
280
+ }
281
+ try {
282
+ return await executeAction(params.action, params, token);
283
+ }
284
+ catch (err) {
285
+ return { error: err.message, action: params.action };
286
+ }
287
+ },
288
+ });
289
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/tools/github.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,3 @@
1
- /**
2
- * Built-in tools for Cogitator
3
- */
4
1
  export { calculator } from './calculator';
5
2
  export { datetime } from './datetime';
6
3
  export { uuid } from './uuid';
@@ -13,6 +10,12 @@ export { regexMatch, regexReplace } from './regex';
13
10
  export { fileRead, fileWrite, fileList, fileExists, fileDelete } from './filesystem';
14
11
  export { httpRequest } from './http';
15
12
  export { exec } from './exec';
13
+ export { webSearch } from './web-search';
14
+ export { webScrape } from './web-scrape';
15
+ export { sqlQuery } from './sql-query';
16
+ export { vectorSearch } from './vector-search';
17
+ export { sendEmail } from './email';
18
+ export { githubApi } from './github';
16
19
  export declare const builtinTools: readonly [import("@cogitator-ai/types").Tool<{
17
20
  expression: string;
18
21
  }, {
@@ -319,5 +322,91 @@ export declare const builtinTools: readonly [import("@cogitator-ai/types").Tool<
319
322
  truncatedStdout?: undefined;
320
323
  truncatedStderr?: undefined;
321
324
  timeout?: undefined;
322
- }>];
325
+ }>, import("@cogitator-ai/types").Tool<{
326
+ query: string;
327
+ provider?: "tavily" | "brave" | "serper" | undefined;
328
+ maxResults?: number | undefined;
329
+ searchDepth?: "basic" | "advanced" | undefined;
330
+ includeAnswer?: boolean | undefined;
331
+ }, import("./web-search").SearchResponse | {
332
+ error: string;
333
+ query?: undefined;
334
+ provider?: undefined;
335
+ } | {
336
+ error: string;
337
+ query: string;
338
+ provider: "tavily" | "brave" | "serper";
339
+ }>, import("@cogitator-ai/types").Tool<{
340
+ url: string;
341
+ timeout?: number | undefined;
342
+ format?: "text" | "markdown" | "html" | undefined;
343
+ selector?: string | undefined;
344
+ maxLength?: number | undefined;
345
+ includeLinks?: boolean | undefined;
346
+ includeImages?: boolean | undefined;
347
+ }, import("./web-scrape").ScrapeResult | {
348
+ error: string;
349
+ url: string;
350
+ }>, import("@cogitator-ai/types").Tool<{
351
+ query: string;
352
+ database?: "postgres" | "sqlite" | undefined;
353
+ params?: unknown[] | undefined;
354
+ connectionString?: string | undefined;
355
+ maxRows?: number | undefined;
356
+ readOnly?: boolean | undefined;
357
+ }, import("./sql-query").QueryResult | {
358
+ error: string;
359
+ database?: undefined;
360
+ } | {
361
+ error: string;
362
+ database: "postgres" | "sqlite";
363
+ }>, import("@cogitator-ai/types").Tool<{
364
+ query: string;
365
+ filter?: Record<string, unknown> | undefined;
366
+ connectionString?: string | undefined;
367
+ collection?: string | undefined;
368
+ topK?: number | undefined;
369
+ threshold?: number | undefined;
370
+ embeddingProvider?: "ollama" | "openai" | "google" | undefined;
371
+ embeddingModel?: string | undefined;
372
+ }, import("./vector-search").VectorSearchResponse | {
373
+ error: string;
374
+ query?: undefined;
375
+ } | {
376
+ error: string;
377
+ query: string;
378
+ }>, import("@cogitator-ai/types").Tool<{
379
+ body: string;
380
+ to: string | string[];
381
+ subject: string;
382
+ provider?: "resend" | "smtp" | undefined;
383
+ html?: boolean | undefined;
384
+ from?: string | undefined;
385
+ replyTo?: string | undefined;
386
+ cc?: string | string[] | undefined;
387
+ bcc?: string | string[] | undefined;
388
+ }, import("./email").EmailResult | {
389
+ error: string;
390
+ provider?: undefined;
391
+ } | {
392
+ error: string;
393
+ provider: "resend" | "smtp";
394
+ }>, import("@cogitator-ai/types").Tool<{
395
+ action: "get_repo" | "list_issues" | "get_issue" | "create_issue" | "update_issue" | "list_prs" | "get_pr" | "create_pr" | "get_file" | "list_commits" | "search_code" | "search_issues";
396
+ owner: string;
397
+ repo: string;
398
+ number?: number | undefined;
399
+ path?: string | undefined;
400
+ query?: string | undefined;
401
+ body?: string | undefined;
402
+ title?: string | undefined;
403
+ state?: "open" | "closed" | "all" | undefined;
404
+ labels?: string[] | undefined;
405
+ assignees?: string[] | undefined;
406
+ ref?: string | undefined;
407
+ base?: string | undefined;
408
+ head?: string | undefined;
409
+ perPage?: number | undefined;
410
+ page?: number | undefined;
411
+ }, unknown>];
323
412
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAe9B,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqBf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAqBrC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2Bf,CAAC"}
@@ -1,6 +1,3 @@
1
- /**
2
- * Built-in tools for Cogitator
3
- */
4
1
  export { calculator } from './calculator';
5
2
  export { datetime } from './datetime';
6
3
  export { uuid } from './uuid';
@@ -13,6 +10,12 @@ export { regexMatch, regexReplace } from './regex';
13
10
  export { fileRead, fileWrite, fileList, fileExists, fileDelete } from './filesystem';
14
11
  export { httpRequest } from './http';
15
12
  export { exec } from './exec';
13
+ export { webSearch } from './web-search';
14
+ export { webScrape } from './web-scrape';
15
+ export { sqlQuery } from './sql-query';
16
+ export { vectorSearch } from './vector-search';
17
+ export { sendEmail } from './email';
18
+ export { githubApi } from './github';
16
19
  import { calculator } from './calculator';
17
20
  import { datetime } from './datetime';
18
21
  import { uuid } from './uuid';
@@ -25,6 +28,12 @@ import { regexMatch, regexReplace } from './regex';
25
28
  import { fileRead, fileWrite, fileList, fileExists, fileDelete } from './filesystem';
26
29
  import { httpRequest } from './http';
27
30
  import { exec } from './exec';
31
+ import { webSearch } from './web-search';
32
+ import { webScrape } from './web-scrape';
33
+ import { sqlQuery } from './sql-query';
34
+ import { vectorSearch } from './vector-search';
35
+ import { sendEmail } from './email';
36
+ import { githubApi } from './github';
28
37
  export const builtinTools = [
29
38
  calculator,
30
39
  datetime,
@@ -46,5 +55,11 @@ export const builtinTools = [
46
55
  fileDelete,
47
56
  httpRequest,
48
57
  exec,
58
+ webSearch,
59
+ webScrape,
60
+ sqlQuery,
61
+ vectorSearch,
62
+ sendEmail,
63
+ githubApi,
49
64
  ];
50
65
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU;IACV,QAAQ;IACR,IAAI;IACJ,YAAY;IACZ,YAAY;IACZ,IAAI;IACJ,YAAY;IACZ,YAAY;IACZ,KAAK;IACL,SAAS;IACT,aAAa;IACb,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,UAAU;IACV,UAAU;IACV,WAAW;IACX,IAAI;CACI,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU;IACV,QAAQ;IACR,IAAI;IACJ,YAAY;IACZ,YAAY;IACZ,IAAI;IACJ,YAAY;IACZ,YAAY;IACZ,KAAK;IACL,SAAS;IACT,aAAa;IACb,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,UAAU;IACV,UAAU;IACV,WAAW;IACX,IAAI;IACJ,SAAS;IACT,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,SAAS;CACD,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface QueryResult {
2
+ rows: Record<string, unknown>[];
3
+ rowCount: number;
4
+ truncated: boolean;
5
+ database: string;
6
+ executionTime: number;
7
+ }
8
+ export declare const sqlQuery: import("@cogitator-ai/types").Tool<{
9
+ query: string;
10
+ database?: "postgres" | "sqlite" | undefined;
11
+ params?: unknown[] | undefined;
12
+ connectionString?: string | undefined;
13
+ maxRows?: number | undefined;
14
+ readOnly?: boolean | undefined;
15
+ }, QueryResult | {
16
+ error: string;
17
+ database?: undefined;
18
+ } | {
19
+ error: string;
20
+ database: "postgres" | "sqlite";
21
+ }>;
22
+ //# sourceMappingURL=sql-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-query.d.ts","sourceRoot":"","sources":["../../src/tools/sql-query.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAgHD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;EA8CnB,CAAC"}
@@ -0,0 +1,145 @@
1
+ import { z } from 'zod';
2
+ import { tool } from '../tool';
3
+ const sqlQueryParams = z.object({
4
+ query: z.string().min(1).describe('SQL query to execute'),
5
+ database: z
6
+ .enum(['postgres', 'sqlite'])
7
+ .optional()
8
+ .describe('Database type (auto-detects from connection string if not specified)'),
9
+ connectionString: z
10
+ .string()
11
+ .optional()
12
+ .describe('Connection string. For PostgreSQL: postgres://user:pass@host:port/db. For SQLite: file path. Defaults to DATABASE_URL env var.'),
13
+ params: z
14
+ .array(z.unknown())
15
+ .optional()
16
+ .describe('Query parameters for parameterized queries (prevents SQL injection)'),
17
+ maxRows: z
18
+ .number()
19
+ .int()
20
+ .min(1)
21
+ .max(1000)
22
+ .optional()
23
+ .describe('Maximum rows to return (default: 100, max: 1000)'),
24
+ readOnly: z
25
+ .boolean()
26
+ .optional()
27
+ .describe('Only allow SELECT queries (default: true for safety)'),
28
+ });
29
+ function isReadOnlyQuery(query) {
30
+ const normalized = query.trim().toUpperCase();
31
+ const allowedPrefixes = ['SELECT', 'WITH', 'SHOW', 'DESCRIBE', 'EXPLAIN'];
32
+ return allowedPrefixes.some((prefix) => normalized.startsWith(prefix));
33
+ }
34
+ async function queryPostgres(connectionString, query, params, maxRows) {
35
+ let pg;
36
+ try {
37
+ pg = await import('pg');
38
+ }
39
+ catch {
40
+ throw new Error('pg package not installed. Run: pnpm add pg');
41
+ }
42
+ const client = new pg.default.Client({ connectionString });
43
+ const start = Date.now();
44
+ try {
45
+ await client.connect();
46
+ const limitedQuery = query.includes('LIMIT')
47
+ ? query
48
+ : `${query.replace(/;?\s*$/, '')} LIMIT ${maxRows + 1}`;
49
+ const result = await client.query(limitedQuery, params);
50
+ const executionTime = Date.now() - start;
51
+ const truncated = result.rows.length > maxRows;
52
+ const rows = truncated ? result.rows.slice(0, maxRows) : result.rows;
53
+ return {
54
+ rows: rows,
55
+ rowCount: rows.length,
56
+ truncated,
57
+ database: 'postgres',
58
+ executionTime,
59
+ };
60
+ }
61
+ finally {
62
+ await client.end();
63
+ }
64
+ }
65
+ async function querySqlite(filePath, query, params, maxRows) {
66
+ let Database;
67
+ try {
68
+ const betterSqlite = await import('better-sqlite3');
69
+ Database = betterSqlite.default;
70
+ }
71
+ catch {
72
+ throw new Error('better-sqlite3 package not installed. Run: pnpm add better-sqlite3');
73
+ }
74
+ const db = new Database(filePath, { readonly: true });
75
+ const start = Date.now();
76
+ try {
77
+ const limitedQuery = query.includes('LIMIT')
78
+ ? query
79
+ : `${query.replace(/;?\s*$/, '')} LIMIT ${maxRows + 1}`;
80
+ const stmt = db.prepare(limitedQuery);
81
+ const rows = stmt.all(...params);
82
+ const executionTime = Date.now() - start;
83
+ const truncated = rows.length > maxRows;
84
+ const resultRows = truncated ? rows.slice(0, maxRows) : rows;
85
+ return {
86
+ rows: resultRows,
87
+ rowCount: resultRows.length,
88
+ truncated,
89
+ database: 'sqlite',
90
+ executionTime,
91
+ };
92
+ }
93
+ finally {
94
+ db.close();
95
+ }
96
+ }
97
+ function detectDatabase(connectionString) {
98
+ if (connectionString.startsWith('postgres://') ||
99
+ connectionString.startsWith('postgresql://')) {
100
+ return 'postgres';
101
+ }
102
+ if (connectionString.endsWith('.db') ||
103
+ connectionString.endsWith('.sqlite') ||
104
+ connectionString.endsWith('.sqlite3') ||
105
+ connectionString.includes('.db') ||
106
+ connectionString === ':memory:') {
107
+ return 'sqlite';
108
+ }
109
+ return 'postgres';
110
+ }
111
+ export const sqlQuery = tool({
112
+ name: 'sql_query',
113
+ description: 'Execute SQL queries against PostgreSQL or SQLite databases. Supports parameterized queries for safety. By default, only SELECT queries are allowed.',
114
+ parameters: sqlQueryParams,
115
+ category: 'database',
116
+ tags: ['sql', 'database', 'postgres', 'sqlite', 'query'],
117
+ execute: async ({ query, database, connectionString, params = [], maxRows = 100, readOnly = true, }) => {
118
+ const connStr = connectionString ?? process.env.DATABASE_URL;
119
+ if (!connStr) {
120
+ return {
121
+ error: 'No connection string provided. Set DATABASE_URL environment variable or pass connectionString parameter.',
122
+ };
123
+ }
124
+ if (readOnly && !isReadOnlyQuery(query)) {
125
+ return {
126
+ error: 'Only SELECT queries are allowed when readOnly=true. Set readOnly=false to allow mutations.',
127
+ };
128
+ }
129
+ const db = database ?? detectDatabase(connStr);
130
+ try {
131
+ switch (db) {
132
+ case 'postgres':
133
+ return await queryPostgres(connStr, query, params, maxRows);
134
+ case 'sqlite':
135
+ return await querySqlite(connStr, query, params, maxRows);
136
+ default:
137
+ return { error: `Unsupported database type: ${db}` };
138
+ }
139
+ }
140
+ catch (err) {
141
+ return { error: err.message, database: db };
142
+ }
143
+ },
144
+ });
145
+ //# sourceMappingURL=sql-query.js.map