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.
Files changed (42) hide show
  1. package/README.md +2 -27
  2. package/dist/bin/freeturtle.js +11 -3
  3. package/dist/bin/freeturtle.js.map +1 -1
  4. package/dist/src/approval-flow.test.d.ts +1 -0
  5. package/dist/src/approval-flow.test.js +259 -0
  6. package/dist/src/approval-flow.test.js.map +1 -0
  7. package/dist/src/cli/config-utils.d.ts +5 -0
  8. package/dist/src/cli/config-utils.js +45 -0
  9. package/dist/src/cli/config-utils.js.map +1 -0
  10. package/dist/src/cli/connect-web-search.d.ts +3 -0
  11. package/dist/src/cli/connect-web-search.js +40 -0
  12. package/dist/src/cli/connect-web-search.js.map +1 -0
  13. package/dist/src/cli/connection-tests.d.ts +4 -0
  14. package/dist/src/cli/connection-tests.js +15 -0
  15. package/dist/src/cli/connection-tests.js.map +1 -1
  16. package/dist/src/cli/init.js +36 -1
  17. package/dist/src/cli/init.js.map +1 -1
  18. package/dist/src/modules/database/client.d.ts +7 -1
  19. package/dist/src/modules/database/client.js +162 -22
  20. package/dist/src/modules/database/client.js.map +1 -1
  21. package/dist/src/modules/database/index.d.ts +11 -1
  22. package/dist/src/modules/database/index.js +69 -4
  23. package/dist/src/modules/database/index.js.map +1 -1
  24. package/dist/src/modules/loader.js +2 -0
  25. package/dist/src/modules/loader.js.map +1 -1
  26. package/dist/src/modules/web-search/index.d.ts +25 -0
  27. package/dist/src/modules/web-search/index.js +279 -0
  28. package/dist/src/modules/web-search/index.js.map +1 -0
  29. package/dist/src/policy.js +0 -2
  30. package/dist/src/policy.js.map +1 -1
  31. package/dist/src/policy.test.js +2 -2
  32. package/dist/src/policy.test.js.map +1 -1
  33. package/dist/src/redaction.js +1 -0
  34. package/dist/src/redaction.js.map +1 -1
  35. package/dist/src/runner.js +1 -1
  36. package/dist/src/runner.js.map +1 -1
  37. package/dist/src/security/external-content.d.ts +44 -0
  38. package/dist/src/security/external-content.js +124 -0
  39. package/dist/src/security/external-content.js.map +1 -0
  40. package/dist/src/webhooks/server.js +10 -3
  41. package/dist/src/webhooks/server.js.map +1 -1
  42. package/package.json +1 -1
@@ -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}`);
@@ -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({ connectionString });
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: result.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
- await client.query("ROLLBACK");
20
- throw err;
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 tablesResult = await this.query(`SELECT table_name FROM information_schema.tables
28
- WHERE table_schema = 'public'
29
- ORDER BY table_name`);
30
- const tables = [];
31
- for (const row of tablesResult.rows) {
32
- const tableName = row.table_name;
33
- const colsResult = await this.query(`SELECT column_name, data_type FROM information_schema.columns
34
- WHERE table_schema = 'public' AND table_name = '${tableName.replace(/'/g, "''")}'
35
- ORDER BY ordinal_position`);
36
- tables.push({
37
- table_name: tableName,
38
- columns: colsResult.rows.map((c) => ({
39
- name: c.column_name,
40
- type: c.data_type,
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;AAYpB,MAAM,OAAO,cAAc;IACjB,IAAI,CAAU;IAEtB,YAAY,gBAAwB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAiC;gBAC9C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;aAC/B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CACnC;;2BAEqB,CACtB,CAAC;QAEF,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,GAAG,CAAC,UAAoB,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC;2DACmD,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;mCACrD,CAC5B,CAAC;YACF,MAAM,CAAC,IAAI,CAAC;gBACV,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnC,IAAI,EAAE,CAAC,CAAC,WAAqB;oBAC7B,IAAI,EAAE,CAAC,CAAC,SAAmB;iBAC5B,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/modules/database/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,oBAAoB,GAAG,MAAM,CAAC,CAAC,aAAa;AAalD;;;GAGG;AACH,MAAM,cAAc,GAAG;IACrB,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,QAAQ;IACR,UAAU;IACV,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,IAAI;IACJ,KAAK;IACL,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,UAAU;IACV,UAAU;IACV,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,YAAY;CACb,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,6BAA6B;IAC7B,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzC,uBAAuB;IACvB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACnD,sBAAsB;IACtB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,2CAA2C;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IAED,+CAA+C;IAC/C,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,2EAA2E;QAC3E,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,OAAO,KAAK,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,8CAA8C,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,6CAA6C;IAC7C,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,IAAI,CAAU;IAEtB,YAAY,gBAAwB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;YACtB,gBAAgB;YAChB,oDAAoD;YACpD,gBAAgB,EAAE,YAAY;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW;QACrB,sCAAsC;QACtC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAClD,oEAAoE;YACpE,MAAM,MAAM,CAAC,KAAK,CAAC,iCAAiC,oBAAoB,EAAE,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAiC,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YAEzC,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;gBAChD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;gBAC9B,SAAS;aACV,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;YAC9E,+DAA+D;YAC/D,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,cAAyB,EAAE,aAAwB;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAClD,MAAM,MAAM,CAAC,KAAK,CAAC,iCAAiC,oBAAoB,EAAE,CAAC,CAAC;YAE5E,oDAAoD;YACpD,IAAI,WAAW,GAAG;;0CAEkB,CAAC;YACrC,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,0CAA0C;YAC1C,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1E,WAAW,GAAG;mCACa,YAAY;4CACH,CAAC;gBACrC,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAgB,EAAE,CAAC;YAC/B,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAsB,CAAC;gBAC1C,MAAM,SAAS,GAAG,GAAG,CAAC,UAAoB,CAAC;gBAE3C,yCAAyC;gBACzC,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;wBAC5E,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,4DAA4D;gBAC5D,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,KAAK,CACnC;;qCAE2B,EAC3B,CAAC,MAAM,EAAE,SAAS,CAAC,CACpB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC;oBACV,UAAU,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS,EAAE;oBACtE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;wBAC5D,IAAI,EAAE,CAAC,CAAC,WAAqB;wBAC7B,IAAI,EAAE,CAAC,CAAC,SAAmB;qBAC5B,CAAC,CAAC;iBACJ,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC9D,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACxB,CAAC;CACF;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAY;IACnC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE1B,+DAA+D;IAC/D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,CAAC;IAC1E,gCAAgC;IAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,yCAAyC,EAAE,SAAS,CAAC,CAAC;IAChF,2CAA2C;IAC3C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,6CAA6C,EAAE,CAAC,KAAK,EAAE,EAAE,CACjF,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAClC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAC1B,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -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
- initialize(_config: Record<string, unknown>, env: Record<string, string>): Promise<void>;
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
- async initialize(_config, env) {
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 result = await withRetry(() => this.client.query(input.sql));
21
- return JSON.stringify({ rowCount: result.rowCount, rows: result.rows });
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 tables = await withRetry(() => this.client.listTables());
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":"AACA,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;IAEhC,KAAK,CAAC,UAAU,CACd,OAAgC,EAChC,GAA2B;QAE3B,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;IACxC,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,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAa,CAAC,CACvC,CAAC;gBACF,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC/D,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;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/database/index.ts"],"names":[],"mappings":"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"}
@@ -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 = [];