@intelligo-dev/core 1.0.0-beta.1 → 1.0.0-beta.2

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.
@@ -1,9 +1,24 @@
1
1
  /**
2
2
  * Database Client
3
3
  *
4
- * Uses different drivers based on environment:
5
- * - Local development: postgres driver (node-postgres)
6
- * - Production (Neon): @neondatabase/serverless driver
4
+ * One Drizzle handle, two drivers:
5
+ *
6
+ * - `pg` (node-postgres) for any ordinary Postgres URL.
7
+ * - `neon-serverless` — Neon's WebSocket driver — for Neon URLs.
8
+ *
9
+ * Neon's HTTP driver (`drizzle-orm/neon-http`) is deliberately not an
10
+ * option. It is one round-trip per statement with no session, so
11
+ * `db.transaction()` throws "No transactions support in neon-http
12
+ * driver" — and quota admission (`pg_advisory_xact_lock` + reservation
13
+ * insert) and usage settlement are transactions. A Neon deployment on
14
+ * the HTTP driver refused every metered request. The WebSocket driver
15
+ * keeps a real session, so transactions and advisory locks behave as
16
+ * they do on node-postgres.
17
+ *
18
+ * The driver is chosen from the URL (`neon.tech` host or an `@ep-`
19
+ * endpoint id) and can be forced with `INTELLIGO_DB_DRIVER=pg |
20
+ * neon-serverless` — for a Neon-compatible proxy, or a self-hosted
21
+ * Postgres whose hostname happens to match.
7
22
  *
8
23
  * The client is initialized lazily on first method access so that
9
24
  * `next build` can statically collect API route metadata without
@@ -11,9 +26,17 @@
11
26
  * for any request that actually touches the DB, so a missing env in
12
27
  * production surfaces loudly on the first query.
13
28
  */
14
- import { drizzle as drizzleNeon } from "drizzle-orm/neon-http";
29
+ import { drizzle as drizzleNeon } from "drizzle-orm/neon-serverless";
15
30
  import { drizzle as drizzlePostgres } from "drizzle-orm/node-postgres";
31
+ export type DbDriver = "pg" | "neon-serverless";
16
32
  type Db = ReturnType<typeof drizzleNeon> | ReturnType<typeof drizzlePostgres>;
33
+ /**
34
+ * Which driver a connection string gets. Pure, so the rule is testable
35
+ * without a database: an explicit `INTELLIGO_DB_DRIVER` wins; otherwise
36
+ * Neon hosts (`neon.tech`) and Neon endpoint ids (`@ep-…`) take the
37
+ * WebSocket driver and everything else takes node-postgres.
38
+ */
39
+ export declare function selectDriver(url: string, override?: string): DbDriver;
17
40
  export declare const db: Db;
18
41
  export {};
19
42
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAMvE,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAkC9E,eAAO,MAAM,EAAE,EAAE,EAMT,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAMvE,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,iBAAiB,CAAC;AAEhD,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAI9E;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAUrE;AAsCD,eAAO,MAAM,EAAE,EAAE,EAMT,CAAC"}
package/dist/db/client.js CHANGED
@@ -1,9 +1,24 @@
1
1
  /**
2
2
  * Database Client
3
3
  *
4
- * Uses different drivers based on environment:
5
- * - Local development: postgres driver (node-postgres)
6
- * - Production (Neon): @neondatabase/serverless driver
4
+ * One Drizzle handle, two drivers:
5
+ *
6
+ * - `pg` (node-postgres) for any ordinary Postgres URL.
7
+ * - `neon-serverless` — Neon's WebSocket driver — for Neon URLs.
8
+ *
9
+ * Neon's HTTP driver (`drizzle-orm/neon-http`) is deliberately not an
10
+ * option. It is one round-trip per statement with no session, so
11
+ * `db.transaction()` throws "No transactions support in neon-http
12
+ * driver" — and quota admission (`pg_advisory_xact_lock` + reservation
13
+ * insert) and usage settlement are transactions. A Neon deployment on
14
+ * the HTTP driver refused every metered request. The WebSocket driver
15
+ * keeps a real session, so transactions and advisory locks behave as
16
+ * they do on node-postgres.
17
+ *
18
+ * The driver is chosen from the URL (`neon.tech` host or an `@ep-`
19
+ * endpoint id) and can be forced with `INTELLIGO_DB_DRIVER=pg |
20
+ * neon-serverless` — for a Neon-compatible proxy, or a self-hosted
21
+ * Postgres whose hostname happens to match.
7
22
  *
8
23
  * The client is initialized lazily on first method access so that
9
24
  * `next build` can statically collect API route metadata without
@@ -11,26 +26,48 @@
11
26
  * for any request that actually touches the DB, so a missing env in
12
27
  * production surfaces loudly on the first query.
13
28
  */
14
- import { drizzle as drizzleNeon } from "drizzle-orm/neon-http";
29
+ import { drizzle as drizzleNeon } from "drizzle-orm/neon-serverless";
15
30
  import { drizzle as drizzlePostgres } from "drizzle-orm/node-postgres";
16
- import { neon } from "@neondatabase/serverless";
31
+ import { Pool as NeonPool, neonConfig } from "@neondatabase/serverless";
17
32
  import pkg from "pg";
18
33
  const { Pool } = pkg;
19
34
  import * as schema from "./schema";
20
35
  let cached = null;
36
+ /**
37
+ * Which driver a connection string gets. Pure, so the rule is testable
38
+ * without a database: an explicit `INTELLIGO_DB_DRIVER` wins; otherwise
39
+ * Neon hosts (`neon.tech`) and Neon endpoint ids (`@ep-…`) take the
40
+ * WebSocket driver and everything else takes node-postgres.
41
+ */
42
+ export function selectDriver(url, override) {
43
+ if (override === "pg" || override === "neon-serverless")
44
+ return override;
45
+ if (override) {
46
+ throw new Error(`INTELLIGO_DB_DRIVER must be "pg" or "neon-serverless", got "${override}". ` +
47
+ `(neon-http is not supported: it cannot run transactions.)`);
48
+ }
49
+ const isNeon = url.includes("neon.tech") || url.includes("@ep-");
50
+ return isNeon ? "neon-serverless" : "pg";
51
+ }
21
52
  function initDb() {
22
53
  const url = process.env.DATABASE_URL;
23
54
  if (!url) {
24
55
  throw new Error("DATABASE_URL is not defined. Please set it in your .env file.");
25
56
  }
26
- const isNeon = url.includes("neon.tech") || url.includes("@ep-");
27
- if (isNeon) {
28
- const sql = neon(url);
29
- console.log("📊 Database: Neon (serverless)");
30
- return drizzleNeon(sql, { schema });
57
+ const driver = selectDriver(url, process.env.INTELLIGO_DB_DRIVER);
58
+ if (driver === "neon-serverless") {
59
+ // The WebSocket driver needs a WebSocket implementation. Node 22+
60
+ // has one globally; older runtimes must install `ws` and assign
61
+ // `neonConfig.webSocketConstructor` themselves before first use.
62
+ if (!neonConfig.webSocketConstructor && typeof WebSocket !== "undefined") {
63
+ neonConfig.webSocketConstructor = WebSocket;
64
+ }
65
+ const pool = new NeonPool({ connectionString: url });
66
+ console.log("📊 Database: Neon (serverless, WebSocket)");
67
+ return drizzleNeon(pool, { schema });
31
68
  }
32
69
  const pool = new Pool({ connectionString: url });
33
- console.log("📊 Database: PostgreSQL (local)");
70
+ console.log("📊 Database: PostgreSQL");
34
71
  return drizzlePostgres(pool, { schema });
35
72
  }
36
73
  function resolveDb() {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,GAAG,MAAM,IAAI,CAAC;AACrB,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;AACrB,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAInC,IAAI,MAAM,GAAc,IAAI,CAAC;AAE7B,SAAS,MAAM;IACb,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEjE,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,eAAe,CAAC,IAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gEAAgE;AAChE,qEAAqE;AACrE,+DAA+D;AAC/D,+DAA+D;AAC/D,MAAM,CAAC,MAAM,EAAE,GAAO,IAAI,KAAK,CAAC,EAAQ,EAAE;IACxC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ;QACzB,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,CAAC;CACF,CAAO,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
@@ -97,7 +97,7 @@ export const creditPurchases = pgTable("credit_purchases", {
97
97
  .notNull()
98
98
  .references(() => organization.id, { onDelete: "cascade" }),
99
99
  amount: integer("amount").notNull(), // cents paid
100
- credits: integer("credits").notNull(), // credits received
100
+ credits: integer("credits").notNull(), // balance units credited (same unit as credit_balances.balance_mnt)
101
101
  stripePaymentIntentId: text("stripe_payment_intent_id"),
102
102
  stripeCheckoutSessionId: text("stripe_checkout_session_id"),
103
103
  status: text("status").notNull().default("pending"), // pending|completed|failed
@@ -1 +1 @@
1
- {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/db/schema/billing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/db/schema/billing.ts"],"names":[],"mappings":"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"}
@@ -1038,17 +1038,15 @@ export declare const userMemoryAudit: import("drizzle-orm/pg-core").PgTableWithC
1038
1038
  dialect: "pg";
1039
1039
  }>;
1040
1040
  /**
1041
- * Background-job queue for fact extraction (Phase F). When a chat
1042
- * session ends the chat handler enqueues the conversation id here;
1043
- * the worker (packages/agents/src/extraction/worker.ts) polls and
1044
- * processes pending rows. Status starts as 'pending', flips to
1041
+ * Background-job queue for fact extraction. When a chat session ends
1042
+ * the chat handler enqueues the conversation id here; a consumer-owned
1043
+ * extraction worker polls and processes pending rows. Status starts as 'pending', flips to
1045
1044
  * 'processing' while the worker holds the row, then 'completed' or
1046
1045
  * 'failed' on exit. Failed rows track attempts so we can retry with
1047
1046
  * exponential backoff and a hard cap.
1048
1047
  *
1049
1048
  * Keeping the queue in Postgres rather than Inngest/QStash for now —
1050
- * launch traffic is small enough that DB polling is sufficient and
1051
- * the doc explicitly calls this out as the V1 design.
1049
+ * launch traffic is small enough that DB polling is sufficient.
1052
1050
  */
1053
1051
  export declare const EXTRACTION_STATUSES: readonly ["pending", "processing", "completed", "failed"];
1054
1052
  export type ExtractionStatus = (typeof EXTRACTION_STATUSES)[number];
@@ -1 +1 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/db/schema/identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/db/schema/identity.ts"],"names":[],"mappings":"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"}
@@ -204,17 +204,15 @@ export const userMemoryAudit = pgTable("user_memory_audit", {
204
204
  // 5. pending_extractions — queue of conversations awaiting fact extraction
205
205
  // ---------------------------------------------------------------------------
206
206
  /**
207
- * Background-job queue for fact extraction (Phase F). When a chat
208
- * session ends the chat handler enqueues the conversation id here;
209
- * the worker (packages/agents/src/extraction/worker.ts) polls and
210
- * processes pending rows. Status starts as 'pending', flips to
207
+ * Background-job queue for fact extraction. When a chat session ends
208
+ * the chat handler enqueues the conversation id here; a consumer-owned
209
+ * extraction worker polls and processes pending rows. Status starts as 'pending', flips to
211
210
  * 'processing' while the worker holds the row, then 'completed' or
212
211
  * 'failed' on exit. Failed rows track attempts so we can retry with
213
212
  * exponential backoff and a hard cap.
214
213
  *
215
214
  * Keeping the queue in Postgres rather than Inngest/QStash for now —
216
- * launch traffic is small enough that DB polling is sufficient and
217
- * the doc explicitly calls this out as the V1 design.
215
+ * launch traffic is small enough that DB polling is sufficient.
218
216
  */
219
217
  export const EXTRACTION_STATUSES = [
220
218
  "pending",
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/db/schema/identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/db/schema/identity.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,QAAQ,CAAC;AAiBvB,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,MAAM,CAAC;AAGrB,cAAc,UAAU,CAAC;AAKzB,cAAc,YAAY,CAAC;AAM3B,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,QAAQ,CAAC;AAWvB,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,MAAM,CAAC;AAGrB,cAAc,UAAU,CAAC;AAKzB,cAAc,YAAY,CAAC;AAM3B,cAAc,OAAO,CAAC"}
@@ -6,19 +6,13 @@
6
6
  */
7
7
  // Auth tables (Better-Auth managed)
8
8
  export * from "./auth";
9
- // Organization/Workspace tables are managed by Better-Auth organization plugin (Phase 10)
10
- // Tables: organization, member, invitation (auto-created by plugin on first API use)
11
- // These tables are NOT in our Drizzle schema — Better-Auth manages them directly.
12
- // Access via Better-Auth API: auth.api.listOrganizations(), auth.api.createInvitation(), etc.
13
- //
14
- // Organization plugin indexes (TECH-02 verified pattern):
15
- // Better-Auth's organization plugin creates these indexes automatically:
16
- // - member.organizationId (workspace member lookup)
17
- // - member.userId (user's memberships lookup)
18
- // - invitation.organizationId (workspace invitations lookup)
19
- // - invitation.email (invited email lookup)
20
- // These indexes are created by Better-Auth when tables are auto-created on first use.
21
- // No manual migration needed — plugin handles all schema management.
9
+ // Organization/workspace tables (organization, member, invitation) are
10
+ // defined in ./auth alongside users/sessions and created by the
11
+ // migration chain like every other table; Better-Auth's organization
12
+ // plugin reads and writes them through the Drizzle adapter. Product
13
+ // code still goes through the Better-Auth API (auth.api.listOrganizations(),
14
+ // auth.api.createInvitation(), …) rather than querying them directly, so
15
+ // membership and role rules stay in one place.
22
16
  // Billing tables (Phase 11)
23
17
  export * from "./billing";
24
18
  // Usage tracking tables (Phase 12)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oCAAoC;AACpC,cAAc,QAAQ,CAAC;AAEvB,0FAA0F;AAC1F,qFAAqF;AACrF,kFAAkF;AAClF,8FAA8F;AAC9F,EAAE;AACF,0DAA0D;AAC1D,yEAAyE;AACzE,oDAAoD;AACpD,8CAA8C;AAC9C,6DAA6D;AAC7D,4CAA4C;AAC5C,sFAAsF;AACtF,qEAAqE;AAErE,4BAA4B;AAC5B,cAAc,WAAW,CAAC;AAE1B,mCAAmC;AACnC,cAAc,SAAS,CAAC;AAExB,iCAAiC;AACjC,cAAc,iBAAiB,CAAC;AAEhC,2BAA2B;AAC3B,cAAc,iBAAiB,CAAC;AAEhC,uBAAuB;AACvB,cAAc,MAAM,CAAC;AAErB,0BAA0B;AAC1B,cAAc,UAAU,CAAC;AAEzB,gDAAgD;AAChD,yDAAyD;AACzD,wEAAwE;AACxE,cAAc,YAAY,CAAC;AAE3B,gDAAgD;AAChD,qDAAqD;AACrD,iEAAiE;AACjE,oBAAoB;AACpB,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oCAAoC;AACpC,cAAc,QAAQ,CAAC;AAEvB,uEAAuE;AACvE,gEAAgE;AAChE,qEAAqE;AACrE,oEAAoE;AACpE,6EAA6E;AAC7E,yEAAyE;AACzE,+CAA+C;AAE/C,4BAA4B;AAC5B,cAAc,WAAW,CAAC;AAE1B,mCAAmC;AACnC,cAAc,SAAS,CAAC;AAExB,iCAAiC;AACjC,cAAc,iBAAiB,CAAC;AAEhC,2BAA2B;AAC3B,cAAc,iBAAiB,CAAC;AAEhC,uBAAuB;AACvB,cAAc,MAAM,CAAC;AAErB,0BAA0B;AAC1B,cAAc,UAAU,CAAC;AAEzB,gDAAgD;AAChD,yDAAyD;AACzD,wEAAwE;AACxE,cAAc,YAAY,CAAC;AAE3B,gDAAgD;AAChD,qDAAqD;AACrD,iEAAiE;AACjE,oBAAoB;AACpB,cAAc,OAAO,CAAC"}
@@ -26,7 +26,7 @@ export async function validateDatabaseConnection() {
26
26
  tablesExist,
27
27
  error: tablesExist
28
28
  ? undefined
29
- : "Auth tables do not exist. Run 'pnpm --filter @intelligo-dev/core db:push' to create them.",
29
+ : "Auth tables do not exist. Run 'intelligo migrate' to apply the framework's migration chain.",
30
30
  };
31
31
  }
32
32
  catch (error) {
@@ -50,8 +50,8 @@ export async function requireDatabaseConnection() {
50
50
  if (!result.tablesExist) {
51
51
  throw new Error(`❌ Database tables do not exist.\n\n` +
52
52
  `Run the following commands to set up the database:\n` +
53
- ` 1. pnpm --filter @intelligo-dev/core db:push\n` +
54
- ` 2. pnpm --filter @intelligo-dev/core db:seed (optional - creates admin user)`);
53
+ ` 1. intelligo migrate (applies the framework's migration chain)\n` +
54
+ ` 2. drizzle-kit migrate (your own tables, if any)`);
55
55
  }
56
56
  console.log("✓ Database connection validated");
57
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/db/validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAQlC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,UAAU,CAAC,CAAC;QAEhC,6BAA6B;QAC7B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;;;;KAKlC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,UAAU,KAAK,CAAC,CAAC;QAErC,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,WAAW;YACX,KAAK,EAAE,WAAW;gBAChB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,2FAA2F;SAChG,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;SACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,MAAM,MAAM,GAAG,MAAM,0BAA0B,EAAE,CAAC;IAElD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,CAAC,KAAK,MAAM;YACjD,sDAAsD;YACtD,oDAAoD,CACvD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,qCAAqC;YACnC,sDAAsD;YACtD,kDAAkD;YAClD,gFAAgF,CACnF,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/db/validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAQlC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,UAAU,CAAC,CAAC;QAEhC,6BAA6B;QAC7B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;;;;KAKlC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,UAAU,KAAK,CAAC,CAAC;QAErC,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,WAAW;YACX,KAAK,EAAE,WAAW;gBAChB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,6FAA6F;SAClG,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;SACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,MAAM,MAAM,GAAG,MAAM,0BAA0B,EAAE,CAAC;IAElD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,CAAC,KAAK,MAAM;YACjD,sDAAsD;YACtD,oDAAoD,CACvD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,qCAAqC;YACnC,sDAAsD;YACtD,sEAAsE;YACtE,oDAAoD,CACvD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AACjD,CAAC"}
@@ -8,7 +8,9 @@
8
8
  *
9
9
  * Better-Auth API isolation guarantees:
10
10
  * - auth.api.listOrganizations() — returns ONLY organizations the authenticated user belongs to
11
- * - auth.api.getFullOrganization() — returns ONLY the active organization (set via session)
11
+ * - auth.api.getFullOrganization({ query: { organizationId } }) — returns that organization
12
+ * only if the caller is a member (FORBIDDEN otherwise); without an id it resolves the
13
+ * session's active organization, or nothing
12
14
  * - auth.api.createInvitation() — requires organizationId from requireWorkspace() (authenticated context)
13
15
  * - auth.api.removeMember() — scoped to the organizationId from requireWorkspace()
14
16
  * - All other org API methods operate on the authenticated user's session context
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-queries.d.ts","sourceRoot":"","sources":["../../src/db/workspace-queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CACzB,iBAAiB,EAAE,QAAQ,EAC3B,WAAW,EAAE,MAAM,GAClB,GAAG,CAEL;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CACjC,iBAAiB,EAAE,QAAQ,EAC3B,WAAW,EAAE,MAAM,EACnB,GAAG,oBAAoB,EAAE,GAAG,EAAE,GAC7B,GAAG,CAEL"}
1
+ {"version":3,"file":"workspace-queries.d.ts","sourceRoot":"","sources":["../../src/db/workspace-queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CACzB,iBAAiB,EAAE,QAAQ,EAC3B,WAAW,EAAE,MAAM,GAClB,GAAG,CAEL;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CACjC,iBAAiB,EAAE,QAAQ,EAC3B,WAAW,EAAE,MAAM,EACnB,GAAG,oBAAoB,EAAE,GAAG,EAAE,GAC7B,GAAG,CAEL"}
@@ -8,7 +8,9 @@
8
8
  *
9
9
  * Better-Auth API isolation guarantees:
10
10
  * - auth.api.listOrganizations() — returns ONLY organizations the authenticated user belongs to
11
- * - auth.api.getFullOrganization() — returns ONLY the active organization (set via session)
11
+ * - auth.api.getFullOrganization({ query: { organizationId } }) — returns that organization
12
+ * only if the caller is a member (FORBIDDEN otherwise); without an id it resolves the
13
+ * session's active organization, or nothing
12
14
  * - auth.api.createInvitation() — requires organizationId from requireWorkspace() (authenticated context)
13
15
  * - auth.api.removeMember() — scoped to the organizationId from requireWorkspace()
14
16
  * - All other org API methods operate on the authenticated user's session context
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-queries.js","sourceRoot":"","sources":["../../src/db/workspace-queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAY,MAAM,aAAa,CAAC;AAGhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CACzB,iBAA2B,EAC3B,WAAmB;IAEnB,OAAO,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,mBAAmB,CACjC,iBAA2B,EAC3B,WAAmB,EACnB,GAAG,oBAA2B;IAE9B,OAAO,GAAG,CAAC,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,EAAE,GAAG,oBAAoB,CAAE,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"workspace-queries.js","sourceRoot":"","sources":["../../src/db/workspace-queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAY,MAAM,aAAa,CAAC;AAGhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CACzB,iBAA2B,EAC3B,WAAmB;IAEnB,OAAO,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,mBAAmB,CACjC,iBAA2B,EAC3B,WAAmB,EACnB,GAAG,oBAA2B;IAE9B,OAAO,GAAG,CAAC,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,EAAE,GAAG,oBAAoB,CAAE,CAAC;AAC3E,CAAC"}
package/dist/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA2EH,wBAAgB,WAAW,IAAI;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CA8CA;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAgBhC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA4EH,wBAAgB,WAAW,IAAI;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CA4DA;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAgBhC"}
package/dist/env.js CHANGED
@@ -15,9 +15,9 @@ const ENV_VARS = [
15
15
  description: "PostgreSQL connection string",
16
16
  },
17
17
  {
18
- name: "AUTH_SECRET",
18
+ name: "BETTER_AUTH_SECRET",
19
19
  required: true,
20
- description: "Better-Auth session encryption key",
20
+ description: "Better-Auth session encryption key (AUTH_SECRET is accepted as a legacy alias)",
21
21
  minLength: 32,
22
22
  },
23
23
  {
@@ -75,7 +75,16 @@ export function validateEnv() {
75
75
  const errors = [];
76
76
  const warnings = [];
77
77
  for (const envVar of ENV_VARS) {
78
- const value = process.env[envVar.name];
78
+ let value = process.env[envVar.name];
79
+ // One canonical name for the auth secret. Better-Auth itself reads
80
+ // BETTER_AUTH_SECRET then AUTH_SECRET; the CLI's doctor, the
81
+ // scaffold and this validator agree on the former.
82
+ if (envVar.name === "BETTER_AUTH_SECRET" &&
83
+ !value &&
84
+ process.env.AUTH_SECRET) {
85
+ value = process.env.AUTH_SECRET;
86
+ warnings.push("AUTH_SECRET is set but BETTER_AUTH_SECRET is not — rename it; AUTH_SECRET is a legacy alias");
87
+ }
79
88
  if (!value || value.trim() === "") {
80
89
  if (envVar.required) {
81
90
  errors.push(`Missing required env var: ${envVar.name} — ${envVar.description}`);
@@ -101,10 +110,11 @@ export function validateEnv() {
101
110
  warnings.push("STRIPE_SECRET_KEY is a test key in production environment");
102
111
  }
103
112
  if (!process.env.CRON_SECRET || process.env.CRON_SECRET.length < 32) {
104
- // Promote to error in production — an unset or weak cron secret
105
- // means the cron endpoints are wide open to anyone who guesses
106
- // the path.
107
- errors.push("CRON_SECRET must be set (≥32 chars) in production for /api/cron/* auth");
113
+ // A warning, not an error: the framework ships no cron route of
114
+ // its own, so a deployment without one has nothing to protect.
115
+ // The maintenance route (`intelligo add maintenance`) refuses to
116
+ // serve without it.
117
+ warnings.push("CRON_SECRET unset or shorter than 32 chars — required by any /api/cron/* route you mount");
108
118
  }
109
119
  }
110
120
  return { valid: errors.length === 0, errors, warnings };
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intelligo-dev/core",
3
- "version": "1.0.0-beta.1",
3
+ "version": "1.0.0-beta.2",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,55 @@
1
+ -- audit_events becomes what its package name promises.
2
+ --
3
+ -- Two gaps between the contract ("append-only who-did-what") and the
4
+ -- table 0036 created:
5
+ -- 1. Nothing at the database level stopped UPDATE/DELETE. The guard
6
+ -- user_memory_audit has had since 0018 (P0001 raise_exception,
7
+ -- PII-free message) is applied here too.
8
+ -- 2. workspace_id cascaded on organization delete, erasing a
9
+ -- workspace's whole trail with the workspace. It is now SET NULL:
10
+ -- the row survives with its actor, action and resource intact.
11
+
12
+ -- The one UPDATE that must pass is the database's own: ON DELETE SET
13
+ -- NULL on workspace_id / actor_id is executed as an UPDATE of this row,
14
+ -- so a trigger that refuses every UPDATE would make a workspace (or a
15
+ -- user) with any audit history undeletable. An update that only clears
16
+ -- one or both of those references, and touches nothing else, is
17
+ -- allowed; every other UPDATE, and every DELETE, is refused.
18
+ CREATE OR REPLACE FUNCTION public.audit_events_block_mutation()
19
+ RETURNS trigger AS $$
20
+ BEGIN
21
+ IF TG_OP = 'UPDATE'
22
+ AND (NEW.workspace_id IS NULL OR NEW.workspace_id = OLD.workspace_id)
23
+ AND (NEW.actor_id IS NULL OR NEW.actor_id = OLD.actor_id)
24
+ AND (NEW.workspace_id IS DISTINCT FROM OLD.workspace_id OR NEW.actor_id IS DISTINCT FROM OLD.actor_id)
25
+ AND NEW.id = OLD.id
26
+ AND NEW.actor_kind = OLD.actor_kind
27
+ AND NEW.action = OLD.action
28
+ AND NEW.resource_kind = OLD.resource_kind
29
+ AND NEW.resource_id IS NOT DISTINCT FROM OLD.resource_id
30
+ AND NEW.outcome = OLD.outcome
31
+ AND NEW.metadata IS NOT DISTINCT FROM OLD.metadata
32
+ AND NEW.created_at = OLD.created_at
33
+ THEN
34
+ RETURN NEW;
35
+ END IF;
36
+ RAISE EXCEPTION 'audit_events is append-only'
37
+ USING ERRCODE = 'P0001', HINT = 'INSERT new audit rows; do not UPDATE or DELETE existing ones.';
38
+ END;
39
+ $$ LANGUAGE plpgsql;
40
+ --> statement-breakpoint
41
+ DROP TRIGGER IF EXISTS audit_events_no_update ON "audit_events";
42
+ --> statement-breakpoint
43
+ CREATE TRIGGER audit_events_no_update
44
+ BEFORE UPDATE ON "audit_events"
45
+ FOR EACH ROW EXECUTE FUNCTION public.audit_events_block_mutation();
46
+ --> statement-breakpoint
47
+ DROP TRIGGER IF EXISTS audit_events_no_delete ON "audit_events";
48
+ --> statement-breakpoint
49
+ CREATE TRIGGER audit_events_no_delete
50
+ BEFORE DELETE ON "audit_events"
51
+ FOR EACH ROW EXECUTE FUNCTION public.audit_events_block_mutation();
52
+ --> statement-breakpoint
53
+ ALTER TABLE "audit_events" DROP CONSTRAINT IF EXISTS "audit_events_workspace_id_organization_id_fk";
54
+ --> statement-breakpoint
55
+ ALTER TABLE "audit_events" ADD CONSTRAINT "audit_events_workspace_id_organization_id_fk" FOREIGN KEY ("workspace_id") REFERENCES "public"."organization"("id") ON DELETE set null ON UPDATE no action;
@@ -0,0 +1,10 @@
1
+ -- sessions.active_organization_id — the workspace a session last
2
+ -- switched to (Better-Auth's organization plugin; @intelligo-dev/auth
3
+ -- reads it for workspace switching). schema/auth.ts has carried the
4
+ -- column for months, but no migration ever created it: every
5
+ -- environment was provisioned by `db:push`, so the gap surfaced only
6
+ -- when a database was built from this chain and the first sign-in
7
+ -- failed inserting a session.
8
+ --
9
+ -- IF NOT EXISTS, because every pushed database already has it.
10
+ ALTER TABLE "sessions" ADD COLUMN IF NOT EXISTS "active_organization_id" text;
@@ -13,6 +13,37 @@ That is how `0032` shipped documenting a unique constraint on a
13
13
  files. `0037` repairs it, and `intelligo doctor` now fails CI if the
14
14
  journal and the directory drift apart again.
15
15
 
16
+ ## In a consumer application
17
+
18
+ This directory ships inside the published package (it is in `files`,
19
+ next to `dist`), and `intelligo migrate` applies it: it resolves the
20
+ chain from `node_modules/@intelligo-dev/core/src/db/migrations`, runs
21
+ drizzle's migrator over it in journal order, and records what it applied
22
+ in the default `drizzle.__drizzle_migrations` table — the same table
23
+ `intelligo migrate --check` reads. On a database that already has the
24
+ framework's tables but no records (one provisioned with `db:push`) it
25
+ refuses and points here; baseline first, below.
26
+
27
+ The tables an application owns are a second chain, kept apart on
28
+ purpose: drizzle-kit applies by timestamp, so a framework migration
29
+ published after the consumer generated one of theirs would be skipped
30
+ silently if the two shared a journal. `intelligo create` scaffolds a
31
+ `drizzle.config.ts` whose `schema` lists only the consumer's files,
32
+ whose `out` is the app's own `./drizzle`, and whose `migrations.table`
33
+ is `__app_migrations`. A consumer schema file may `references()` a
34
+ framework table — drizzle-kit emits the foreign key by name and does
35
+ not try to create the referenced table. The scaffold's scripts:
36
+
37
+ ```
38
+ pnpm db:generate # drizzle-kit generate — your chain
39
+ pnpm db:migrate # intelligo migrate && drizzle-kit migrate
40
+ pnpm db:check # intelligo migrate --check — deploy gate
41
+ ```
42
+
43
+ `drizzle-kit push` has no place in this layout: it diffs the whole
44
+ database against the schema it can see, and the consumer config sees
45
+ only the consumer's tables.
46
+
16
47
  ## Adding a migration
17
48
 
18
49
  Prefer `pnpm --filter @intelligo-dev/core db:generate`, which writes both
@@ -295,6 +295,20 @@
295
295
  "when": 1700000041000,
296
296
  "tag": "0040_ee_audit_chain",
297
297
  "breakpoints": true
298
+ },
299
+ {
300
+ "idx": 42,
301
+ "version": "7",
302
+ "when": 1788096433043,
303
+ "tag": "0041_audit_events_append_only",
304
+ "breakpoints": true
305
+ },
306
+ {
307
+ "idx": 43,
308
+ "version": "7",
309
+ "when": 1788180862360,
310
+ "tag": "0042_sessions_active_organization_id",
311
+ "breakpoints": true
298
312
  }
299
313
  ]
300
314
  }