@hiai-gg/docsmint 0.5.1 → 0.5.3
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/backend/index.js +47 -8
- package/dist/backend-account-runtime-cleanup.js +20 -3
- package/dist/backend-api-key-facade.js +20 -3
- package/dist/backend-pipeline-cancellation.js +20 -3
- package/dist/frontend/{CategoryDialog-DmlX0Z97.js → CategoryDialog-BYAFjX7E.js} +152 -138
- package/dist/frontend/{FolderNode-D3rN3yLV.js → FolderNode-DAAn_T8_.js} +1 -1
- package/dist/frontend/{HiaiDocsExtensionProvider-CMiTXi2J.js → HiaiDocsExtensionProvider-OSn96BBw.js} +1 -1
- package/dist/frontend/SettingsDialog-CyZSOjLE.js +1024 -0
- package/dist/frontend/ShareDialog-BC-Jl6v1.js +257 -0
- package/dist/frontend/{Sidebar-BthP-jOS.js → Sidebar-B-zCJT9i.js} +348 -332
- package/dist/frontend/api/attachments.js +1 -1
- package/dist/frontend/app-shell.js +160 -126
- package/dist/frontend/{attachments-C2DBzU-r.js → attachments-B8AuDjno.js} +8 -5
- package/dist/frontend/components/category-dialog.js +1 -1
- package/dist/frontend/components/editor/document-editor.js +1 -1
- package/dist/frontend/components/folder-node.js +1 -1
- package/dist/frontend/components/save-as-dialog.js +1 -1
- package/dist/frontend/components/settings.js +1 -1
- package/dist/frontend/components/share-dialog.js +1 -1
- package/dist/frontend/components/sidebar.js +1 -1
- package/dist/frontend/{context-KLiM3QQ0.js → context-D0zPFXZ4.js} +2 -0
- package/dist/frontend/dashboard.js +11 -5
- package/dist/frontend/extension.d.ts +3 -2
- package/dist/frontend/extension.js +1 -1
- package/dist/frontend/folder-refresh.js +1 -1
- package/dist/frontend/frontend.css +1 -1
- package/dist/frontend/search.js +593 -575
- package/dist/frontend/shared-document.js +1 -1
- package/dist/frontend/{subfolders-refresh-store.svelte-B2dKVmgz.js → subfolders-refresh-store.svelte-DxP21a1c.js} +1 -0
- package/dist/frontend-ssr/api/attachments.js +1 -1
- package/dist/frontend-ssr/app-shell.js +59 -5
- package/dist/frontend-ssr/assets/{CategoryDialog-DDu37Oub.js → CategoryDialog-BLxVoynx.js} +27 -10
- package/dist/frontend-ssr/assets/{CreateSnapshotDialog-DNAjd4eD.js → CreateSnapshotDialog-b6O0nUVp.js} +1 -1
- package/dist/frontend-ssr/assets/{DatePicker-Cp6Qmgdb.js → DatePicker-D84cJ-Eq.js} +1 -1
- package/dist/frontend-ssr/assets/{FolderNode-CrLWqHJH.js → FolderNode-kmilhDjO.js} +2 -2
- package/dist/frontend-ssr/assets/{HiaiDocsExtensionProvider-B_MrN08c.js → HiaiDocsExtensionProvider-BRKWmcDd.js} +1 -1
- package/dist/frontend-ssr/assets/{SettingsDialog-BymUxBgg.js → SettingsDialog-DVp0OxPO.js} +23 -9
- package/dist/frontend-ssr/assets/ShareDialog-BZd28sg-.js +45 -0
- package/dist/frontend-ssr/assets/{Sidebar-CI8YKbrY.js → Sidebar-CO9LZRPa.js} +39 -12
- package/dist/frontend-ssr/assets/{TagCreateDialog-B7wDbVqG.js → TagCreateDialog-DUPMitlL.js} +1 -1
- package/dist/frontend-ssr/assets/{attachments-CXgatN0B.js → attachments-Cj3fQyUp.js} +11 -4
- package/dist/frontend-ssr/assets/{confirm-dialog-B3C0WeMn.js → confirm-dialog-XuyaL8sr.js} +1 -1
- package/dist/frontend-ssr/assets/{context-BtCMqdVe.js → context-Bi_mO-NS.js} +2 -0
- package/dist/frontend-ssr/assets/{messages-D-auzk9H.js → messages-BAQzILs4.js} +1 -1
- package/dist/frontend-ssr/assets/{subfolders-refresh-store.svelte-DAh4gT16.js → subfolders-refresh-store.svelte-CXHxQWKh.js} +1 -0
- package/dist/frontend-ssr/components/category-dialog.js +1 -1
- package/dist/frontend-ssr/components/create-snapshot-dialog.js +1 -1
- package/dist/frontend-ssr/components/editor/document-editor.js +2 -2
- package/dist/frontend-ssr/components/editor/document-title.js +1 -1
- package/dist/frontend-ssr/components/editor/markdown-toggle.js +1 -1
- package/dist/frontend-ssr/components/folder-node.js +1 -1
- package/dist/frontend-ssr/components/save-as-dialog.js +2 -2
- package/dist/frontend-ssr/components/settings.js +1 -1
- package/dist/frontend-ssr/components/share-dialog.js +1 -1
- package/dist/frontend-ssr/components/sidebar.js +1 -1
- package/dist/frontend-ssr/components/tag-create-dialog.js +1 -1
- package/dist/frontend-ssr/components/version-history.js +2 -2
- package/dist/frontend-ssr/dashboard.js +13 -8
- package/dist/frontend-ssr/extension.js +1 -1
- package/dist/frontend-ssr/folder-refresh.js +1 -1
- package/dist/frontend-ssr/i18n.js +1 -1
- package/dist/frontend-ssr/search.js +55 -36
- package/dist/frontend-ssr/shared-document.js +1 -1
- package/dist/lifecycle-runtime.js +18 -3
- package/dist/types.d.ts +5 -0
- package/package.json +1 -1
- package/packages/cli/src/index.ts +1 -1
- package/packages/db/src/schema.ts +17 -2
- package/packages/mcp-server/src/index.ts +1 -1
- package/dist/frontend/SettingsDialog-DEx1eEZm.js +0 -1016
- package/dist/frontend/ShareDialog-uEf8Ks02.js +0 -166
- package/dist/frontend-ssr/assets/ShareDialog-B82t8oJi.js +0 -56
package/dist/backend/index.js
CHANGED
|
@@ -42724,6 +42724,8 @@ __export(exports_schema, {
|
|
|
42724
42724
|
shareRoleEnum: () => shareRoleEnum,
|
|
42725
42725
|
shareLinks: () => shareLinks,
|
|
42726
42726
|
shareLinkRelations: () => shareLinkRelations,
|
|
42727
|
+
shareGrantStatusEnum: () => shareGrantStatusEnum,
|
|
42728
|
+
shareAccessModeEnum: () => shareAccessModeEnum,
|
|
42727
42729
|
sessions: () => sessions,
|
|
42728
42730
|
pipelineStatusEnum: () => pipelineStatusEnum,
|
|
42729
42731
|
pipelineStageEnum: () => pipelineStageEnum,
|
|
@@ -42754,7 +42756,7 @@ __export(exports_schema, {
|
|
|
42754
42756
|
apiKeyRelations: () => apiKeyRelations,
|
|
42755
42757
|
accounts: () => accounts
|
|
42756
42758
|
});
|
|
42757
|
-
var vector4, tsvector, documentVisibilityEnum, shareRoleEnum, embeddingStatusEnum, pipelineStageEnum, pipelineStatusEnum, lifecycleOperationKindEnum, lifecycleOperationStatusEnum, users, sessions, accounts, verifications, folders, folderRelations, documents, documentRelations, documentPipelineRuns, documentPipelineBatches, tags, tagRelations, categories, categoryRelations, documentTags, documentTagRelations, shareLinks, shareLinkRelations, guestAccess, guestAccessRelations, attachments, attachmentRelations, versions, documentEmbeddings, documentEmbeddingRelations, apiKeys, apiKeyRelations, auditLog, lifecycleOperations, documentCreateOperations, versionRelations;
|
|
42759
|
+
var vector4, tsvector, documentVisibilityEnum, shareRoleEnum, shareAccessModeEnum, shareGrantStatusEnum, embeddingStatusEnum, pipelineStageEnum, pipelineStatusEnum, lifecycleOperationKindEnum, lifecycleOperationStatusEnum, users, sessions, accounts, verifications, folders, folderRelations, documents, documentRelations, documentPipelineRuns, documentPipelineBatches, tags, tagRelations, categories, categoryRelations, documentTags, documentTagRelations, shareLinks, shareLinkRelations, guestAccess, guestAccessRelations, attachments, attachmentRelations, versions, documentEmbeddings, documentEmbeddingRelations, apiKeys, apiKeyRelations, auditLog, lifecycleOperations, documentCreateOperations, versionRelations;
|
|
42758
42760
|
var init_schema2 = __esm(() => {
|
|
42759
42761
|
init_pg_core();
|
|
42760
42762
|
init_drizzle_orm();
|
|
@@ -42778,6 +42780,8 @@ var init_schema2 = __esm(() => {
|
|
|
42778
42780
|
});
|
|
42779
42781
|
documentVisibilityEnum = pgEnum("document_visibility", ["private", "shared", "public"]);
|
|
42780
42782
|
shareRoleEnum = pgEnum("share_role", ["viewer", "commenter", "editor"]);
|
|
42783
|
+
shareAccessModeEnum = pgEnum("share_access_mode", ["public", "restricted"]);
|
|
42784
|
+
shareGrantStatusEnum = pgEnum("share_grant_status", ["pending", "accepted", "revoked"]);
|
|
42781
42785
|
embeddingStatusEnum = pgEnum("embedding_status", [
|
|
42782
42786
|
"pending",
|
|
42783
42787
|
"processing",
|
|
@@ -43069,6 +43073,9 @@ var init_schema2 = __esm(() => {
|
|
|
43069
43073
|
token: text("token").notNull().unique(),
|
|
43070
43074
|
passwordHash: text("password_hash"),
|
|
43071
43075
|
role: shareRoleEnum("role").notNull().default("viewer"),
|
|
43076
|
+
accessMode: shareAccessModeEnum("access_mode").notNull().default("public"),
|
|
43077
|
+
allowPasswordFallback: boolean("allow_password_fallback").notNull().default(false),
|
|
43078
|
+
policyVersion: integer("policy_version").notNull().default(1),
|
|
43072
43079
|
expiresAt: timestamp("expires_at"),
|
|
43073
43080
|
createdBy: uuid("created_by").notNull().references(() => users.id, { onDelete: "cascade" }),
|
|
43074
43081
|
workspaceId: text("workspace_id"),
|
|
@@ -43104,8 +43111,15 @@ var init_schema2 = __esm(() => {
|
|
|
43104
43111
|
shareLinkId: uuid("share_link_id").notNull().references(() => shareLinks.id, { onDelete: "cascade" }),
|
|
43105
43112
|
workspaceId: text("workspace_id"),
|
|
43106
43113
|
guestEmail: text("guest_email").notNull(),
|
|
43107
|
-
|
|
43108
|
-
|
|
43114
|
+
role: shareRoleEnum("role").notNull().default("viewer"),
|
|
43115
|
+
status: shareGrantStatusEnum("status").notNull().default("pending"),
|
|
43116
|
+
grantedAt: timestamp("granted_at").defaultNow().notNull(),
|
|
43117
|
+
acceptedAt: timestamp("accepted_at"),
|
|
43118
|
+
revokedAt: timestamp("revoked_at")
|
|
43119
|
+
}, (table3) => [
|
|
43120
|
+
index("guest_access_share_link_idx").on(table3.shareLinkId),
|
|
43121
|
+
uniqueIndex("guest_access_share_link_email_unique_idx").on(table3.shareLinkId, table3.guestEmail)
|
|
43122
|
+
]);
|
|
43109
43123
|
guestAccessRelations = relations(guestAccess, ({ one }) => ({
|
|
43110
43124
|
shareLink: one(shareLinks, {
|
|
43111
43125
|
fields: [guestAccess.shareLinkId],
|
|
@@ -43121,7 +43135,10 @@ var init_schema2 = __esm(() => {
|
|
|
43121
43135
|
size: bigint("size", { mode: "number" }).notNull(),
|
|
43122
43136
|
storageKey: text("storage_key").notNull(),
|
|
43123
43137
|
createdAt: timestamp("created_at").defaultNow().notNull()
|
|
43124
|
-
}, (table3) => [
|
|
43138
|
+
}, (table3) => [
|
|
43139
|
+
index("attachments_document_id_idx").on(table3.documentId),
|
|
43140
|
+
uniqueIndex("attachments_storage_key_unique").on(table3.storageKey)
|
|
43141
|
+
]);
|
|
43125
43142
|
attachmentRelations = relations(attachments, ({ one }) => ({
|
|
43126
43143
|
document: one(documents, {
|
|
43127
43144
|
fields: [attachments.documentId],
|
|
@@ -194084,7 +194101,7 @@ function contentAccessForExternalContext(ctx) {
|
|
|
194084
194101
|
userId: ctx.userId,
|
|
194085
194102
|
categoryId: null,
|
|
194086
194103
|
permissions,
|
|
194087
|
-
restricted:
|
|
194104
|
+
restricted: false,
|
|
194088
194105
|
externalRole: ctx.actorRole
|
|
194089
194106
|
};
|
|
194090
194107
|
}
|
|
@@ -195878,6 +195895,20 @@ var attachmentRoutes = new Elysia({ prefix: "/api" }).post("/documents/:id/attac
|
|
|
195878
195895
|
set2.status = 400;
|
|
195879
195896
|
return { error: "quotaReservationId is required" };
|
|
195880
195897
|
}
|
|
195898
|
+
const existing = await withTenant(ctx, async (tx) => {
|
|
195899
|
+
const [row] = await tx.select().from(attachments).where(and(eq(attachments.documentId, documentId), eq(attachments.storageKey, key))).limit(1);
|
|
195900
|
+
return row ?? null;
|
|
195901
|
+
});
|
|
195902
|
+
if (existing) {
|
|
195903
|
+
set2.status = 201;
|
|
195904
|
+
return {
|
|
195905
|
+
id: existing.id,
|
|
195906
|
+
filename: existing.filename,
|
|
195907
|
+
mimeType: existing.mimeType,
|
|
195908
|
+
size: existing.size,
|
|
195909
|
+
url: `/api/attachments/${existing.id}/raw`
|
|
195910
|
+
};
|
|
195911
|
+
}
|
|
195881
195912
|
let headOutput;
|
|
195882
195913
|
try {
|
|
195883
195914
|
headOutput = await storage.send(new HeadObjectCommand({ Bucket: BUCKET, Key: key }));
|
|
@@ -195909,14 +195940,21 @@ var attachmentRoutes = new Elysia({ prefix: "/api" }).post("/documents/:id/attac
|
|
|
195909
195940
|
}
|
|
195910
195941
|
try {
|
|
195911
195942
|
const created = await withTenant(ctx, async (tx) => {
|
|
195943
|
+
await tx.execute(sql`SELECT pg_advisory_xact_lock(hashtextextended(${key}, 0))`);
|
|
195944
|
+
const [raced] = await tx.select().from(attachments).where(and(eq(attachments.documentId, documentId), eq(attachments.storageKey, key))).limit(1);
|
|
195945
|
+
if (raced)
|
|
195946
|
+
return raced;
|
|
195912
195947
|
const [row] = await tx.insert(attachments).values({
|
|
195913
195948
|
documentId,
|
|
195914
195949
|
filename,
|
|
195915
195950
|
mimeType: contentType,
|
|
195916
195951
|
size: storedSize,
|
|
195917
195952
|
storageKey: key
|
|
195918
|
-
}).returning();
|
|
195919
|
-
|
|
195953
|
+
}).onConflictDoNothing({ target: attachments.storageKey }).returning();
|
|
195954
|
+
if (row)
|
|
195955
|
+
return row;
|
|
195956
|
+
const [winner] = await tx.select().from(attachments).where(and(eq(attachments.documentId, documentId), eq(attachments.storageKey, key))).limit(1);
|
|
195957
|
+
return winner ?? null;
|
|
195920
195958
|
});
|
|
195921
195959
|
if (!created) {
|
|
195922
195960
|
if (admission && quotaContext && quotaReservationId) {
|
|
@@ -230457,6 +230495,7 @@ async function searchDocuments(ctx, request, adapters = {}) {
|
|
|
230457
230495
|
...expansionModel ? { expansionModel } : {},
|
|
230458
230496
|
graphAttempted,
|
|
230459
230497
|
graphFailed,
|
|
230498
|
+
graphContribution,
|
|
230460
230499
|
confidenceReasons: confidence.reasons
|
|
230461
230500
|
};
|
|
230462
230501
|
return {
|
|
@@ -234240,7 +234279,7 @@ var swaggerConfig = {
|
|
|
234240
234279
|
},
|
|
234241
234280
|
info: {
|
|
234242
234281
|
title: "DocsMint API",
|
|
234243
|
-
version: "0.5.
|
|
234282
|
+
version: "0.5.3",
|
|
234244
234283
|
description: "Self-hosted AI-first documentation platform. Full-text + semantic search, version history, sharing, and folder organization.",
|
|
234245
234284
|
contact: { name: "HiAi-gg", url: "https://github.com/HiAi-gg/docsmint" },
|
|
234246
234285
|
license: {
|
|
@@ -26,6 +26,8 @@ __export(exports_schema, {
|
|
|
26
26
|
shareRoleEnum: () => shareRoleEnum,
|
|
27
27
|
shareLinks: () => shareLinks,
|
|
28
28
|
shareLinkRelations: () => shareLinkRelations,
|
|
29
|
+
shareGrantStatusEnum: () => shareGrantStatusEnum,
|
|
30
|
+
shareAccessModeEnum: () => shareAccessModeEnum,
|
|
29
31
|
sessions: () => sessions,
|
|
30
32
|
pipelineStatusEnum: () => pipelineStatusEnum,
|
|
31
33
|
pipelineStageEnum: () => pipelineStageEnum,
|
|
@@ -78,6 +80,8 @@ var tsvector = customType({
|
|
|
78
80
|
});
|
|
79
81
|
var documentVisibilityEnum = pgEnum("document_visibility", ["private", "shared", "public"]);
|
|
80
82
|
var shareRoleEnum = pgEnum("share_role", ["viewer", "commenter", "editor"]);
|
|
83
|
+
var shareAccessModeEnum = pgEnum("share_access_mode", ["public", "restricted"]);
|
|
84
|
+
var shareGrantStatusEnum = pgEnum("share_grant_status", ["pending", "accepted", "revoked"]);
|
|
81
85
|
var embeddingStatusEnum = pgEnum("embedding_status", [
|
|
82
86
|
"pending",
|
|
83
87
|
"processing",
|
|
@@ -369,6 +373,9 @@ var shareLinks = pgTable("share_links", {
|
|
|
369
373
|
token: text("token").notNull().unique(),
|
|
370
374
|
passwordHash: text("password_hash"),
|
|
371
375
|
role: shareRoleEnum("role").notNull().default("viewer"),
|
|
376
|
+
accessMode: shareAccessModeEnum("access_mode").notNull().default("public"),
|
|
377
|
+
allowPasswordFallback: boolean("allow_password_fallback").notNull().default(false),
|
|
378
|
+
policyVersion: integer("policy_version").notNull().default(1),
|
|
372
379
|
expiresAt: timestamp("expires_at"),
|
|
373
380
|
createdBy: uuid("created_by").notNull().references(() => users.id, { onDelete: "cascade" }),
|
|
374
381
|
workspaceId: text("workspace_id"),
|
|
@@ -404,8 +411,15 @@ var guestAccess = pgTable("guest_access", {
|
|
|
404
411
|
shareLinkId: uuid("share_link_id").notNull().references(() => shareLinks.id, { onDelete: "cascade" }),
|
|
405
412
|
workspaceId: text("workspace_id"),
|
|
406
413
|
guestEmail: text("guest_email").notNull(),
|
|
407
|
-
|
|
408
|
-
|
|
414
|
+
role: shareRoleEnum("role").notNull().default("viewer"),
|
|
415
|
+
status: shareGrantStatusEnum("status").notNull().default("pending"),
|
|
416
|
+
grantedAt: timestamp("granted_at").defaultNow().notNull(),
|
|
417
|
+
acceptedAt: timestamp("accepted_at"),
|
|
418
|
+
revokedAt: timestamp("revoked_at")
|
|
419
|
+
}, (table) => [
|
|
420
|
+
index("guest_access_share_link_idx").on(table.shareLinkId),
|
|
421
|
+
uniqueIndex("guest_access_share_link_email_unique_idx").on(table.shareLinkId, table.guestEmail)
|
|
422
|
+
]);
|
|
409
423
|
var guestAccessRelations = relations(guestAccess, ({ one }) => ({
|
|
410
424
|
shareLink: one(shareLinks, {
|
|
411
425
|
fields: [guestAccess.shareLinkId],
|
|
@@ -421,7 +435,10 @@ var attachments = pgTable("attachments", {
|
|
|
421
435
|
size: bigint("size", { mode: "number" }).notNull(),
|
|
422
436
|
storageKey: text("storage_key").notNull(),
|
|
423
437
|
createdAt: timestamp("created_at").defaultNow().notNull()
|
|
424
|
-
}, (table) => [
|
|
438
|
+
}, (table) => [
|
|
439
|
+
index("attachments_document_id_idx").on(table.documentId),
|
|
440
|
+
uniqueIndex("attachments_storage_key_unique").on(table.storageKey)
|
|
441
|
+
]);
|
|
425
442
|
var attachmentRelations = relations(attachments, ({ one }) => ({
|
|
426
443
|
document: one(documents, {
|
|
427
444
|
fields: [attachments.documentId],
|
|
@@ -26,6 +26,8 @@ __export(exports_schema, {
|
|
|
26
26
|
shareRoleEnum: () => shareRoleEnum,
|
|
27
27
|
shareLinks: () => shareLinks,
|
|
28
28
|
shareLinkRelations: () => shareLinkRelations,
|
|
29
|
+
shareGrantStatusEnum: () => shareGrantStatusEnum,
|
|
30
|
+
shareAccessModeEnum: () => shareAccessModeEnum,
|
|
29
31
|
sessions: () => sessions,
|
|
30
32
|
pipelineStatusEnum: () => pipelineStatusEnum,
|
|
31
33
|
pipelineStageEnum: () => pipelineStageEnum,
|
|
@@ -78,6 +80,8 @@ var tsvector = customType({
|
|
|
78
80
|
});
|
|
79
81
|
var documentVisibilityEnum = pgEnum("document_visibility", ["private", "shared", "public"]);
|
|
80
82
|
var shareRoleEnum = pgEnum("share_role", ["viewer", "commenter", "editor"]);
|
|
83
|
+
var shareAccessModeEnum = pgEnum("share_access_mode", ["public", "restricted"]);
|
|
84
|
+
var shareGrantStatusEnum = pgEnum("share_grant_status", ["pending", "accepted", "revoked"]);
|
|
81
85
|
var embeddingStatusEnum = pgEnum("embedding_status", [
|
|
82
86
|
"pending",
|
|
83
87
|
"processing",
|
|
@@ -369,6 +373,9 @@ var shareLinks = pgTable("share_links", {
|
|
|
369
373
|
token: text("token").notNull().unique(),
|
|
370
374
|
passwordHash: text("password_hash"),
|
|
371
375
|
role: shareRoleEnum("role").notNull().default("viewer"),
|
|
376
|
+
accessMode: shareAccessModeEnum("access_mode").notNull().default("public"),
|
|
377
|
+
allowPasswordFallback: boolean("allow_password_fallback").notNull().default(false),
|
|
378
|
+
policyVersion: integer("policy_version").notNull().default(1),
|
|
372
379
|
expiresAt: timestamp("expires_at"),
|
|
373
380
|
createdBy: uuid("created_by").notNull().references(() => users.id, { onDelete: "cascade" }),
|
|
374
381
|
workspaceId: text("workspace_id"),
|
|
@@ -404,8 +411,15 @@ var guestAccess = pgTable("guest_access", {
|
|
|
404
411
|
shareLinkId: uuid("share_link_id").notNull().references(() => shareLinks.id, { onDelete: "cascade" }),
|
|
405
412
|
workspaceId: text("workspace_id"),
|
|
406
413
|
guestEmail: text("guest_email").notNull(),
|
|
407
|
-
|
|
408
|
-
|
|
414
|
+
role: shareRoleEnum("role").notNull().default("viewer"),
|
|
415
|
+
status: shareGrantStatusEnum("status").notNull().default("pending"),
|
|
416
|
+
grantedAt: timestamp("granted_at").defaultNow().notNull(),
|
|
417
|
+
acceptedAt: timestamp("accepted_at"),
|
|
418
|
+
revokedAt: timestamp("revoked_at")
|
|
419
|
+
}, (table) => [
|
|
420
|
+
index("guest_access_share_link_idx").on(table.shareLinkId),
|
|
421
|
+
uniqueIndex("guest_access_share_link_email_unique_idx").on(table.shareLinkId, table.guestEmail)
|
|
422
|
+
]);
|
|
409
423
|
var guestAccessRelations = relations(guestAccess, ({ one }) => ({
|
|
410
424
|
shareLink: one(shareLinks, {
|
|
411
425
|
fields: [guestAccess.shareLinkId],
|
|
@@ -421,7 +435,10 @@ var attachments = pgTable("attachments", {
|
|
|
421
435
|
size: bigint("size", { mode: "number" }).notNull(),
|
|
422
436
|
storageKey: text("storage_key").notNull(),
|
|
423
437
|
createdAt: timestamp("created_at").defaultNow().notNull()
|
|
424
|
-
}, (table) => [
|
|
438
|
+
}, (table) => [
|
|
439
|
+
index("attachments_document_id_idx").on(table.documentId),
|
|
440
|
+
uniqueIndex("attachments_storage_key_unique").on(table.storageKey)
|
|
441
|
+
]);
|
|
425
442
|
var attachmentRelations = relations(attachments, ({ one }) => ({
|
|
426
443
|
document: one(documents, {
|
|
427
444
|
fields: [attachments.documentId],
|
|
@@ -26,6 +26,8 @@ __export(exports_schema, {
|
|
|
26
26
|
shareRoleEnum: () => shareRoleEnum,
|
|
27
27
|
shareLinks: () => shareLinks,
|
|
28
28
|
shareLinkRelations: () => shareLinkRelations,
|
|
29
|
+
shareGrantStatusEnum: () => shareGrantStatusEnum,
|
|
30
|
+
shareAccessModeEnum: () => shareAccessModeEnum,
|
|
29
31
|
sessions: () => sessions,
|
|
30
32
|
pipelineStatusEnum: () => pipelineStatusEnum,
|
|
31
33
|
pipelineStageEnum: () => pipelineStageEnum,
|
|
@@ -78,6 +80,8 @@ var tsvector = customType({
|
|
|
78
80
|
});
|
|
79
81
|
var documentVisibilityEnum = pgEnum("document_visibility", ["private", "shared", "public"]);
|
|
80
82
|
var shareRoleEnum = pgEnum("share_role", ["viewer", "commenter", "editor"]);
|
|
83
|
+
var shareAccessModeEnum = pgEnum("share_access_mode", ["public", "restricted"]);
|
|
84
|
+
var shareGrantStatusEnum = pgEnum("share_grant_status", ["pending", "accepted", "revoked"]);
|
|
81
85
|
var embeddingStatusEnum = pgEnum("embedding_status", [
|
|
82
86
|
"pending",
|
|
83
87
|
"processing",
|
|
@@ -369,6 +373,9 @@ var shareLinks = pgTable("share_links", {
|
|
|
369
373
|
token: text("token").notNull().unique(),
|
|
370
374
|
passwordHash: text("password_hash"),
|
|
371
375
|
role: shareRoleEnum("role").notNull().default("viewer"),
|
|
376
|
+
accessMode: shareAccessModeEnum("access_mode").notNull().default("public"),
|
|
377
|
+
allowPasswordFallback: boolean("allow_password_fallback").notNull().default(false),
|
|
378
|
+
policyVersion: integer("policy_version").notNull().default(1),
|
|
372
379
|
expiresAt: timestamp("expires_at"),
|
|
373
380
|
createdBy: uuid("created_by").notNull().references(() => users.id, { onDelete: "cascade" }),
|
|
374
381
|
workspaceId: text("workspace_id"),
|
|
@@ -404,8 +411,15 @@ var guestAccess = pgTable("guest_access", {
|
|
|
404
411
|
shareLinkId: uuid("share_link_id").notNull().references(() => shareLinks.id, { onDelete: "cascade" }),
|
|
405
412
|
workspaceId: text("workspace_id"),
|
|
406
413
|
guestEmail: text("guest_email").notNull(),
|
|
407
|
-
|
|
408
|
-
|
|
414
|
+
role: shareRoleEnum("role").notNull().default("viewer"),
|
|
415
|
+
status: shareGrantStatusEnum("status").notNull().default("pending"),
|
|
416
|
+
grantedAt: timestamp("granted_at").defaultNow().notNull(),
|
|
417
|
+
acceptedAt: timestamp("accepted_at"),
|
|
418
|
+
revokedAt: timestamp("revoked_at")
|
|
419
|
+
}, (table) => [
|
|
420
|
+
index("guest_access_share_link_idx").on(table.shareLinkId),
|
|
421
|
+
uniqueIndex("guest_access_share_link_email_unique_idx").on(table.shareLinkId, table.guestEmail)
|
|
422
|
+
]);
|
|
409
423
|
var guestAccessRelations = relations(guestAccess, ({ one }) => ({
|
|
410
424
|
shareLink: one(shareLinks, {
|
|
411
425
|
fields: [guestAccess.shareLinkId],
|
|
@@ -421,7 +435,10 @@ var attachments = pgTable("attachments", {
|
|
|
421
435
|
size: bigint("size", { mode: "number" }).notNull(),
|
|
422
436
|
storageKey: text("storage_key").notNull(),
|
|
423
437
|
createdAt: timestamp("created_at").defaultNow().notNull()
|
|
424
|
-
}, (table) => [
|
|
438
|
+
}, (table) => [
|
|
439
|
+
index("attachments_document_id_idx").on(table.documentId),
|
|
440
|
+
uniqueIndex("attachments_storage_key_unique").on(table.storageKey)
|
|
441
|
+
]);
|
|
425
442
|
var attachmentRelations = relations(attachments, ({ one }) => ({
|
|
426
443
|
document: one(documents, {
|
|
427
444
|
fields: [attachments.documentId],
|