@prenta/core 8.6.1 → 8.7.0
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/CHANGELOG.md +11 -0
- package/dist/api/handlers.d.ts.map +1 -1
- package/dist/api/handlers.js +4 -0
- package/dist/api/handlers.js.map +1 -1
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/route-helpers/auth.d.ts +24 -2
- package/dist/api/route-helpers/auth.d.ts.map +1 -1
- package/dist/api/route-helpers/auth.js +93 -1
- package/dist/api/route-helpers/auth.js.map +1 -1
- package/dist/api/route-helpers.d.ts +1 -1
- package/dist/api/route-helpers.d.ts.map +1 -1
- package/dist/api/route-helpers.js +1 -1
- package/dist/api/route-helpers.js.map +1 -1
- package/dist/api/routes/ai-authoring.d.ts.map +1 -1
- package/dist/api/routes/ai-authoring.js +8 -3
- package/dist/api/routes/ai-authoring.js.map +1 -1
- package/dist/api/routes/forms.d.ts.map +1 -1
- package/dist/api/routes/forms.js +50 -34
- package/dist/api/routes/forms.js.map +1 -1
- package/dist/api/routes/mcp-oauth.d.ts +3 -0
- package/dist/api/routes/mcp-oauth.d.ts.map +1 -0
- package/dist/api/routes/mcp-oauth.js +143 -0
- package/dist/api/routes/mcp-oauth.js.map +1 -0
- package/dist/api/routes/preview.d.ts.map +1 -1
- package/dist/api/routes/preview.js +43 -2
- package/dist/api/routes/preview.js.map +1 -1
- package/dist/api/routes/privacy.d.ts +3 -0
- package/dist/api/routes/privacy.d.ts.map +1 -0
- package/dist/api/routes/privacy.js +44 -0
- package/dist/api/routes/privacy.js.map +1 -0
- package/dist/api/routes/scheduling.d.ts.map +1 -1
- package/dist/api/routes/scheduling.js +4 -1
- package/dist/api/routes/scheduling.js.map +1 -1
- package/dist/api/routes/seo/handlers/audits.d.ts.map +1 -1
- package/dist/api/routes/seo/handlers/audits.js +3 -3
- package/dist/api/routes/seo/handlers/audits.js.map +1 -1
- package/dist/api/routes/seo/handlers/content.d.ts.map +1 -1
- package/dist/api/routes/seo/handlers/content.js +2 -2
- package/dist/api/routes/seo/handlers/content.js.map +1 -1
- package/dist/api/routes/seo/handlers/issue-helpers.d.ts.map +1 -1
- package/dist/api/routes/seo/handlers/issue-helpers.js +2 -2
- package/dist/api/routes/seo/handlers/issue-helpers.js.map +1 -1
- package/dist/api/routes/seo/handlers/issues-fixes.js +3 -3
- package/dist/api/routes/seo/handlers/issues-fixes.js.map +1 -1
- package/dist/api/routes/seo/handlers/links.d.ts.map +1 -1
- package/dist/api/routes/seo/handlers/links.js +6 -6
- package/dist/api/routes/seo/handlers/links.js.map +1 -1
- package/dist/api/routes/seo/handlers/proposals.js +2 -2
- package/dist/api/routes/seo/handlers/proposals.js.map +1 -1
- package/dist/api/routes/seo-public.d.ts.map +1 -1
- package/dist/api/routes/seo-public.js +9 -0
- package/dist/api/routes/seo-public.js.map +1 -1
- package/dist/db/model-types.d.ts +40 -0
- package/dist/db/model-types.d.ts.map +1 -1
- package/dist/forms/delivery.d.ts.map +1 -1
- package/dist/forms/delivery.js +16 -10
- package/dist/forms/delivery.js.map +1 -1
- package/dist/forms/encryption.d.ts +4 -2
- package/dist/forms/encryption.d.ts.map +1 -1
- package/dist/forms/encryption.js +6 -4
- package/dist/forms/encryption.js.map +1 -1
- package/dist/forms/submission.d.ts.map +1 -1
- package/dist/forms/submission.js +17 -10
- package/dist/forms/submission.js.map +1 -1
- package/dist/generated/browser.d.ts +19 -0
- package/dist/generated/client.d.ts +19 -0
- package/dist/generated/internal/class.d.ts +33 -0
- package/dist/generated/internal/class.js +4 -4
- package/dist/generated/internal/prismaNamespace.d.ts +296 -1
- package/dist/generated/internal/prismaNamespace.js +65 -1
- package/dist/generated/internal/prismaNamespaceBrowser.d.ts +70 -0
- package/dist/generated/internal/prismaNamespaceBrowser.js +65 -1
- package/dist/generated/models/McpOauthGrant.d.ts +1577 -0
- package/dist/generated/models/McpOauthGrant.js +1 -0
- package/dist/generated/models/McpOauthRefreshReplay.d.ts +957 -0
- package/dist/generated/models/McpOauthRefreshReplay.js +1 -0
- package/dist/generated/models/McpOauthTransaction.d.ts +1153 -0
- package/dist/generated/models/McpOauthTransaction.js +1 -0
- package/dist/generated/models/User.d.ts +279 -0
- package/dist/generated/models.d.ts +3 -0
- package/dist/mcp/cimd.d.ts +12 -0
- package/dist/mcp/cimd.d.ts.map +1 -0
- package/dist/mcp/cimd.js +67 -0
- package/dist/mcp/cimd.js.map +1 -0
- package/dist/mcp/gate.d.ts +11 -0
- package/dist/mcp/gate.d.ts.map +1 -0
- package/dist/mcp/gate.js +75 -0
- package/dist/mcp/gate.js.map +1 -0
- package/dist/mcp/memory-grant-store.d.ts +5 -0
- package/dist/mcp/memory-grant-store.d.ts.map +1 -0
- package/dist/mcp/memory-grant-store.js +44 -0
- package/dist/mcp/memory-grant-store.js.map +1 -0
- package/dist/mcp/oauth-grants.d.ts +83 -0
- package/dist/mcp/oauth-grants.d.ts.map +1 -0
- package/dist/mcp/oauth-grants.js +129 -0
- package/dist/mcp/oauth-grants.js.map +1 -0
- package/dist/mcp/oauth-http.d.ts +43 -0
- package/dist/mcp/oauth-http.d.ts.map +1 -0
- package/dist/mcp/oauth-http.js +243 -0
- package/dist/mcp/oauth-http.js.map +1 -0
- package/dist/mcp/oauth-token.d.ts +43 -0
- package/dist/mcp/oauth-token.d.ts.map +1 -0
- package/dist/mcp/oauth-token.js +78 -0
- package/dist/mcp/oauth-token.js.map +1 -0
- package/dist/mcp/prisma-store.d.ts +5 -0
- package/dist/mcp/prisma-store.d.ts.map +1 -0
- package/dist/mcp/prisma-store.js +69 -0
- package/dist/mcp/prisma-store.js.map +1 -0
- package/dist/mcp/public.d.ts +5 -0
- package/dist/mcp/public.d.ts.map +1 -0
- package/dist/mcp/public.js +30 -0
- package/dist/mcp/public.js.map +1 -0
- package/dist/mcp/runtime.d.ts +4 -0
- package/dist/mcp/runtime.d.ts.map +1 -0
- package/dist/mcp/runtime.js +46 -0
- package/dist/mcp/runtime.js.map +1 -0
- package/dist/mcp/transactions.d.ts +18 -0
- package/dist/mcp/transactions.d.ts.map +1 -0
- package/dist/mcp/transactions.js +15 -0
- package/dist/mcp/transactions.js.map +1 -0
- package/dist/privacy/phi.d.ts +5 -0
- package/dist/privacy/phi.d.ts.map +1 -0
- package/dist/privacy/phi.js +69 -0
- package/dist/privacy/phi.js.map +1 -0
- package/dist/seo/document-path.d.ts +13 -0
- package/dist/seo/document-path.d.ts.map +1 -1
- package/dist/seo/document-path.js +10 -0
- package/dist/seo/document-path.js.map +1 -1
- package/package.json +3 -3
- package/prisma/migrations/0023_mcp_oauth/migration.sql +40 -0
- package/prisma/migrations/0024_mcp_oauth_transactions/migration.sql +16 -0
- package/prisma/schema.prisma +58 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { getDB } from '../db.js';
|
|
2
|
+
import { errorResponse } from '../api/route-helpers/http.js';
|
|
3
|
+
const SETTINGS_COLLECTION = 'settings';
|
|
4
|
+
/**
|
|
5
|
+
* "Protect health information" — a technical disclosure boundary, not a
|
|
6
|
+
* certification. When on, API keys, MCP, and AI must not receive form
|
|
7
|
+
* submission values. Admin browser sessions still read the inbox.
|
|
8
|
+
*
|
|
9
|
+
* Public submit treats a failed lookup as off so a database blip does not
|
|
10
|
+
* reject a visitor. Disclosure paths fail closed: if the lookup throws, the
|
|
11
|
+
* API key is refused.
|
|
12
|
+
*/
|
|
13
|
+
async function readPhiSafeguardsFlag() {
|
|
14
|
+
const db = getDB();
|
|
15
|
+
const doc = await db.document.findFirst({
|
|
16
|
+
where: { collection: SETTINGS_COLLECTION, deletedAt: null },
|
|
17
|
+
select: { data: true },
|
|
18
|
+
});
|
|
19
|
+
const data = doc?.data;
|
|
20
|
+
if (!data || typeof data !== 'object')
|
|
21
|
+
return false;
|
|
22
|
+
const privacy = data.privacy;
|
|
23
|
+
return privacy?.phiSafeguards === true;
|
|
24
|
+
}
|
|
25
|
+
export async function phiSafeguardsEnabled() {
|
|
26
|
+
try {
|
|
27
|
+
return await readPhiSafeguardsFlag();
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export async function phiDisclosureDenied(session) {
|
|
34
|
+
if (!session.apiKey)
|
|
35
|
+
return null;
|
|
36
|
+
try {
|
|
37
|
+
if (!(await readPhiSafeguardsFlag()))
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return errorResponse('phi_restricted', 403);
|
|
42
|
+
}
|
|
43
|
+
return errorResponse('phi_restricted', 403);
|
|
44
|
+
}
|
|
45
|
+
export async function setPhiSafeguards(enabled, userId) {
|
|
46
|
+
const db = getDB();
|
|
47
|
+
const doc = await db.document.findFirst({
|
|
48
|
+
where: { collection: SETTINGS_COLLECTION, deletedAt: null },
|
|
49
|
+
});
|
|
50
|
+
const current = doc?.data && typeof doc.data === 'object' ? doc.data : {};
|
|
51
|
+
const privacy = current.privacy && typeof current.privacy === 'object'
|
|
52
|
+
? current.privacy
|
|
53
|
+
: {};
|
|
54
|
+
const next = {
|
|
55
|
+
...current,
|
|
56
|
+
privacy: {
|
|
57
|
+
...privacy,
|
|
58
|
+
phiSafeguards: enabled,
|
|
59
|
+
updatedAt: new Date().toISOString(),
|
|
60
|
+
updatedBy: userId,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
if (doc?.id) {
|
|
64
|
+
await db.document.update({ where: { id: doc.id }, data: { data: next } });
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
throw new Error('Settings global is missing');
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=phi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phi.js","sourceRoot":"","sources":["../../src/privacy/phi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAG5D,MAAM,mBAAmB,GAAG,UAAU,CAAA;AAStC;;;;;;;;GAQG;AACH,KAAK,UAAU,qBAAqB;IAClC,MAAM,EAAE,GAAG,KAAK,EAAc,CAAA;IAC9B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,KAAK,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE;QAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;KACvB,CAAC,CAAA;IACF,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,CAAA;IACtB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACnD,MAAM,OAAO,GAAI,IAAkD,CAAC,OAAO,CAAA;IAC3E,OAAO,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI,CAAC;QACH,OAAO,MAAM,qBAAqB,EAAE,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAoB;IAC5D,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAChC,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,qBAAqB,EAAE,CAAC;YAAE,OAAO,IAAI,CAAA;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,aAAa,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAgB,EAAE,MAAc;IACrE,MAAM,EAAE,GAAG,KAAK,EAAc,CAAA;IAC9B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,KAAK,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE;KAC5D,CAAC,CAAA;IACF,MAAM,OAAO,GACX,GAAG,EAAE,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,IAAgC,CAAC,CAAC,CAAC,EAAE,CAAA;IACxF,MAAM,OAAO,GACX,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACpD,CAAC,CAAE,OAAO,CAAC,OAAmC;QAC9C,CAAC,CAAC,EAAE,CAAA;IACR,MAAM,IAAI,GAAG;QACX,GAAG,OAAO;QACV,OAAO,EAAE;YACP,GAAG,OAAO;YACV,aAAa,EAAE,OAAO;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,MAAM;SAClB;KACF,CAAA;IACD,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QACzE,OAAM;IACR,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -58,4 +58,17 @@ export declare function resolveDocumentUrl(params: {
|
|
|
58
58
|
*/
|
|
59
59
|
trailingSlash?: TrailingSlashPolicy | null;
|
|
60
60
|
}): string;
|
|
61
|
+
/**
|
|
62
|
+
* Public URL that opens a draft in the site renderer. The path comes from
|
|
63
|
+
* {@link documentPublicPath}; the token is the `preview` query value the
|
|
64
|
+
* public site already accepts.
|
|
65
|
+
*/
|
|
66
|
+
export declare function documentPreviewUrl(params: {
|
|
67
|
+
siteUrl: string;
|
|
68
|
+
token: string;
|
|
69
|
+
urlPrefix?: string | null;
|
|
70
|
+
slug?: string | null;
|
|
71
|
+
data?: Record<string, unknown> | null;
|
|
72
|
+
path?: string | null;
|
|
73
|
+
}): string;
|
|
61
74
|
//# sourceMappingURL=document-path.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-path.d.ts","sourceRoot":"","sources":["../../src/seo/document-path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEpD,qFAAqF;AACrF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAE9E;AAMD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,mBAA6B,GACpC,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,mBAA6B,GACpC,MAAM,CAYR;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,GAC1B,MAAM,GAAG,IAAI,CAYf;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACrC,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,GAAG,MAAM,CAeT;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACrC,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAC3C,GAAG,MAAM,CAOT"}
|
|
1
|
+
{"version":3,"file":"document-path.d.ts","sourceRoot":"","sources":["../../src/seo/document-path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEpD,qFAAqF;AACrF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAE9E;AAMD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,mBAA6B,GACpC,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,mBAA6B,GACpC,MAAM,CAYR;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,GAC1B,MAAM,GAAG,IAAI,CAYf;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACrC,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,GAAG,MAAM,CAeT;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACrC,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAC3C,GAAG,MAAM,CAOT;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACrC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,GAAG,MAAM,CAIT"}
|
|
@@ -100,4 +100,14 @@ export function resolveDocumentUrl(params) {
|
|
|
100
100
|
return policy === 'always' ? `${base}/` : base;
|
|
101
101
|
return policy === 'always' ? `${base}${path}/` : `${base}${path}`;
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Public URL that opens a draft in the site renderer. The path comes from
|
|
105
|
+
* {@link documentPublicPath}; the token is the `preview` query value the
|
|
106
|
+
* public site already accepts.
|
|
107
|
+
*/
|
|
108
|
+
export function documentPreviewUrl(params) {
|
|
109
|
+
const canonical = resolveDocumentUrl(params);
|
|
110
|
+
const join = canonical.includes('?') ? '&' : '?';
|
|
111
|
+
return `${canonical}${join}preview=${encodeURIComponent(params.token)}`;
|
|
112
|
+
}
|
|
103
113
|
//# sourceMappingURL=document-path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-path.js","sourceRoot":"","sources":["../../src/seo/document-path.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-path.js","sourceRoot":"","sources":["../../src/seo/document-path.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prenta/core",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.7.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
"@prisma/client": "^7.8.0",
|
|
192
192
|
"jose": "^6.2.9",
|
|
193
193
|
"sanitize-html": "^2.17.7",
|
|
194
|
-
"sharp": "^0.35.
|
|
194
|
+
"sharp": "^0.35.5",
|
|
195
195
|
"turndown": "^7.2.4",
|
|
196
196
|
"yjs": "^13.6.0",
|
|
197
197
|
"zod": "^3.23.0",
|
|
@@ -239,7 +239,7 @@
|
|
|
239
239
|
"@vitest/coverage-v8": "4.1.8",
|
|
240
240
|
"dotenv": "^17.3.1",
|
|
241
241
|
"graphql": "^16.13.2",
|
|
242
|
-
"graphql-yoga": "^5.
|
|
242
|
+
"graphql-yoga": "^5.24.4",
|
|
243
243
|
"next": "^16.3.6",
|
|
244
244
|
"pg": "^8.20.0",
|
|
245
245
|
"prisma": "^7.8.0",
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
-- MCP OAuth grants. Codes and refresh tokens are stored as hashes.
|
|
2
|
+
|
|
3
|
+
CREATE TABLE "prenta_mcp_oauth_grants" (
|
|
4
|
+
"id" TEXT NOT NULL,
|
|
5
|
+
"userId" TEXT NOT NULL,
|
|
6
|
+
"clientId" TEXT NOT NULL,
|
|
7
|
+
"redirectUri" TEXT NOT NULL,
|
|
8
|
+
"resource" TEXT NOT NULL,
|
|
9
|
+
"scope" TEXT NOT NULL,
|
|
10
|
+
"codeChallenge" TEXT NOT NULL,
|
|
11
|
+
"codeHash" TEXT,
|
|
12
|
+
"codeExpiresAt" TIMESTAMP(3),
|
|
13
|
+
"codeConsumedAt" TIMESTAMP(3),
|
|
14
|
+
"refreshHash" TEXT,
|
|
15
|
+
"refreshExpiresAt" TIMESTAMP(3),
|
|
16
|
+
"familyId" TEXT NOT NULL,
|
|
17
|
+
"revokedAt" TIMESTAMP(3),
|
|
18
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
19
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
20
|
+
|
|
21
|
+
CONSTRAINT "prenta_mcp_oauth_grants_pkey" PRIMARY KEY ("id")
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
CREATE UNIQUE INDEX "prenta_mcp_oauth_grants_codeHash_key" ON "prenta_mcp_oauth_grants"("codeHash");
|
|
25
|
+
CREATE UNIQUE INDEX "prenta_mcp_oauth_grants_refreshHash_key" ON "prenta_mcp_oauth_grants"("refreshHash");
|
|
26
|
+
CREATE INDEX "prenta_mcp_oauth_grants_userId_idx" ON "prenta_mcp_oauth_grants"("userId");
|
|
27
|
+
CREATE INDEX "prenta_mcp_oauth_grants_familyId_idx" ON "prenta_mcp_oauth_grants"("familyId");
|
|
28
|
+
CREATE INDEX "prenta_mcp_oauth_grants_clientId_idx" ON "prenta_mcp_oauth_grants"("clientId");
|
|
29
|
+
|
|
30
|
+
ALTER TABLE "prenta_mcp_oauth_grants" ADD CONSTRAINT "prenta_mcp_oauth_grants_userId_fkey" FOREIGN KEY ("userId") REFERENCES "prenta_users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
31
|
+
|
|
32
|
+
CREATE TABLE "prenta_mcp_oauth_refresh_replays" (
|
|
33
|
+
"hash" TEXT NOT NULL,
|
|
34
|
+
"familyId" TEXT NOT NULL,
|
|
35
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
36
|
+
|
|
37
|
+
CONSTRAINT "prenta_mcp_oauth_refresh_replays_pkey" PRIMARY KEY ("hash")
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
CREATE INDEX "prenta_mcp_oauth_refresh_replays_familyId_idx" ON "prenta_mcp_oauth_refresh_replays"("familyId");
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
CREATE TABLE "prenta_mcp_oauth_transactions" (
|
|
2
|
+
"id" TEXT NOT NULL,
|
|
3
|
+
"clientId" TEXT NOT NULL,
|
|
4
|
+
"clientName" TEXT NOT NULL,
|
|
5
|
+
"redirectUri" TEXT NOT NULL,
|
|
6
|
+
"resource" TEXT NOT NULL,
|
|
7
|
+
"scope" TEXT NOT NULL,
|
|
8
|
+
"codeChallenge" TEXT NOT NULL,
|
|
9
|
+
"state" TEXT,
|
|
10
|
+
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
11
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
12
|
+
|
|
13
|
+
CONSTRAINT "prenta_mcp_oauth_transactions_pkey" PRIMARY KEY ("id")
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
CREATE INDEX "prenta_mcp_oauth_transactions_expiresAt_idx" ON "prenta_mcp_oauth_transactions"("expiresAt");
|
package/prisma/schema.prisma
CHANGED
|
@@ -121,6 +121,7 @@ model User {
|
|
|
121
121
|
sessions Session[]
|
|
122
122
|
oauthAccounts OAuthAccount[]
|
|
123
123
|
apiKeys ApiKey[]
|
|
124
|
+
mcpOauthGrants McpOauthGrant[]
|
|
124
125
|
documents Document[] @relation("CreatedDocuments")
|
|
125
126
|
updatedDocuments Document[] @relation("UpdatedDocuments")
|
|
126
127
|
versions Version[]
|
|
@@ -1138,3 +1139,60 @@ model Job {
|
|
|
1138
1139
|
@@index([status, runAt])
|
|
1139
1140
|
@@map("prenta_jobs")
|
|
1140
1141
|
}
|
|
1142
|
+
|
|
1143
|
+
/// One MCP OAuth grant. The authorization code and the current refresh token
|
|
1144
|
+
/// are stored only as SHA-256 hashes. `familyId` groups rotations; replaying a
|
|
1145
|
+
/// replaced refresh token revokes every row in the family.
|
|
1146
|
+
model McpOauthGrant {
|
|
1147
|
+
id String @id @default(cuid())
|
|
1148
|
+
userId String
|
|
1149
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
1150
|
+
clientId String
|
|
1151
|
+
redirectUri String
|
|
1152
|
+
resource String
|
|
1153
|
+
scope String
|
|
1154
|
+
codeChallenge String
|
|
1155
|
+
codeHash String? @unique
|
|
1156
|
+
codeExpiresAt DateTime?
|
|
1157
|
+
codeConsumedAt DateTime?
|
|
1158
|
+
refreshHash String? @unique
|
|
1159
|
+
refreshExpiresAt DateTime?
|
|
1160
|
+
familyId String
|
|
1161
|
+
revokedAt DateTime?
|
|
1162
|
+
createdAt DateTime @default(now())
|
|
1163
|
+
updatedAt DateTime @updatedAt
|
|
1164
|
+
|
|
1165
|
+
@@index([userId])
|
|
1166
|
+
@@index([familyId])
|
|
1167
|
+
@@index([clientId])
|
|
1168
|
+
@@map("prenta_mcp_oauth_grants")
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
/// Hashes of refresh tokens that have already been rotated. Presenting one
|
|
1172
|
+
/// revokes the family.
|
|
1173
|
+
model McpOauthRefreshReplay {
|
|
1174
|
+
hash String @id
|
|
1175
|
+
familyId String
|
|
1176
|
+
createdAt DateTime @default(now())
|
|
1177
|
+
|
|
1178
|
+
@@index([familyId])
|
|
1179
|
+
@@map("prenta_mcp_oauth_refresh_replays")
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
/// Pending authorize request, before the person allows or denies it.
|
|
1183
|
+
/// Short-lived. The id is the browser transaction, not a credential.
|
|
1184
|
+
model McpOauthTransaction {
|
|
1185
|
+
id String @id
|
|
1186
|
+
clientId String
|
|
1187
|
+
clientName String
|
|
1188
|
+
redirectUri String
|
|
1189
|
+
resource String
|
|
1190
|
+
scope String
|
|
1191
|
+
codeChallenge String
|
|
1192
|
+
state String?
|
|
1193
|
+
expiresAt DateTime
|
|
1194
|
+
createdAt DateTime @default(now())
|
|
1195
|
+
|
|
1196
|
+
@@index([expiresAt])
|
|
1197
|
+
@@map("prenta_mcp_oauth_transactions")
|
|
1198
|
+
}
|