@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.
- package/dist/db/client.d.ts +27 -4
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +48 -11
- package/dist/db/client.js.map +1 -1
- package/dist/db/schema/billing.js +1 -1
- package/dist/db/schema/billing.js.map +1 -1
- package/dist/db/schema/identity.d.ts +4 -6
- package/dist/db/schema/identity.d.ts.map +1 -1
- package/dist/db/schema/identity.js +4 -6
- package/dist/db/schema/identity.js.map +1 -1
- package/dist/db/schema/index.d.ts.map +1 -1
- package/dist/db/schema/index.js +7 -13
- package/dist/db/schema/index.js.map +1 -1
- package/dist/db/validate.js +3 -3
- package/dist/db/validate.js.map +1 -1
- package/dist/db/workspace-queries.d.ts +3 -1
- package/dist/db/workspace-queries.d.ts.map +1 -1
- package/dist/db/workspace-queries.js +3 -1
- package/dist/db/workspace-queries.js.map +1 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +17 -7
- package/dist/env.js.map +1 -1
- package/package.json +1 -1
- package/src/db/migrations/0041_audit_events_append_only.sql +55 -0
- package/src/db/migrations/0042_sessions_active_organization_id.sql +10 -0
- package/src/db/migrations/README.md +31 -0
- package/src/db/migrations/meta/_journal.json +14 -0
package/dist/db/client.d.ts
CHANGED
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Database Client
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
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-
|
|
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
|
package/dist/db/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA
|
|
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
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
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-
|
|
29
|
+
import { drizzle as drizzleNeon } from "drizzle-orm/neon-serverless";
|
|
15
30
|
import { drizzle as drizzlePostgres } from "drizzle-orm/node-postgres";
|
|
16
|
-
import {
|
|
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
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
|
70
|
+
console.log("📊 Database: PostgreSQL");
|
|
34
71
|
return drizzlePostgres(pool, { schema });
|
|
35
72
|
}
|
|
36
73
|
function resolveDb() {
|
package/dist/db/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA
|
|
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(), //
|
|
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":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,OAAO,EACP,IAAI,EACJ,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,GACP,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE;IACpC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IACrC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;IAChC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,oBAAoB;IACtE,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ;IACxD,oBAAoB,EAAE,IAAI,CAAC,yBAAyB,CAAC;IACrD,mBAAmB,EAAE,IAAI,CAAC,wBAAwB,CAAC;IACnD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,oBAAoB;IAC1D,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,6EAA6E;IAC/G,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtD,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAClC,eAAe,EACf;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;SAC9B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC7D,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;SACpB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvD,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC;IAC5C,oBAAoB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,EAAE;IAC7D,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,+CAA+C;IACnG,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,sBAAsB;IAC3F,kBAAkB,EAAE,SAAS,CAAC,sBAAsB,CAAC;IACrD,gBAAgB,EAAE,SAAS,CAAC,oBAAoB,CAAC;IACjD,iBAAiB,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3E,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;IAC7D,MAAM,CAAC,mCAAmC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;CAClE,CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE;IACvD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;SAC9B,OAAO,EAAE;SACT,MAAM,EAAE;SACR,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC7D,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,0BAA0B;IAC5E,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,iBAAiB,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE;IACzD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,4CAA4C;IAC5C,YAAY,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChE,8EAA8E;IAC9E,kBAAkB,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,cAAc;IAC1F,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CACpC,kBAAkB,EAClB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;SAC9B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC7D,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,aAAa;IAClD,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,oEAAoE;IAC3G,qBAAqB,EAAE,IAAI,CAAC,0BAA0B,CAAC;IACvD,uBAAuB,EAAE,IAAI,CAAC,4BAA4B,CAAC;IAC3D,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,2BAA2B;IAChF,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAC9E,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;IACrD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;QAClE,QAAQ,EAAE,UAAU;KACrB,CAAC;IACF,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IACzD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,qDAAqD;IACnF,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ;IACnC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,cAAc;IAC1C,WAAW,EAAE,SAAS,CAAC,cAAc,CAAC;IACtC,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CACvC,qBAAqB,EACrB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;SAC9B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC7D,kEAAkE;IAClE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IAChD,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE;IAChD,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,mBAAmB;IACvE,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC5C,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC;CACnC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,gCAAgC,CAAC,CAAC,EAAE,CACxC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,CAChB;CACF,CACF,CAAC"}
|
|
@@ -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
|
|
1042
|
-
*
|
|
1043
|
-
*
|
|
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
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAoBH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,+GAUvB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,sFAK/B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAClC,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCrB,CAAC;AAMF,eAAO,MAAM,iBAAiB,kHAQpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCxB,CAAC;AAMF,eAAO,MAAM,yBAAyB,sEAK5B,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiChC,CAAC;AAMF,eAAO,MAAM,kBAAkB,yCAA0C,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,eAAO,MAAM,aAAa,2DAMhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,iBAAiB,mDAKpB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B3B,CAAC;AAMF
|
|
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
|
|
208
|
-
*
|
|
209
|
-
*
|
|
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
|
|
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;
|
|
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"}
|
package/dist/db/schema/index.js
CHANGED
|
@@ -6,19 +6,13 @@
|
|
|
6
6
|
*/
|
|
7
7
|
// Auth tables (Better-Auth managed)
|
|
8
8
|
export * from "./auth";
|
|
9
|
-
// Organization/
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
//
|
|
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,
|
|
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"}
|
package/dist/db/validate.js
CHANGED
|
@@ -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 '
|
|
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.
|
|
54
|
-
` 2.
|
|
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
|
}
|
package/dist/db/validate.js.map
CHANGED
|
@@ -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,
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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;
|
|
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: "
|
|
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
|
-
|
|
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
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
|
|
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":"AAAA;;;;;;;;;GASG;AAUH,MAAM,QAAQ,GAAa;IACzB;QACE,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,8BAA8B;KAC5C;IACD;QACE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -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
|
}
|