@intelligo-dev/core 1.0.0-beta.13 → 1.0.0-beta.15
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/schema/billing.d.ts +207 -2
- package/dist/db/schema/billing.d.ts.map +1 -1
- package/dist/db/schema/billing.js +32 -3
- package/dist/db/schema/billing.js.map +1 -1
- package/dist/db/schema/usage.d.ts +20 -2
- package/dist/db/schema/usage.d.ts.map +1 -1
- package/dist/db/schema/usage.js +17 -9
- package/dist/db/schema/usage.js.map +1 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +7 -1
- package/dist/env.js.map +1 -1
- package/dist/identity/index.d.ts +4 -3
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +3 -2
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/service.d.ts +20 -4
- package/dist/identity/service.d.ts.map +1 -1
- package/dist/identity/service.js +78 -3
- package/dist/identity/service.js.map +1 -1
- package/dist/identity/types.d.ts +28 -1
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/notifications/index.d.ts +1 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/types.d.ts +8 -1
- package/dist/notifications/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/db/migrations/0003_local_payments.sql +18 -0
- package/src/db/migrations/0004_usage_subjects.sql +5 -0
- package/src/db/migrations/README.md +31 -2
- package/src/db/migrations/legacy-chain.json +13 -4
- package/src/db/migrations/meta/0003_snapshot.json +4501 -0
- package/src/db/migrations/meta/0004_snapshot.json +4504 -0
- package/src/db/migrations/meta/_journal.json +14 -0
- package/src/db/schema/billing.ts +39 -3
- package/src/db/schema/usage.ts +17 -9
- package/src/env.ts +10 -3
- package/src/identity/index.ts +4 -1
- package/src/identity/service.ts +106 -5
- package/src/identity/types.ts +30 -0
- package/src/notifications/index.ts +5 -1
- package/src/notifications/types.ts +9 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Plans, subscriptions, credit ledgers, purchases
|
|
3
|
-
* Amounts in the credit ledgers are micros of their
|
|
2
|
+
* Plans, subscriptions, credit ledgers, purchases, local payments and
|
|
3
|
+
* Stripe events. Amounts in the credit ledgers are micros of their
|
|
4
|
+
* currency; amounts a buyer paid are minor units of theirs.
|
|
4
5
|
*/
|
|
5
6
|
/**
|
|
6
7
|
* The registered plan catalogue, copied into rows so a subscription can
|
|
@@ -865,6 +866,208 @@ export declare const creditPurchases: import("drizzle-orm/pg-core").PgTableWithC
|
|
|
865
866
|
};
|
|
866
867
|
dialect: "pg";
|
|
867
868
|
}>;
|
|
869
|
+
/**
|
|
870
|
+
* Invoices issued through a registered payment provider (QR-and-poll
|
|
871
|
+
* methods such as QPay, PIX or UPI), one row per invoice. The row is
|
|
872
|
+
* written when the invoice is opened, so settlement knows who pays and
|
|
873
|
+
* what was priced without trusting the browser; `fulfilled_at` is set
|
|
874
|
+
* in the same transaction that grants what was bought, so a payment is
|
|
875
|
+
* granted once however many polls see it paid.
|
|
876
|
+
*/
|
|
877
|
+
export declare const payments: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
878
|
+
name: "payments";
|
|
879
|
+
schema: undefined;
|
|
880
|
+
columns: {
|
|
881
|
+
id: import("drizzle-orm/pg-core").PgColumn<{
|
|
882
|
+
name: "id";
|
|
883
|
+
tableName: "payments";
|
|
884
|
+
dataType: "string";
|
|
885
|
+
columnType: "PgText";
|
|
886
|
+
data: string;
|
|
887
|
+
driverParam: string;
|
|
888
|
+
notNull: true;
|
|
889
|
+
hasDefault: false;
|
|
890
|
+
isPrimaryKey: true;
|
|
891
|
+
isAutoincrement: false;
|
|
892
|
+
hasRuntimeDefault: false;
|
|
893
|
+
enumValues: [string, ...string[]];
|
|
894
|
+
baseColumn: never;
|
|
895
|
+
identity: undefined;
|
|
896
|
+
generated: undefined;
|
|
897
|
+
}, {}, {}>;
|
|
898
|
+
provider: import("drizzle-orm/pg-core").PgColumn<{
|
|
899
|
+
name: "provider";
|
|
900
|
+
tableName: "payments";
|
|
901
|
+
dataType: "string";
|
|
902
|
+
columnType: "PgText";
|
|
903
|
+
data: string;
|
|
904
|
+
driverParam: string;
|
|
905
|
+
notNull: true;
|
|
906
|
+
hasDefault: false;
|
|
907
|
+
isPrimaryKey: false;
|
|
908
|
+
isAutoincrement: false;
|
|
909
|
+
hasRuntimeDefault: false;
|
|
910
|
+
enumValues: [string, ...string[]];
|
|
911
|
+
baseColumn: never;
|
|
912
|
+
identity: undefined;
|
|
913
|
+
generated: undefined;
|
|
914
|
+
}, {}, {}>;
|
|
915
|
+
invoiceId: import("drizzle-orm/pg-core").PgColumn<{
|
|
916
|
+
name: "invoice_id";
|
|
917
|
+
tableName: "payments";
|
|
918
|
+
dataType: "string";
|
|
919
|
+
columnType: "PgText";
|
|
920
|
+
data: string;
|
|
921
|
+
driverParam: string;
|
|
922
|
+
notNull: true;
|
|
923
|
+
hasDefault: false;
|
|
924
|
+
isPrimaryKey: false;
|
|
925
|
+
isAutoincrement: false;
|
|
926
|
+
hasRuntimeDefault: false;
|
|
927
|
+
enumValues: [string, ...string[]];
|
|
928
|
+
baseColumn: never;
|
|
929
|
+
identity: undefined;
|
|
930
|
+
generated: undefined;
|
|
931
|
+
}, {}, {}>;
|
|
932
|
+
workspaceId: import("drizzle-orm/pg-core").PgColumn<{
|
|
933
|
+
name: "workspace_id";
|
|
934
|
+
tableName: "payments";
|
|
935
|
+
dataType: "string";
|
|
936
|
+
columnType: "PgText";
|
|
937
|
+
data: string;
|
|
938
|
+
driverParam: string;
|
|
939
|
+
notNull: true;
|
|
940
|
+
hasDefault: false;
|
|
941
|
+
isPrimaryKey: false;
|
|
942
|
+
isAutoincrement: false;
|
|
943
|
+
hasRuntimeDefault: false;
|
|
944
|
+
enumValues: [string, ...string[]];
|
|
945
|
+
baseColumn: never;
|
|
946
|
+
identity: undefined;
|
|
947
|
+
generated: undefined;
|
|
948
|
+
}, {}, {}>;
|
|
949
|
+
userId: import("drizzle-orm/pg-core").PgColumn<{
|
|
950
|
+
name: "user_id";
|
|
951
|
+
tableName: "payments";
|
|
952
|
+
dataType: "string";
|
|
953
|
+
columnType: "PgText";
|
|
954
|
+
data: string;
|
|
955
|
+
driverParam: string;
|
|
956
|
+
notNull: false;
|
|
957
|
+
hasDefault: false;
|
|
958
|
+
isPrimaryKey: false;
|
|
959
|
+
isAutoincrement: false;
|
|
960
|
+
hasRuntimeDefault: false;
|
|
961
|
+
enumValues: [string, ...string[]];
|
|
962
|
+
baseColumn: never;
|
|
963
|
+
identity: undefined;
|
|
964
|
+
generated: undefined;
|
|
965
|
+
}, {}, {}>;
|
|
966
|
+
reference: import("drizzle-orm/pg-core").PgColumn<{
|
|
967
|
+
name: "reference";
|
|
968
|
+
tableName: "payments";
|
|
969
|
+
dataType: "string";
|
|
970
|
+
columnType: "PgText";
|
|
971
|
+
data: string;
|
|
972
|
+
driverParam: string;
|
|
973
|
+
notNull: true;
|
|
974
|
+
hasDefault: false;
|
|
975
|
+
isPrimaryKey: false;
|
|
976
|
+
isAutoincrement: false;
|
|
977
|
+
hasRuntimeDefault: false;
|
|
978
|
+
enumValues: [string, ...string[]];
|
|
979
|
+
baseColumn: never;
|
|
980
|
+
identity: undefined;
|
|
981
|
+
generated: undefined;
|
|
982
|
+
}, {}, {}>;
|
|
983
|
+
amountMinor: import("drizzle-orm/pg-core").PgColumn<{
|
|
984
|
+
name: "amount_minor";
|
|
985
|
+
tableName: "payments";
|
|
986
|
+
dataType: "number";
|
|
987
|
+
columnType: "PgInteger";
|
|
988
|
+
data: number;
|
|
989
|
+
driverParam: string | number;
|
|
990
|
+
notNull: true;
|
|
991
|
+
hasDefault: false;
|
|
992
|
+
isPrimaryKey: false;
|
|
993
|
+
isAutoincrement: false;
|
|
994
|
+
hasRuntimeDefault: false;
|
|
995
|
+
enumValues: undefined;
|
|
996
|
+
baseColumn: never;
|
|
997
|
+
identity: undefined;
|
|
998
|
+
generated: undefined;
|
|
999
|
+
}, {}, {}>;
|
|
1000
|
+
currency: import("drizzle-orm/pg-core").PgColumn<{
|
|
1001
|
+
name: "currency";
|
|
1002
|
+
tableName: "payments";
|
|
1003
|
+
dataType: "string";
|
|
1004
|
+
columnType: "PgText";
|
|
1005
|
+
data: string;
|
|
1006
|
+
driverParam: string;
|
|
1007
|
+
notNull: true;
|
|
1008
|
+
hasDefault: false;
|
|
1009
|
+
isPrimaryKey: false;
|
|
1010
|
+
isAutoincrement: false;
|
|
1011
|
+
hasRuntimeDefault: false;
|
|
1012
|
+
enumValues: [string, ...string[]];
|
|
1013
|
+
baseColumn: never;
|
|
1014
|
+
identity: undefined;
|
|
1015
|
+
generated: undefined;
|
|
1016
|
+
}, {}, {}>;
|
|
1017
|
+
status: import("drizzle-orm/pg-core").PgColumn<{
|
|
1018
|
+
name: "status";
|
|
1019
|
+
tableName: "payments";
|
|
1020
|
+
dataType: "string";
|
|
1021
|
+
columnType: "PgText";
|
|
1022
|
+
data: string;
|
|
1023
|
+
driverParam: string;
|
|
1024
|
+
notNull: true;
|
|
1025
|
+
hasDefault: true;
|
|
1026
|
+
isPrimaryKey: false;
|
|
1027
|
+
isAutoincrement: false;
|
|
1028
|
+
hasRuntimeDefault: false;
|
|
1029
|
+
enumValues: [string, ...string[]];
|
|
1030
|
+
baseColumn: never;
|
|
1031
|
+
identity: undefined;
|
|
1032
|
+
generated: undefined;
|
|
1033
|
+
}, {}, {}>;
|
|
1034
|
+
fulfilledAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
1035
|
+
name: "fulfilled_at";
|
|
1036
|
+
tableName: "payments";
|
|
1037
|
+
dataType: "date";
|
|
1038
|
+
columnType: "PgTimestamp";
|
|
1039
|
+
data: Date;
|
|
1040
|
+
driverParam: string;
|
|
1041
|
+
notNull: false;
|
|
1042
|
+
hasDefault: false;
|
|
1043
|
+
isPrimaryKey: false;
|
|
1044
|
+
isAutoincrement: false;
|
|
1045
|
+
hasRuntimeDefault: false;
|
|
1046
|
+
enumValues: undefined;
|
|
1047
|
+
baseColumn: never;
|
|
1048
|
+
identity: undefined;
|
|
1049
|
+
generated: undefined;
|
|
1050
|
+
}, {}, {}>;
|
|
1051
|
+
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
1052
|
+
name: "created_at";
|
|
1053
|
+
tableName: "payments";
|
|
1054
|
+
dataType: "date";
|
|
1055
|
+
columnType: "PgTimestamp";
|
|
1056
|
+
data: Date;
|
|
1057
|
+
driverParam: string;
|
|
1058
|
+
notNull: true;
|
|
1059
|
+
hasDefault: true;
|
|
1060
|
+
isPrimaryKey: false;
|
|
1061
|
+
isAutoincrement: false;
|
|
1062
|
+
hasRuntimeDefault: false;
|
|
1063
|
+
enumValues: undefined;
|
|
1064
|
+
baseColumn: never;
|
|
1065
|
+
identity: undefined;
|
|
1066
|
+
generated: undefined;
|
|
1067
|
+
}, {}, {}>;
|
|
1068
|
+
};
|
|
1069
|
+
dialect: "pg";
|
|
1070
|
+
}>;
|
|
868
1071
|
/** Every Stripe event, for idempotent webhook processing and audit. */
|
|
869
1072
|
export declare const financeEvents: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
870
1073
|
name: "finance_events";
|
|
@@ -1219,6 +1422,8 @@ export type CreditBalance = typeof creditBalances.$inferSelect;
|
|
|
1219
1422
|
export type InsertCreditBalance = typeof creditBalances.$inferInsert;
|
|
1220
1423
|
export type CreditPurchase = typeof creditPurchases.$inferSelect;
|
|
1221
1424
|
export type InsertCreditPurchase = typeof creditPurchases.$inferInsert;
|
|
1425
|
+
export type Payment = typeof payments.$inferSelect;
|
|
1426
|
+
export type InsertPayment = typeof payments.$inferInsert;
|
|
1222
1427
|
export type FinanceEvent = typeof financeEvents.$inferSelect;
|
|
1223
1428
|
export type InsertFinanceEvent = typeof financeEvents.$inferInsert;
|
|
1224
1429
|
export type BillingSettings = typeof billingSettings.$inferSelect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../../src/db/schema/billing.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../../src/db/schema/billing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Plans, subscriptions, credit ledgers, purchases
|
|
3
|
-
* Amounts in the credit ledgers are micros of their
|
|
2
|
+
* Plans, subscriptions, credit ledgers, purchases, local payments and
|
|
3
|
+
* Stripe events. Amounts in the credit ledgers are micros of their
|
|
4
|
+
* currency; amounts a buyer paid are minor units of theirs.
|
|
4
5
|
*/
|
|
5
6
|
import { pgTable, text, timestamp, integer, bigint, boolean, index, unique, } from "drizzle-orm/pg-core";
|
|
6
|
-
import { organization } from "./auth.js";
|
|
7
|
+
import { organization, users } from "./auth.js";
|
|
7
8
|
/**
|
|
8
9
|
* The registered plan catalogue, copied into rows so a subscription can
|
|
9
10
|
* reference its plan. The catalogue is the source: the rows are written
|
|
@@ -111,6 +112,34 @@ export const creditPurchases = pgTable("credit_purchases", {
|
|
|
111
112
|
status: text("status").notNull().default("pending"), // pending|completed|failed
|
|
112
113
|
createdAt: timestamp("created_at").notNull().defaultNow(),
|
|
113
114
|
}, (table) => [index("credit_purchases_workspace_id_idx").on(table.workspaceId)]);
|
|
115
|
+
/**
|
|
116
|
+
* Invoices issued through a registered payment provider (QR-and-poll
|
|
117
|
+
* methods such as QPay, PIX or UPI), one row per invoice. The row is
|
|
118
|
+
* written when the invoice is opened, so settlement knows who pays and
|
|
119
|
+
* what was priced without trusting the browser; `fulfilled_at` is set
|
|
120
|
+
* in the same transaction that grants what was bought, so a payment is
|
|
121
|
+
* granted once however many polls see it paid.
|
|
122
|
+
*/
|
|
123
|
+
export const payments = pgTable("payments", {
|
|
124
|
+
id: text("id").primaryKey(),
|
|
125
|
+
/** The PAYMENT_MODE the invoice was opened under; settlement asks the same provider. */
|
|
126
|
+
provider: text("provider").notNull(),
|
|
127
|
+
invoiceId: text("invoice_id").notNull().unique(),
|
|
128
|
+
workspaceId: text("workspace_id")
|
|
129
|
+
.notNull()
|
|
130
|
+
.references(() => organization.id, { onDelete: "cascade" }),
|
|
131
|
+
userId: text("user_id").references(() => users.id, {
|
|
132
|
+
onDelete: "set null",
|
|
133
|
+
}),
|
|
134
|
+
/** What was bought, in the product's words: a plan slug, a bundle id. */
|
|
135
|
+
reference: text("reference").notNull(),
|
|
136
|
+
/** The price, in minor units of `currency`. */
|
|
137
|
+
amountMinor: integer("amount_minor").notNull(),
|
|
138
|
+
currency: text("currency").notNull(),
|
|
139
|
+
status: text("status").notNull().default("pending"), // pending|paid|failed
|
|
140
|
+
fulfilledAt: timestamp("fulfilled_at"),
|
|
141
|
+
createdAt: timestamp("created_at").notNull().defaultNow(),
|
|
142
|
+
}, (table) => [index("payments_workspace_id_idx").on(table.workspaceId)]);
|
|
114
143
|
/** Every Stripe event, for idempotent webhook processing and audit. */
|
|
115
144
|
export const financeEvents = pgTable("finance_events", {
|
|
116
145
|
id: text("id").primaryKey(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/db/schema/billing.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/db/schema/billing.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,7 @@ export declare const usageRecords: import("drizzle-orm/pg-core").PgTableWithColu
|
|
|
51
51
|
columnType: "PgText";
|
|
52
52
|
data: string;
|
|
53
53
|
driverParam: string;
|
|
54
|
-
notNull:
|
|
54
|
+
notNull: false;
|
|
55
55
|
hasDefault: false;
|
|
56
56
|
isPrimaryKey: false;
|
|
57
57
|
isAutoincrement: false;
|
|
@@ -802,7 +802,8 @@ export declare const trialCredits: import("drizzle-orm/pg-core").PgTableWithColu
|
|
|
802
802
|
dialect: "pg";
|
|
803
803
|
}>;
|
|
804
804
|
/**
|
|
805
|
-
* One row per (
|
|
805
|
+
* One row per (subject, endpoint, bucket); a window other than a minute
|
|
806
|
+
* is part of the endpoint key (`export@86400s`). Each request upserts the
|
|
806
807
|
* row and atomically increments `count`, so N concurrent requests observe
|
|
807
808
|
* 1..N and exactly `limit` are admitted. Old buckets are deleted by the
|
|
808
809
|
* billing-maintenance job.
|
|
@@ -896,6 +897,23 @@ export declare const rateLimitEntries: import("drizzle-orm/pg-core").PgTableWith
|
|
|
896
897
|
identity: undefined;
|
|
897
898
|
generated: undefined;
|
|
898
899
|
}, {}, {}>;
|
|
900
|
+
windowSeconds: import("drizzle-orm/pg-core").PgColumn<{
|
|
901
|
+
name: "window_seconds";
|
|
902
|
+
tableName: "rate_limit_entries";
|
|
903
|
+
dataType: "number";
|
|
904
|
+
columnType: "PgInteger";
|
|
905
|
+
data: number;
|
|
906
|
+
driverParam: string | number;
|
|
907
|
+
notNull: true;
|
|
908
|
+
hasDefault: true;
|
|
909
|
+
isPrimaryKey: false;
|
|
910
|
+
isAutoincrement: false;
|
|
911
|
+
hasRuntimeDefault: false;
|
|
912
|
+
enumValues: undefined;
|
|
913
|
+
baseColumn: never;
|
|
914
|
+
identity: undefined;
|
|
915
|
+
generated: undefined;
|
|
916
|
+
}, {}, {}>;
|
|
899
917
|
count: import("drizzle-orm/pg-core").PgColumn<{
|
|
900
918
|
name: "count";
|
|
901
919
|
tableName: "rate_limit_entries";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/db/schema/usage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/db/schema/usage.ts"],"names":[],"mappings":"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"}
|
package/dist/db/schema/usage.js
CHANGED
|
@@ -13,10 +13,12 @@ export const usageRecords = pgTable("usage_records", {
|
|
|
13
13
|
workspaceId: text("workspace_id")
|
|
14
14
|
.notNull()
|
|
15
15
|
.references(() => organization.id, { onDelete: "cascade" }),
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
/** Null for work no signed-in user started: a job, an anonymous request. */
|
|
17
|
+
userId: text("user_id").references(() => users.id, {
|
|
18
|
+
onDelete: "cascade",
|
|
19
|
+
}),
|
|
20
|
+
/** "ai_tokens", "fixed_charge", or "credit" (a refund or goodwill credit, negative). */
|
|
21
|
+
type: text("type").notNull(),
|
|
20
22
|
model: text("model"), // "gpt-4o", "gpt-4o-mini"
|
|
21
23
|
agent: text("agent"), // the product's agent slug
|
|
22
24
|
inputTokens: integer("input_tokens").notNull().default(0),
|
|
@@ -122,20 +124,26 @@ export const trialCredits = pgTable("trial_credits", {
|
|
|
122
124
|
index("trial_credits_normalized_email_idx").on(table.normalizedEmail),
|
|
123
125
|
]);
|
|
124
126
|
/**
|
|
125
|
-
* One row per (
|
|
127
|
+
* One row per (subject, endpoint, bucket); a window other than a minute
|
|
128
|
+
* is part of the endpoint key (`export@86400s`). Each request upserts the
|
|
126
129
|
* row and atomically increments `count`, so N concurrent requests observe
|
|
127
130
|
* 1..N and exactly `limit` are admitted. Old buckets are deleted by the
|
|
128
131
|
* billing-maintenance job.
|
|
129
132
|
*/
|
|
130
133
|
export const rateLimitEntries = pgTable("rate_limit_entries", {
|
|
131
134
|
id: text("id").primaryKey(),
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
+
/**
|
|
136
|
+
* Who is counted: a workspace id, or any key the caller chose (a
|
|
137
|
+
* hashed IP). Not a foreign key, so a subject need not be a
|
|
138
|
+
* workspace; rows expire with their window either way.
|
|
139
|
+
*/
|
|
140
|
+
workspaceId: text("workspace_id").notNull(),
|
|
135
141
|
endpoint: text("endpoint").notNull().default("chat"),
|
|
136
142
|
requestedAt: timestamp("requested_at").notNull().defaultNow(),
|
|
137
|
-
/**
|
|
143
|
+
/** The start of the window this row counts, floored to its length. */
|
|
138
144
|
minuteBucket: timestamp("minute_bucket").notNull(),
|
|
145
|
+
/** The window's length, for cleanup: a row expires when its window has closed. */
|
|
146
|
+
windowSeconds: integer("window_seconds").notNull().default(60),
|
|
139
147
|
/** Requests observed in this bucket — incremented via upsert */
|
|
140
148
|
count: integer("count").notNull().default(1),
|
|
141
149
|
}, (table) => [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/db/schema/usage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,OAAO,EACP,IAAI,EACJ,SAAS,EACT,OAAO,EACP,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,GACN,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CACjC,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
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/db/schema/usage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,OAAO,EACP,IAAI,EACJ,SAAS,EACT,OAAO,EACP,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,GACN,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CACjC,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,4EAA4E;IAC5E,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE;QACjD,QAAQ,EAAE,SAAS;KACpB,CAAC;IACF,wFAAwF;IACxF,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,0BAA0B;IAChD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,2BAA2B;IACjD,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SACnE,OAAO,EAAE;SACT,OAAO,CAAC,CAAC,CAAC;IACb,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,aAAa,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SACzD,OAAO,EAAE;SACT,OAAO,CAAC,CAAC,CAAC;IACb,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SACxD,OAAO,EAAE;SACT,OAAO,CAAC,CAAC,CAAC;IACb,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnD,6CAA6C;IAC7C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAC7B;;;;;OAKG;IACH,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;IACjC,4DAA4D;IAC5D,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACvC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,kCAAkC;IAC9D,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC5D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;IAC7D,KAAK,CAAC,yCAAyC,CAAC,CAAC,EAAE,CACjD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,UAAU,CACjB;IACD,KAAK,CAAC,kCAAkC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC;IAC3E,KAAK,CAAC,mCAAmC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;IACnE,KAAK,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;CAC9D,CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CACjC,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,WAAW,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE;IAChD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC5C,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,qEAAqE;IACrE,mBAAmB,EAAE,MAAM,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SACrE,OAAO,EAAE;SACT,OAAO,CAAC,CAAC,CAAC;IACb,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnD,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,MAAM,CAAC,uCAAuC,CAAC,CAAC,EAAE,CAChD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,CAClB;IACD,KAAK,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;CAC9D,CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CACjC,eAAe,EACf;IACE,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,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACpE,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACxE,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SACxD,OAAO,EAAE;SACT,OAAO,CAAC,CAAC,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,eAAe,EAAE,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC5D,OAAO,EAAE;SACT,OAAO,CAAC,CAAC,CAAC;IACb,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnD,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,oCAAoC;IACxF,aAAa,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACjE,YAAY,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,4BAA4B;IACvE,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC;IACpC,WAAW,EAAE,SAAS,CAAC,cAAc,CAAC;IACtC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC;IAClC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACxC;;;OAGG;IACH,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC;CAC1C,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC;IACtE,KAAK,CAAC,oCAAoC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;CACtE,CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CACrC,oBAAoB,EACpB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B;;;;OAIG;IACH,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE;IAC3C,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACpD,WAAW,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IAC7D,sEAAsE;IACtE,YAAY,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE;IAClD,kFAAkF;IAClF,aAAa,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,gEAAgE;IAChE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CAC7C,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,+BAA+B,CAAC,CAAC,EAAE,CACvC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,WAAW,CAClB;IACD,MAAM,CAAC,sCAAsC,CAAC,CAAC,EAAE,CAC/C,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,YAAY,CACnB;CACF,CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CACxC,sBAAsB,EACtB;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,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,gFAAgF;IAC9G,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,8CAA8C;IACvF,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACnD,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,sBAAsB;IAC7E,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,qCAAqC;CAClE,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,MAAM,CAAC,mCAAmC,CAAC,CAAC,EAAE,CAC5C,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CAChB;IACD,KAAK,CAAC,uCAAuC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;CACrE,CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAC/B,aAAa,EACb;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;SACpB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtD,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,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,wBAAwB;IACtE;;;;OAIG;IACH,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,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,yBAAyB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACjD,KAAK,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;IAC3D,qEAAqE;IACrE,kEAAkE;IAClE,MAAM,CAAC,mCAAmC,CAAC,CAAC,EAAE,CAC5C,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,WAAW,CAClB;CACF,CACF,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;;;;GAIG;AAmEH,wBAAgB,WAAW,IAAI;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmEH,wBAAgB,WAAW,IAAI;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAyFA;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAgBhC"}
|
package/dist/env.js
CHANGED
|
@@ -60,6 +60,7 @@ const ENV_VARS = [
|
|
|
60
60
|
export function validateEnv() {
|
|
61
61
|
const errors = [];
|
|
62
62
|
const warnings = [];
|
|
63
|
+
const unsetOptional = [];
|
|
63
64
|
for (const envVar of ENV_VARS) {
|
|
64
65
|
let value = process.env[envVar.name];
|
|
65
66
|
// Better-Auth reads BETTER_AUTH_SECRET then AUTH_SECRET; the CLI, the
|
|
@@ -75,7 +76,7 @@ export function validateEnv() {
|
|
|
75
76
|
errors.push(`Missing required env var: ${envVar.name} — ${envVar.description}`);
|
|
76
77
|
}
|
|
77
78
|
else {
|
|
78
|
-
|
|
79
|
+
unsetOptional.push(envVar.name);
|
|
79
80
|
}
|
|
80
81
|
continue;
|
|
81
82
|
}
|
|
@@ -89,6 +90,11 @@ export function validateEnv() {
|
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
}
|
|
93
|
+
// One line for all of them: each is a feature left off, which is the
|
|
94
|
+
// point of its being optional, not a fault to repeat on every boot.
|
|
95
|
+
if (unsetOptional.length > 0) {
|
|
96
|
+
warnings.push(`Optional env vars not set, their features stay off: ${unsetOptional.join(", ")}`);
|
|
97
|
+
}
|
|
92
98
|
// Resend rejects a send without a sender on a verified domain, and the
|
|
93
99
|
// framework has no domain of its own to fall back on. Loops takes the
|
|
94
100
|
// sender from each template, so only Resend is checked.
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,uEAAuE;AACvE,wEAAwE;AACxE,kEAAkE;AAClE,MAAM,QAAQ,GAAa;IACzB;QACE,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,8BAA8B;KAC5C;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,gFAAgF;QAClF,SAAS,EAAE,EAAE;KACd;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,6CAA6C;KAC3D;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,mCAAmC;KACjD;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,iCAAiC;KAC/C;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,iCAAiC;KAC/C;IACD;QACE,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,KAAK;QACf,WAAW,EACT,+EAA+E;KAClF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,8DAA8D;KAC5E;IACD,wEAAwE;IACxE,gEAAgE;IAChE;QACE,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,2CAA2C;QACxD,SAAS,EAAE,EAAE;KACd;CACF,CAAC;AAEF,MAAM,UAAU,WAAW;IAKzB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|
package/dist/identity/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Privacy-facing reads and mutations over the user identity graph: fact
|
|
3
|
-
* listing and deletion,
|
|
3
|
+
* listing and deletion, the profile snapshot's write, full-identity
|
|
4
|
+
* export, and the memory-audit trail.
|
|
4
5
|
*/
|
|
5
|
-
export { listFacts, deleteFact, exportIdentity, getAuditTrail, } from "./service.js";
|
|
6
|
+
export { listFacts, deleteFact, saveProfileSnapshot, exportIdentity, getAuditTrail, } from "./service.js";
|
|
6
7
|
export { IdentityServiceError, isIdentityServiceError, type IdentityServiceErrorCode, } from "./errors.js";
|
|
7
|
-
export type { IdentityActor, IdentityExport, UserFact, UserMemory, UserProfileSnapshot, UserMemoryAuditRow, } from "./types.js";
|
|
8
|
+
export type { IdentityActor, IdentityExport, SaveProfileSnapshotInput, UserFact, UserMemory, UserProfileSnapshot, UserMemoryAuditRow, } from "./types.js";
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,SAAS,CAAC"}
|
package/dist/identity/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Privacy-facing reads and mutations over the user identity graph: fact
|
|
3
|
-
* listing and deletion,
|
|
3
|
+
* listing and deletion, the profile snapshot's write, full-identity
|
|
4
|
+
* export, and the memory-audit trail.
|
|
4
5
|
*/
|
|
5
|
-
export { listFacts, deleteFact, exportIdentity, getAuditTrail, } from "./service.js";
|
|
6
|
+
export { listFacts, deleteFact, saveProfileSnapshot, exportIdentity, getAuditTrail, } from "./service.js";
|
|
6
7
|
export { IdentityServiceError, isIdentityServiceError, } from "./errors.js";
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GAEvB,MAAM,UAAU,CAAC"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Server-only reads and mutations over the user identity graph: fact
|
|
3
|
-
* listing and deletion, a full data export,
|
|
3
|
+
* listing and deletion, the profile snapshot's write, a full data export,
|
|
4
|
+
* and the memory-audit trail.
|
|
4
5
|
*
|
|
5
6
|
* `deleteFact` does not touch the cached profile snapshot; profile synthesis
|
|
6
|
-
* is the product's AI code, so a caller that owns it re-triggers it
|
|
7
|
+
* is the product's AI code, so a caller that owns it re-triggers it and
|
|
8
|
+
* stores the result with `saveProfileSnapshot`.
|
|
7
9
|
*
|
|
8
10
|
* Callers pass a resolved actor (workspaceId, userId); core cannot depend on
|
|
9
11
|
* `@intelligo-dev/auth`. Every query filters by both ids. Every mutation
|
|
10
12
|
* writes a `user_memory_audit` row. Failures throw `IdentityServiceError`.
|
|
11
13
|
*/
|
|
12
|
-
import type { UserFact, UserMemoryAuditRow } from "../db/schema/index.js";
|
|
13
|
-
import type { IdentityActor, IdentityExport } from "./types.js";
|
|
14
|
+
import type { UserFact, UserMemoryAuditRow, UserProfileSnapshot } from "../db/schema/index.js";
|
|
15
|
+
import type { IdentityActor, IdentityExport, SaveProfileSnapshotInput } from "./types.js";
|
|
14
16
|
/** List the actor's facts, most important and most confident first. */
|
|
15
17
|
export declare function listFacts(actor: IdentityActor): Promise<UserFact[]>;
|
|
16
18
|
/**
|
|
@@ -33,4 +35,18 @@ export declare function deleteFact(actor: IdentityActor, factId: string): Promis
|
|
|
33
35
|
* audit row (action "export").
|
|
34
36
|
*/
|
|
35
37
|
export declare function exportIdentity(actor: IdentityActor): Promise<IdentityExport>;
|
|
38
|
+
/**
|
|
39
|
+
* Store the actor's synthesized profile — one row per user per workspace,
|
|
40
|
+
* inserted on the first synthesis and replaced on every later one. The
|
|
41
|
+
* version is bumped in the same statement (`ON CONFLICT … version + 1`),
|
|
42
|
+
* so two syntheses racing each other get two versions rather than one
|
|
43
|
+
* overwriting the other's number; it starts at 1.
|
|
44
|
+
*
|
|
45
|
+
* A field left `undefined` keeps what the row holds (null on insert); an
|
|
46
|
+
* explicit `null` clears it. `synthesizedAt` defaults to now. Records an
|
|
47
|
+
* audit row (`snapshot`, `create` or `update`) in the same transaction,
|
|
48
|
+
* attributed to `input.actorKind` — `system_job` unless the caller says
|
|
49
|
+
* otherwise. Throws `invalid_input` for an empty summary.
|
|
50
|
+
*/
|
|
51
|
+
export declare function saveProfileSnapshot(actor: IdentityActor, input: SaveProfileSnapshotInput): Promise<UserProfileSnapshot>;
|
|
36
52
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/identity/service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/identity/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACzB,MAAM,SAAS,CAAC;AA4BjB,uEAAuE;AACvE,wBAAsB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAWzE;AAID;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAqB/B;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,cAAc,CAAC,CA+DzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAkE9B"}
|