freeturtle 0.1.33 → 0.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -27
- package/dist/bin/freeturtle.js +11 -3
- package/dist/bin/freeturtle.js.map +1 -1
- package/dist/src/approval-flow.test.d.ts +1 -0
- package/dist/src/approval-flow.test.js +259 -0
- package/dist/src/approval-flow.test.js.map +1 -0
- package/dist/src/cli/config-utils.d.ts +5 -0
- package/dist/src/cli/config-utils.js +45 -0
- package/dist/src/cli/config-utils.js.map +1 -0
- package/dist/src/cli/connect-web-search.d.ts +3 -0
- package/dist/src/cli/connect-web-search.js +40 -0
- package/dist/src/cli/connect-web-search.js.map +1 -0
- package/dist/src/cli/connection-tests.d.ts +4 -0
- package/dist/src/cli/connection-tests.js +15 -0
- package/dist/src/cli/connection-tests.js.map +1 -1
- package/dist/src/cli/init.js +36 -1
- package/dist/src/cli/init.js.map +1 -1
- package/dist/src/modules/database/client.d.ts +7 -1
- package/dist/src/modules/database/client.js +162 -22
- package/dist/src/modules/database/client.js.map +1 -1
- package/dist/src/modules/database/index.d.ts +11 -1
- package/dist/src/modules/database/index.js +69 -4
- package/dist/src/modules/database/index.js.map +1 -1
- package/dist/src/modules/loader.js +2 -0
- package/dist/src/modules/loader.js.map +1 -1
- package/dist/src/modules/web-search/index.d.ts +25 -0
- package/dist/src/modules/web-search/index.js +279 -0
- package/dist/src/modules/web-search/index.js.map +1 -0
- package/dist/src/policy.js +0 -2
- package/dist/src/policy.js.map +1 -1
- package/dist/src/policy.test.js +2 -2
- package/dist/src/policy.test.js.map +1 -1
- package/dist/src/redaction.js +1 -0
- package/dist/src/redaction.js.map +1 -1
- package/dist/src/runner.js +1 -1
- package/dist/src/runner.js.map +1 -1
- package/dist/src/security/external-content.d.ts +44 -0
- package/dist/src/security/external-content.js +124 -0
- package/dist/src/security/external-content.js.map +1 -0
- package/dist/src/webhooks/server.js +10 -3
- package/dist/src/webhooks/server.js.map +1 -1
- package/package.json +1 -1
package/dist/src/cli/init.js
CHANGED
|
@@ -7,7 +7,7 @@ import { LLMClient } from "../llm.js";
|
|
|
7
7
|
import { connectFarcaster } from "./connect-farcaster.js";
|
|
8
8
|
import { connectGmail } from "./connect-gmail.js";
|
|
9
9
|
import { scanForSecrets, redactSecrets, condenseDocs } from "./intake.js";
|
|
10
|
-
import { testTelegram, testGitHub, testDatabase, testOnchain } from "./connection-tests.js";
|
|
10
|
+
import { testTelegram, testGitHub, testDatabase, testOnchain, testBraveSearch } from "./connection-tests.js";
|
|
11
11
|
import { runInstallService } from "./install-service.js";
|
|
12
12
|
import { createWebhook, channelToUrl } from "../webhooks/neynar.js";
|
|
13
13
|
const TURTLE = `
|
|
@@ -185,6 +185,8 @@ export async function runInit(dir) {
|
|
|
185
185
|
dbUrl: "",
|
|
186
186
|
onchain: false,
|
|
187
187
|
rpcUrl: "",
|
|
188
|
+
webSearch: false,
|
|
189
|
+
braveApiKey: "",
|
|
188
190
|
webhookEnabled: false,
|
|
189
191
|
webhookPort: "3456",
|
|
190
192
|
webhookSecret: "",
|
|
@@ -722,6 +724,33 @@ export async function runInit(dir) {
|
|
|
722
724
|
}
|
|
723
725
|
return true;
|
|
724
726
|
},
|
|
727
|
+
// 12. Web Search (Brave)
|
|
728
|
+
async () => {
|
|
729
|
+
const enable = await p.confirm({
|
|
730
|
+
message: "Connect web search? (Brave Search API — free tier: 2,000 queries/month)",
|
|
731
|
+
initialValue: state.webSearch,
|
|
732
|
+
});
|
|
733
|
+
if (p.isCancel(enable))
|
|
734
|
+
return false;
|
|
735
|
+
state.webSearch = enable;
|
|
736
|
+
if (enable) {
|
|
737
|
+
p.note([
|
|
738
|
+
"Get a free API key at:",
|
|
739
|
+
" brave.com/search/api",
|
|
740
|
+
"",
|
|
741
|
+
"Your CEO will use this to research topics,",
|
|
742
|
+
"fact-check information, and stay current.",
|
|
743
|
+
].join("\n"), "Brave Search setup");
|
|
744
|
+
const key = await promptWithExisting({ message: "Brave Search API key", existing: existingEnv.BRAVE_API_KEY, mask: true });
|
|
745
|
+
if (p.isCancel(key)) {
|
|
746
|
+
state.webSearch = false;
|
|
747
|
+
return true;
|
|
748
|
+
}
|
|
749
|
+
state.braveApiKey = key;
|
|
750
|
+
await runConnectionTest("Brave Search", () => testBraveSearch(state.braveApiKey));
|
|
751
|
+
}
|
|
752
|
+
return true;
|
|
753
|
+
},
|
|
725
754
|
];
|
|
726
755
|
// Run steps — Ctrl+C goes back, Ctrl+C on first step exits
|
|
727
756
|
for (let i = 0; i < steps.length;) {
|
|
@@ -812,6 +841,7 @@ export async function runInit(dir) {
|
|
|
812
841
|
state.github && "GitHub",
|
|
813
842
|
state.database && "Database",
|
|
814
843
|
state.onchain && "Onchain",
|
|
844
|
+
state.webSearch && "Web Search",
|
|
815
845
|
].filter(Boolean);
|
|
816
846
|
await p.tasks([
|
|
817
847
|
{
|
|
@@ -911,6 +941,9 @@ ${state.founderName}.
|
|
|
911
941
|
"### onchain",
|
|
912
942
|
`- enabled: ${state.onchain}`,
|
|
913
943
|
"",
|
|
944
|
+
"### web-search",
|
|
945
|
+
`- enabled: ${state.webSearch}`,
|
|
946
|
+
"",
|
|
914
947
|
"## Policy",
|
|
915
948
|
"### github",
|
|
916
949
|
"- approval_required_branches: main",
|
|
@@ -951,6 +984,8 @@ ${state.founderName}.
|
|
|
951
984
|
envLines.push(`DATABASE_URL=${state.dbUrl}`);
|
|
952
985
|
if (state.rpcUrl)
|
|
953
986
|
envLines.push(`RPC_URL=${state.rpcUrl}`);
|
|
987
|
+
if (state.braveApiKey)
|
|
988
|
+
envLines.push(`BRAVE_API_KEY=${state.braveApiKey}`);
|
|
954
989
|
if (state.webhookEnabled) {
|
|
955
990
|
envLines.push(`WEBHOOK_ENABLED=true`);
|
|
956
991
|
envLines.push(`WEBHOOK_PORT=${state.webhookPort}`);
|
package/dist/src/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface QueryResult {
|
|
2
2
|
rows: Record<string, unknown>[];
|
|
3
3
|
rowCount: number;
|
|
4
|
+
truncated: boolean;
|
|
4
5
|
}
|
|
5
6
|
export interface TableInfo {
|
|
6
7
|
table_name: string;
|
|
@@ -9,10 +10,15 @@ export interface TableInfo {
|
|
|
9
10
|
type: string;
|
|
10
11
|
}[];
|
|
11
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Validate that a SQL string is a read-only SELECT query.
|
|
15
|
+
* Strips comments and checks for write keywords.
|
|
16
|
+
*/
|
|
17
|
+
export declare function validateReadOnlyQuery(sql: string): void;
|
|
12
18
|
export declare class DatabaseClient {
|
|
13
19
|
private pool;
|
|
14
20
|
constructor(connectionString: string);
|
|
15
21
|
query(sql: string): Promise<QueryResult>;
|
|
16
|
-
listTables(): Promise<TableInfo[]>;
|
|
22
|
+
listTables(allowedSchemas?: string[], allowedTables?: string[]): Promise<TableInfo[]>;
|
|
17
23
|
close(): Promise<void>;
|
|
18
24
|
}
|
|
@@ -1,50 +1,190 @@
|
|
|
1
1
|
import pg from "pg";
|
|
2
|
+
const MAX_ROWS = 500;
|
|
3
|
+
const STATEMENT_TIMEOUT_MS = 15_000; // 15 seconds
|
|
4
|
+
/**
|
|
5
|
+
* SQL statements that are NOT allowed. Checked case-insensitively
|
|
6
|
+
* after stripping comments.
|
|
7
|
+
*/
|
|
8
|
+
const WRITE_KEYWORDS = [
|
|
9
|
+
"INSERT",
|
|
10
|
+
"UPDATE",
|
|
11
|
+
"DELETE",
|
|
12
|
+
"DROP",
|
|
13
|
+
"ALTER",
|
|
14
|
+
"CREATE",
|
|
15
|
+
"TRUNCATE",
|
|
16
|
+
"GRANT",
|
|
17
|
+
"REVOKE",
|
|
18
|
+
"COPY",
|
|
19
|
+
"EXECUTE",
|
|
20
|
+
"CALL",
|
|
21
|
+
"DO",
|
|
22
|
+
"SET",
|
|
23
|
+
"RESET",
|
|
24
|
+
"LISTEN",
|
|
25
|
+
"NOTIFY",
|
|
26
|
+
"LOCK",
|
|
27
|
+
"DISCARD",
|
|
28
|
+
"REASSIGN",
|
|
29
|
+
"SECURITY",
|
|
30
|
+
"LOAD",
|
|
31
|
+
"REINDEX",
|
|
32
|
+
"CLUSTER",
|
|
33
|
+
"VACUUM",
|
|
34
|
+
"ANALYZE",
|
|
35
|
+
"REFRESH",
|
|
36
|
+
"IMPORT",
|
|
37
|
+
"PREPARE",
|
|
38
|
+
"DEALLOCATE",
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* Validate that a SQL string is a read-only SELECT query.
|
|
42
|
+
* Strips comments and checks for write keywords.
|
|
43
|
+
*/
|
|
44
|
+
export function validateReadOnlyQuery(sql) {
|
|
45
|
+
// Strip single-line comments
|
|
46
|
+
let cleaned = sql.replace(/--.*$/gm, "");
|
|
47
|
+
// Strip block comments
|
|
48
|
+
cleaned = cleaned.replace(/\/\*[\s\S]*?\*\//g, "");
|
|
49
|
+
// Collapse whitespace
|
|
50
|
+
cleaned = cleaned.replace(/\s+/g, " ").trim();
|
|
51
|
+
if (!cleaned) {
|
|
52
|
+
throw new Error("Empty query");
|
|
53
|
+
}
|
|
54
|
+
// Must start with SELECT, WITH, or EXPLAIN
|
|
55
|
+
const upper = cleaned.toUpperCase();
|
|
56
|
+
if (!upper.startsWith("SELECT") && !upper.startsWith("WITH") && !upper.startsWith("EXPLAIN")) {
|
|
57
|
+
throw new Error("Only SELECT queries are allowed (query must start with SELECT, WITH, or EXPLAIN)");
|
|
58
|
+
}
|
|
59
|
+
// Check for write keywords as standalone words
|
|
60
|
+
for (const keyword of WRITE_KEYWORDS) {
|
|
61
|
+
// Match the keyword as a standalone word (not part of a column/table name)
|
|
62
|
+
const regex = new RegExp(`\\b${keyword}\\b`, "i");
|
|
63
|
+
if (regex.test(cleaned)) {
|
|
64
|
+
throw new Error(`Forbidden SQL keyword: ${keyword}. Only read-only SELECT queries are allowed.`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Check for semicolons (prevent multi-statement attacks)
|
|
68
|
+
// Allow trailing semicolon but not mid-query
|
|
69
|
+
const withoutTrailing = cleaned.replace(/;\s*$/, "");
|
|
70
|
+
if (withoutTrailing.includes(";")) {
|
|
71
|
+
throw new Error("Multi-statement queries are not allowed");
|
|
72
|
+
}
|
|
73
|
+
}
|
|
2
74
|
export class DatabaseClient {
|
|
3
75
|
pool;
|
|
4
76
|
constructor(connectionString) {
|
|
5
|
-
this.pool = new pg.Pool({
|
|
77
|
+
this.pool = new pg.Pool({
|
|
78
|
+
connectionString,
|
|
79
|
+
// Don't expose connection details in error messages
|
|
80
|
+
application_name: "freeturtle",
|
|
81
|
+
});
|
|
6
82
|
}
|
|
7
83
|
async query(sql) {
|
|
84
|
+
// Validate before sending to Postgres
|
|
85
|
+
validateReadOnlyQuery(sql);
|
|
8
86
|
const client = await this.pool.connect();
|
|
9
87
|
try {
|
|
10
88
|
await client.query("BEGIN TRANSACTION READ ONLY");
|
|
89
|
+
// Set a statement timeout so runaway queries can't hang the process
|
|
90
|
+
await client.query(`SET LOCAL statement_timeout = ${STATEMENT_TIMEOUT_MS}`);
|
|
11
91
|
const result = await client.query(sql);
|
|
12
92
|
await client.query("COMMIT");
|
|
93
|
+
const rows = result.rows;
|
|
94
|
+
const truncated = rows.length > MAX_ROWS;
|
|
13
95
|
return {
|
|
14
|
-
rows:
|
|
96
|
+
rows: truncated ? rows.slice(0, MAX_ROWS) : rows,
|
|
15
97
|
rowCount: result.rowCount ?? 0,
|
|
98
|
+
truncated,
|
|
16
99
|
};
|
|
17
100
|
}
|
|
18
101
|
catch (err) {
|
|
19
|
-
|
|
20
|
-
|
|
102
|
+
try {
|
|
103
|
+
await client.query("ROLLBACK");
|
|
104
|
+
}
|
|
105
|
+
catch { /* ignore rollback errors */ }
|
|
106
|
+
// Sanitize error messages to prevent connection string leakage
|
|
107
|
+
throw sanitizeDbError(err);
|
|
21
108
|
}
|
|
22
109
|
finally {
|
|
23
110
|
client.release();
|
|
24
111
|
}
|
|
25
112
|
}
|
|
26
|
-
async listTables() {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
113
|
+
async listTables(allowedSchemas, allowedTables) {
|
|
114
|
+
const client = await this.pool.connect();
|
|
115
|
+
try {
|
|
116
|
+
await client.query("BEGIN TRANSACTION READ ONLY");
|
|
117
|
+
await client.query(`SET LOCAL statement_timeout = ${STATEMENT_TIMEOUT_MS}`);
|
|
118
|
+
// Use parameterized query — no string interpolation
|
|
119
|
+
let tablesQuery = `SELECT table_schema, table_name FROM information_schema.tables
|
|
120
|
+
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
|
|
121
|
+
ORDER BY table_schema, table_name`;
|
|
122
|
+
const tablesParams = [];
|
|
123
|
+
// Filter by allowed schemas if configured
|
|
124
|
+
if (allowedSchemas && allowedSchemas.length > 0) {
|
|
125
|
+
const placeholders = allowedSchemas.map((_, i) => `$${i + 1}`).join(", ");
|
|
126
|
+
tablesQuery = `SELECT table_schema, table_name FROM information_schema.tables
|
|
127
|
+
WHERE table_schema IN (${placeholders})
|
|
128
|
+
ORDER BY table_schema, table_name`;
|
|
129
|
+
tablesParams.push(...allowedSchemas);
|
|
130
|
+
}
|
|
131
|
+
const tablesResult = await client.query(tablesQuery, tablesParams);
|
|
132
|
+
const tables = [];
|
|
133
|
+
for (const row of tablesResult.rows) {
|
|
134
|
+
const schema = row.table_schema;
|
|
135
|
+
const tableName = row.table_name;
|
|
136
|
+
// Filter by allowed tables if configured
|
|
137
|
+
if (allowedTables && allowedTables.length > 0) {
|
|
138
|
+
if (!allowedTables.some((t) => t.toLowerCase() === tableName.toLowerCase())) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Parameterized query for columns — no string interpolation
|
|
143
|
+
const colsResult = await client.query(`SELECT column_name, data_type FROM information_schema.columns
|
|
144
|
+
WHERE table_schema = $1 AND table_name = $2
|
|
145
|
+
ORDER BY ordinal_position`, [schema, tableName]);
|
|
146
|
+
tables.push({
|
|
147
|
+
table_name: schema === "public" ? tableName : `${schema}.${tableName}`,
|
|
148
|
+
columns: colsResult.rows.map((c) => ({
|
|
149
|
+
name: c.column_name,
|
|
150
|
+
type: c.data_type,
|
|
151
|
+
})),
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
await client.query("COMMIT");
|
|
155
|
+
return tables;
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
try {
|
|
159
|
+
await client.query("ROLLBACK");
|
|
160
|
+
}
|
|
161
|
+
catch { /* ignore */ }
|
|
162
|
+
throw sanitizeDbError(err);
|
|
163
|
+
}
|
|
164
|
+
finally {
|
|
165
|
+
client.release();
|
|
43
166
|
}
|
|
44
|
-
return tables;
|
|
45
167
|
}
|
|
46
168
|
async close() {
|
|
47
169
|
await this.pool.end();
|
|
48
170
|
}
|
|
49
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Strip connection strings and other sensitive data from database error messages.
|
|
174
|
+
*/
|
|
175
|
+
function sanitizeDbError(err) {
|
|
176
|
+
if (!(err instanceof Error)) {
|
|
177
|
+
return new Error("Database query failed");
|
|
178
|
+
}
|
|
179
|
+
let message = err.message;
|
|
180
|
+
// Strip connection strings (postgres://user:pass@host:port/db)
|
|
181
|
+
message = message.replace(/postgres(ql)?:\/\/[^\s]+/gi, "postgres://***");
|
|
182
|
+
// Strip IP addresses with ports
|
|
183
|
+
message = message.replace(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+/g, "***:***");
|
|
184
|
+
// Strip hostnames in common error patterns
|
|
185
|
+
message = message.replace(/(?:connect to|connection to|host) "[^"]+"/gi, (match) => match.replace(/"[^"]+"/, '"***"'));
|
|
186
|
+
const sanitized = new Error(message);
|
|
187
|
+
sanitized.name = err.name;
|
|
188
|
+
return sanitized;
|
|
189
|
+
}
|
|
50
190
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/modules/database/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/modules/database/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import type { FreeTurtleModule, ToolDefinition } from "../types.js";
|
|
2
|
+
import type { PolicyConfig } from "../../policy.js";
|
|
2
3
|
export declare class DatabaseModule implements FreeTurtleModule {
|
|
3
4
|
name: string;
|
|
4
5
|
description: string;
|
|
5
6
|
private client;
|
|
6
|
-
|
|
7
|
+
private policy?;
|
|
8
|
+
initialize(_config: Record<string, unknown>, env: Record<string, string>, options?: {
|
|
9
|
+
policy?: PolicyConfig;
|
|
10
|
+
}): Promise<void>;
|
|
7
11
|
getTools(): ToolDefinition[];
|
|
8
12
|
executeTool(name: string, input: Record<string, unknown>): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Extract referenced table names from a SQL query and check them against policy.
|
|
15
|
+
* This is a best-effort heuristic — the real enforcement is the READ ONLY transaction
|
|
16
|
+
* and the validateReadOnlyQuery() check in the client.
|
|
17
|
+
*/
|
|
18
|
+
private enforceQueryPolicy;
|
|
9
19
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assertDatabaseScopeAllowed } from "../../policy.js";
|
|
1
2
|
import { withRetry } from "../../reliability.js";
|
|
2
3
|
import { DatabaseClient } from "./client.js";
|
|
3
4
|
import { databaseTools } from "./tools.js";
|
|
@@ -5,11 +6,13 @@ export class DatabaseModule {
|
|
|
5
6
|
name = "database";
|
|
6
7
|
description = "Query a PostgreSQL database (read-only).";
|
|
7
8
|
client;
|
|
8
|
-
|
|
9
|
+
policy;
|
|
10
|
+
async initialize(_config, env, options) {
|
|
9
11
|
const url = env.DATABASE_URL;
|
|
10
12
|
if (!url)
|
|
11
13
|
throw new Error("Database module requires DATABASE_URL");
|
|
12
14
|
this.client = new DatabaseClient(url);
|
|
15
|
+
this.policy = options?.policy;
|
|
13
16
|
}
|
|
14
17
|
getTools() {
|
|
15
18
|
return databaseTools;
|
|
@@ -17,16 +20,78 @@ export class DatabaseModule {
|
|
|
17
20
|
async executeTool(name, input) {
|
|
18
21
|
switch (name) {
|
|
19
22
|
case "query_database": {
|
|
20
|
-
const
|
|
21
|
-
|
|
23
|
+
const sql = input.sql;
|
|
24
|
+
if (!sql)
|
|
25
|
+
return "Error: sql is required";
|
|
26
|
+
// Enforce schema/table policy if configured
|
|
27
|
+
this.enforceQueryPolicy(sql);
|
|
28
|
+
const result = await withRetry(() => this.client.query(sql));
|
|
29
|
+
const response = {
|
|
30
|
+
rowCount: result.rowCount,
|
|
31
|
+
rows: result.rows,
|
|
32
|
+
};
|
|
33
|
+
if (result.truncated) {
|
|
34
|
+
response.warning = `Results truncated to 500 rows (${result.rowCount} total)`;
|
|
35
|
+
}
|
|
36
|
+
return JSON.stringify(response);
|
|
22
37
|
}
|
|
23
38
|
case "list_tables": {
|
|
24
|
-
const
|
|
39
|
+
const allowedSchemas = this.policy?.database?.allowed_schemas;
|
|
40
|
+
const allowedTables = this.policy?.database?.allowed_tables;
|
|
41
|
+
const tables = await withRetry(() => this.client.listTables(allowedSchemas, allowedTables));
|
|
25
42
|
return JSON.stringify(tables);
|
|
26
43
|
}
|
|
27
44
|
default:
|
|
28
45
|
throw new Error(`Unknown database tool: ${name}`);
|
|
29
46
|
}
|
|
30
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Extract referenced table names from a SQL query and check them against policy.
|
|
50
|
+
* This is a best-effort heuristic — the real enforcement is the READ ONLY transaction
|
|
51
|
+
* and the validateReadOnlyQuery() check in the client.
|
|
52
|
+
*/
|
|
53
|
+
enforceQueryPolicy(sql) {
|
|
54
|
+
if (!this.policy)
|
|
55
|
+
return;
|
|
56
|
+
const schemas = this.policy.database?.allowed_schemas;
|
|
57
|
+
const tables = this.policy.database?.allowed_tables;
|
|
58
|
+
// If neither is configured, no restrictions
|
|
59
|
+
if (schemas === undefined && tables === undefined)
|
|
60
|
+
return;
|
|
61
|
+
// Extract table references from FROM and JOIN clauses
|
|
62
|
+
const tableRefs = extractTableReferences(sql);
|
|
63
|
+
for (const ref of tableRefs) {
|
|
64
|
+
const schema = ref.schema ?? "public";
|
|
65
|
+
assertDatabaseScopeAllowed(this.policy, schema, ref.table);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Best-effort extraction of table names from SQL.
|
|
71
|
+
* Matches patterns after FROM, JOIN, INTO, UPDATE, and table-like references.
|
|
72
|
+
*/
|
|
73
|
+
function extractTableReferences(sql) {
|
|
74
|
+
// Strip comments
|
|
75
|
+
let cleaned = sql.replace(/--.*$/gm, "");
|
|
76
|
+
cleaned = cleaned.replace(/\/\*[\s\S]*?\*\//g, "");
|
|
77
|
+
const refs = [];
|
|
78
|
+
const seen = new Set();
|
|
79
|
+
// Match table references after FROM, JOIN keywords
|
|
80
|
+
// Handles: schema.table, "schema"."table", table
|
|
81
|
+
const pattern = /\b(?:FROM|JOIN)\s+([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)?)(?:\s|,|$)/gi;
|
|
82
|
+
let match;
|
|
83
|
+
while ((match = pattern.exec(cleaned)) !== null) {
|
|
84
|
+
const fullRef = match[1];
|
|
85
|
+
const parts = fullRef.split(".");
|
|
86
|
+
const ref = parts.length === 2
|
|
87
|
+
? { schema: parts[0], table: parts[1] }
|
|
88
|
+
: { table: parts[0] };
|
|
89
|
+
const key = `${ref.schema ?? "public"}.${ref.table}`.toLowerCase();
|
|
90
|
+
if (!seen.has(key)) {
|
|
91
|
+
seen.add(key);
|
|
92
|
+
refs.push(ref);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return refs;
|
|
31
96
|
}
|
|
32
97
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/database/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/database/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,OAAO,cAAc;IACzB,IAAI,GAAG,UAAU,CAAC;IAClB,WAAW,GAAG,0CAA0C,CAAC;IAEjD,MAAM,CAAkB;IACxB,MAAM,CAAgB;IAE9B,KAAK,CAAC,UAAU,CACd,OAAgC,EAChC,GAA2B,EAC3B,OAAmC;QAEnC,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC;QAC7B,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAChC,CAAC;IAED,QAAQ;QACN,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,KAA8B;QAE9B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAa,CAAC;gBAChC,IAAI,CAAC,GAAG;oBAAE,OAAO,wBAAwB,CAAC;gBAE1C,4CAA4C;gBAC5C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBAE7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7D,MAAM,QAAQ,GAA4B;oBACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC;gBACF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACrB,QAAQ,CAAC,OAAO,GAAG,kCAAkC,MAAM,CAAC,QAAQ,SAAS,CAAC;gBAChF,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,CAAC;gBAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAClC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,aAAa,CAAC,CACtD,CAAC;gBACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,GAAW;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC;QAEpD,4CAA4C;QAC5C,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QAE1D,sDAAsD;QACtD,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAE9C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;YACtC,0BAA0B,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF;AAOD;;;GAGG;AACH,SAAS,sBAAsB,CAAC,GAAW;IACzC,iBAAiB;IACjB,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,mDAAmD;IACnD,iDAAiD;IACjD,MAAM,OAAO,GAAG,qFAAqF,CAAC;IACtG,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,GAAG,GACP,KAAK,CAAC,MAAM,KAAK,CAAC;YAChB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;YACvC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { XmtpModule } from "./xmtp/index.js";
|
|
|
6
6
|
import { GmailModule } from "./gmail/index.js";
|
|
7
7
|
import { WorkspaceModule } from "./workspace/index.js";
|
|
8
8
|
import { ShellModule } from "./shell/index.js";
|
|
9
|
+
import { WebSearchModule } from "./web-search/index.js";
|
|
9
10
|
const MODULE_MAP = {
|
|
10
11
|
farcaster: FarcasterModule,
|
|
11
12
|
database: DatabaseModule,
|
|
@@ -14,6 +15,7 @@ const MODULE_MAP = {
|
|
|
14
15
|
onchain: OnchainModule,
|
|
15
16
|
xmtp: XmtpModule,
|
|
16
17
|
shell: ShellModule,
|
|
18
|
+
"web-search": WebSearchModule,
|
|
17
19
|
};
|
|
18
20
|
export async function loadModules(config, env, logger, policy, dir) {
|
|
19
21
|
const modules = [];
|