@humaan/payload-plugin-ai-assistant 0.0.0-stage → 0.1.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/README.md +277 -2
- package/dist/admin/AiAssistantControl.d.ts +11 -0
- package/dist/admin/AiAssistantControl.js +31 -0
- package/dist/admin/AiAssistantControl.js.map +1 -0
- package/dist/admin/AiAssistantPanel.d.ts +10 -0
- package/dist/admin/AiAssistantPanel.js +208 -0
- package/dist/admin/AiAssistantPanel.js.map +1 -0
- package/dist/admin/AiAssistantPanel.module.scss +689 -0
- package/dist/admin/AiSourceSwitch.d.ts +13 -0
- package/dist/admin/AiSourceSwitch.js +14 -0
- package/dist/admin/AiSourceSwitch.js.map +1 -0
- package/dist/admin/BudgetField.d.ts +8 -0
- package/dist/admin/BudgetField.js +145 -0
- package/dist/admin/BudgetField.js.map +1 -0
- package/dist/admin/BudgetField.module.scss +47 -0
- package/dist/admin/Conversation.d.ts +12 -0
- package/dist/admin/Conversation.js +469 -0
- package/dist/admin/Conversation.js.map +1 -0
- package/dist/admin/Markdown.d.ts +9 -0
- package/dist/admin/Markdown.js +63 -0
- package/dist/admin/Markdown.js.map +1 -0
- package/dist/admin/PageContextBridge.d.ts +5 -0
- package/dist/admin/PageContextBridge.js +72 -0
- package/dist/admin/PageContextBridge.js.map +1 -0
- package/dist/admin/Pill.d.ts +11 -0
- package/dist/admin/Pill.js +27 -0
- package/dist/admin/Pill.js.map +1 -0
- package/dist/admin/PlanCard.d.ts +14 -0
- package/dist/admin/PlanCard.js +465 -0
- package/dist/admin/PlanCard.js.map +1 -0
- package/dist/admin/SettingsAlerts.d.ts +7 -0
- package/dist/admin/SettingsAlerts.js +37 -0
- package/dist/admin/SettingsAlerts.js.map +1 -0
- package/dist/admin/UsageSummary.d.ts +11 -0
- package/dist/admin/UsageSummary.js +129 -0
- package/dist/admin/UsageSummary.js.map +1 -0
- package/dist/admin/attachmentUpload.d.ts +25 -0
- package/dist/admin/attachmentUpload.js +76 -0
- package/dist/admin/attachmentUpload.js.map +1 -0
- package/dist/admin/openDocument.d.ts +13 -0
- package/dist/admin/openDocument.js +34 -0
- package/dist/admin/openDocument.js.map +1 -0
- package/dist/admin/percent.d.ts +10 -0
- package/dist/admin/percent.js +21 -0
- package/dist/admin/percent.js.map +1 -0
- package/dist/admin/threads.d.ts +21 -0
- package/dist/admin/threads.js +92 -0
- package/dist/admin/threads.js.map +1 -0
- package/dist/admin/toolSteps.d.ts +12 -0
- package/dist/admin/toolSteps.js +57 -0
- package/dist/admin/toolSteps.js.map +1 -0
- package/dist/admin/transport.d.ts +24 -0
- package/dist/admin/transport.js +75 -0
- package/dist/admin/transport.js.map +1 -0
- package/dist/admin/useAttachments.d.ts +32 -0
- package/dist/admin/useAttachments.js +91 -0
- package/dist/admin/useAttachments.js.map +1 -0
- package/dist/admin/useEntityLabel.d.ts +3 -0
- package/dist/admin/useEntityLabel.js +23 -0
- package/dist/admin/useEntityLabel.js.map +1 -0
- package/dist/attachments/collection.d.ts +15 -0
- package/dist/attachments/collection.js +90 -0
- package/dist/attachments/collection.js.map +1 -0
- package/dist/attachments/conversation.d.ts +25 -0
- package/dist/attachments/conversation.js +105 -0
- package/dist/attachments/conversation.js.map +1 -0
- package/dist/attachments/rules.d.ts +9 -0
- package/dist/attachments/rules.js +17 -0
- package/dist/attachments/rules.js.map +1 -0
- package/dist/attachments/store.d.ts +27 -0
- package/dist/attachments/store.js +187 -0
- package/dist/attachments/store.js.map +1 -0
- package/dist/billing.d.ts +60 -0
- package/dist/billing.js +116 -0
- package/dist/billing.js.map +1 -0
- package/dist/chat/history.d.ts +37 -0
- package/dist/chat/history.js +165 -0
- package/dist/chat/history.js.map +1 -0
- package/dist/chat/messages.d.ts +5 -0
- package/dist/chat/messages.js +3 -0
- package/dist/chat/messages.js.map +1 -0
- package/dist/chat/threads.d.ts +33 -0
- package/dist/chat/threads.js +77 -0
- package/dist/chat/threads.js.map +1 -0
- package/dist/chat/tools.d.ts +76 -0
- package/dist/chat/tools.js +596 -0
- package/dist/chat/tools.js.map +1 -0
- package/dist/chat/usage.d.ts +66 -0
- package/dist/chat/usage.js +219 -0
- package/dist/chat/usage.js.map +1 -0
- package/dist/collectionAccess.d.ts +6 -0
- package/dist/collectionAccess.js +32 -0
- package/dist/collectionAccess.js.map +1 -0
- package/dist/constants.d.ts +64 -0
- package/dist/constants.js +51 -0
- package/dist/constants.js.map +1 -0
- package/dist/endpoints/access.d.ts +4 -0
- package/dist/endpoints/access.js +28 -0
- package/dist/endpoints/access.js.map +1 -0
- package/dist/endpoints/allowance.d.ts +22 -0
- package/dist/endpoints/allowance.js +37 -0
- package/dist/endpoints/allowance.js.map +1 -0
- package/dist/endpoints/applyEndpoint.d.ts +12 -0
- package/dist/endpoints/applyEndpoint.js +170 -0
- package/dist/endpoints/applyEndpoint.js.map +1 -0
- package/dist/endpoints/budget.d.ts +30 -0
- package/dist/endpoints/budget.js +153 -0
- package/dist/endpoints/budget.js.map +1 -0
- package/dist/endpoints/chatEndpoint.d.ts +12 -0
- package/dist/endpoints/chatEndpoint.js +295 -0
- package/dist/endpoints/chatEndpoint.js.map +1 -0
- package/dist/endpoints/form.d.ts +23 -0
- package/dist/endpoints/form.js +95 -0
- package/dist/endpoints/form.js.map +1 -0
- package/dist/endpoints/usageEndpoint.d.ts +13 -0
- package/dist/endpoints/usageEndpoint.js +70 -0
- package/dist/endpoints/usageEndpoint.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/lexical/editorConfig.d.ts +4 -0
- package/dist/lexical/editorConfig.js +19 -0
- package/dist/lexical/editorConfig.js.map +1 -0
- package/dist/lexical/lexicalToMarkdown.d.ts +10 -0
- package/dist/lexical/lexicalToMarkdown.js +10 -0
- package/dist/lexical/lexicalToMarkdown.js.map +1 -0
- package/dist/lexical/markdownToLexical.d.ts +7 -0
- package/dist/lexical/markdownToLexical.js +10 -0
- package/dist/lexical/markdownToLexical.js.map +1 -0
- package/dist/plan/allowed.d.ts +7 -0
- package/dist/plan/allowed.js +19 -0
- package/dist/plan/allowed.js.map +1 -0
- package/dist/plan/applyPlan.d.ts +16 -0
- package/dist/plan/applyPlan.js +353 -0
- package/dist/plan/applyPlan.js.map +1 -0
- package/dist/plan/catalogue.d.ts +37 -0
- package/dist/plan/catalogue.js +157 -0
- package/dist/plan/catalogue.js.map +1 -0
- package/dist/plan/diff.d.ts +13 -0
- package/dist/plan/diff.js +87 -0
- package/dist/plan/diff.js.map +1 -0
- package/dist/plan/parsePlan.d.ts +27 -0
- package/dist/plan/parsePlan.js +322 -0
- package/dist/plan/parsePlan.js.map +1 -0
- package/dist/plan/prompt.d.ts +1 -0
- package/dist/plan/prompt.js +45 -0
- package/dist/plan/prompt.js.map +1 -0
- package/dist/plan/stored.d.ts +53 -0
- package/dist/plan/stored.js +3 -0
- package/dist/plan/stored.js.map +1 -0
- package/dist/plan/tokens.d.ts +8 -0
- package/dist/plan/tokens.js +79 -0
- package/dist/plan/tokens.js.map +1 -0
- package/dist/plan/view.d.ts +4 -0
- package/dist/plan/view.js +43 -0
- package/dist/plan/view.js.map +1 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.js +464 -0
- package/dist/plugin.js.map +1 -0
- package/dist/read/outline.d.ts +7 -0
- package/dist/read/outline.js +70 -0
- package/dist/read/outline.js.map +1 -0
- package/dist/read/readTarget.d.ts +4 -0
- package/dist/read/readTarget.js +13 -0
- package/dist/read/readTarget.js.map +1 -0
- package/dist/read/readable.d.ts +8 -0
- package/dist/read/readable.js +131 -0
- package/dist/read/readable.js.map +1 -0
- package/dist/runtime.d.ts +15 -0
- package/dist/runtime.js +14 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema/fields.d.ts +113 -0
- package/dist/schema/fields.js +1036 -0
- package/dist/schema/fields.js.map +1 -0
- package/dist/schema/listingFields.d.ts +9 -0
- package/dist/schema/listingFields.js +95 -0
- package/dist/schema/listingFields.js.map +1 -0
- package/dist/schema/slugify.d.ts +2 -0
- package/dist/schema/slugify.js +5 -0
- package/dist/schema/slugify.js.map +1 -0
- package/dist/settings.d.ts +10 -0
- package/dist/settings.js +54 -0
- package/dist/settings.js.map +1 -0
- package/dist/types.d.ts +198 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/uploads/routeAsset.d.ts +27 -0
- package/dist/uploads/routeAsset.js +127 -0
- package/dist/uploads/routeAsset.js.map +1 -0
- package/package.json +122 -3
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
const blockedExtensions = new Set([
|
|
2
|
+
'app',
|
|
3
|
+
'bat',
|
|
4
|
+
'cmd',
|
|
5
|
+
'com',
|
|
6
|
+
'dll',
|
|
7
|
+
'exe',
|
|
8
|
+
'msi',
|
|
9
|
+
'ps1',
|
|
10
|
+
'sh'
|
|
11
|
+
]);
|
|
12
|
+
const mimeByExtension = {
|
|
13
|
+
avif: 'image/avif',
|
|
14
|
+
gif: 'image/gif',
|
|
15
|
+
jpeg: 'image/jpeg',
|
|
16
|
+
jpg: 'image/jpeg',
|
|
17
|
+
mov: 'video/quicktime',
|
|
18
|
+
mp4: 'video/mp4',
|
|
19
|
+
pdf: 'application/pdf',
|
|
20
|
+
png: 'image/png',
|
|
21
|
+
svg: 'image/svg+xml',
|
|
22
|
+
vtt: 'text/vtt',
|
|
23
|
+
webm: 'video/webm',
|
|
24
|
+
webp: 'image/webp'
|
|
25
|
+
};
|
|
26
|
+
/** Programs and scripts are never accepted, whatever collection they would go to. */ export function isBlockedFilename(name) {
|
|
27
|
+
return blockedExtensions.has(extensionOf(name));
|
|
28
|
+
}
|
|
29
|
+
export function mimeTypesFromUpload(upload) {
|
|
30
|
+
if (!upload || upload === true || typeof upload !== 'object' || !('mimeTypes' in upload)) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
const types = upload.mimeTypes;
|
|
34
|
+
return Array.isArray(types) ? types.filter((item)=>typeof item === 'string') : [];
|
|
35
|
+
}
|
|
36
|
+
export function titleFromFilename(filename) {
|
|
37
|
+
const base = filename.split(/[/\\]/).pop() ?? filename;
|
|
38
|
+
const withoutExtension = base.replace(/\.[^.]+$/, '');
|
|
39
|
+
const words = withoutExtension.replace(/[_-]+/g, ' ').replace(/\s+/g, ' ').trim();
|
|
40
|
+
if (!words) {
|
|
41
|
+
return 'Untitled file';
|
|
42
|
+
}
|
|
43
|
+
return words.charAt(0).toUpperCase() + words.slice(1);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Files an upload into the collection whose mime types match.
|
|
47
|
+
* Images, video, and captions stay in their own collections. Other files use the
|
|
48
|
+
* collection that has no mime filter, which is Documents.
|
|
49
|
+
*/ export function chooseUploadCollection(file, targets) {
|
|
50
|
+
const extension = extensionOf(file.name);
|
|
51
|
+
if (blockedExtensions.has(extension)) {
|
|
52
|
+
return {
|
|
53
|
+
error: `"${file.name}" cannot be uploaded.`
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (targets.length === 0) {
|
|
57
|
+
return {
|
|
58
|
+
error: 'No upload collection is available for files.'
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const mime = mimeOf(file);
|
|
62
|
+
const match = targets.find((target)=>target.mimeTypes.length > 0 && target.mimeTypes.some((pattern)=>mimeMatches(mime, pattern)));
|
|
63
|
+
if (match) {
|
|
64
|
+
return {
|
|
65
|
+
slug: match.slug,
|
|
66
|
+
kind: kindFromMime(mime),
|
|
67
|
+
mime
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const dedicated = mime.startsWith('image/') || mime.startsWith('video/') || mime === 'text/vtt';
|
|
71
|
+
if (dedicated) {
|
|
72
|
+
return {
|
|
73
|
+
error: `"${file.name}" needs an upload collection that accepts this file type.`
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const fallback = targets.find((target)=>target.mimeTypes.length === 0);
|
|
77
|
+
if (fallback) {
|
|
78
|
+
return {
|
|
79
|
+
slug: fallback.slug,
|
|
80
|
+
kind: 'document',
|
|
81
|
+
mime
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
error: `"${file.name}" is not a file type this assistant can store.`
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function extensionOf(name) {
|
|
89
|
+
const base = name.split(/[/\\]/).pop() ?? name;
|
|
90
|
+
const dot = base.lastIndexOf('.');
|
|
91
|
+
if (dot <= 0) {
|
|
92
|
+
return '';
|
|
93
|
+
}
|
|
94
|
+
return base.slice(dot + 1).toLowerCase();
|
|
95
|
+
}
|
|
96
|
+
function mimeOf(file) {
|
|
97
|
+
const declared = file.type.trim().toLowerCase();
|
|
98
|
+
const fromExtension = mimeByExtension[extensionOf(file.name)];
|
|
99
|
+
if (fromExtension && (declared === '' || declared === 'application/octet-stream')) {
|
|
100
|
+
return fromExtension;
|
|
101
|
+
}
|
|
102
|
+
if (declared && declared !== 'application/octet-stream') {
|
|
103
|
+
return declared;
|
|
104
|
+
}
|
|
105
|
+
return fromExtension ?? 'application/octet-stream';
|
|
106
|
+
}
|
|
107
|
+
function mimeMatches(mime, pattern) {
|
|
108
|
+
const normalized = pattern.trim().toLowerCase();
|
|
109
|
+
if (normalized.endsWith('/*')) {
|
|
110
|
+
return mime.startsWith(normalized.slice(0, -1));
|
|
111
|
+
}
|
|
112
|
+
return mime === normalized;
|
|
113
|
+
}
|
|
114
|
+
export function kindFromMime(mime) {
|
|
115
|
+
if (mime.startsWith('image/')) {
|
|
116
|
+
return 'image';
|
|
117
|
+
}
|
|
118
|
+
if (mime.startsWith('video/')) {
|
|
119
|
+
return 'video';
|
|
120
|
+
}
|
|
121
|
+
if (mime === 'text/vtt') {
|
|
122
|
+
return 'caption';
|
|
123
|
+
}
|
|
124
|
+
return 'document';
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
//# sourceMappingURL=routeAsset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/uploads/routeAsset.ts"],"sourcesContent":["const blockedExtensions = new Set(['app', 'bat', 'cmd', 'com', 'dll', 'exe', 'msi', 'ps1', 'sh'])\n\nconst mimeByExtension: Record<string, string> = {\n avif: 'image/avif',\n gif: 'image/gif',\n jpeg: 'image/jpeg',\n jpg: 'image/jpeg',\n mov: 'video/quicktime',\n mp4: 'video/mp4',\n pdf: 'application/pdf',\n png: 'image/png',\n svg: 'image/svg+xml',\n vtt: 'text/vtt',\n webm: 'video/webm',\n webp: 'image/webp',\n}\n\nexport type AssetKind = 'caption' | 'document' | 'image' | 'video'\n\n/** Programs and scripts are never accepted, whatever collection they would go to. */\nexport function isBlockedFilename(name: string): boolean {\n return blockedExtensions.has(extensionOf(name))\n}\n\nexport interface UploadTarget {\n /** Empty means this collection accepts files that no other collection claims, such as PDFs. */\n mimeTypes: string[]\n slug: string\n}\n\nexport type UploadChoice = { error: string } | { kind: AssetKind; mime: string; slug: string }\n\nexport function mimeTypesFromUpload(upload: unknown): string[] {\n if (!upload || upload === true || typeof upload !== 'object' || !('mimeTypes' in upload)) {\n return []\n }\n const types = upload.mimeTypes\n return Array.isArray(types)\n ? types.filter((item): item is string => typeof item === 'string')\n : []\n}\n\nexport function titleFromFilename(filename: string): string {\n const base = filename.split(/[/\\\\]/).pop() ?? filename\n const withoutExtension = base.replace(/\\.[^.]+$/, '')\n const words = withoutExtension.replace(/[_-]+/g, ' ').replace(/\\s+/g, ' ').trim()\n if (!words) {\n return 'Untitled file'\n }\n return words.charAt(0).toUpperCase() + words.slice(1)\n}\n\n/**\n * Files an upload into the collection whose mime types match.\n * Images, video, and captions stay in their own collections. Other files use the\n * collection that has no mime filter, which is Documents.\n */\nexport function chooseUploadCollection(\n file: { name: string; type: string },\n targets: UploadTarget[],\n): UploadChoice {\n const extension = extensionOf(file.name)\n if (blockedExtensions.has(extension)) {\n return { error: `\"${file.name}\" cannot be uploaded.` }\n }\n if (targets.length === 0) {\n return { error: 'No upload collection is available for files.' }\n }\n\n const mime = mimeOf(file)\n const match = targets.find(\n (target) =>\n target.mimeTypes.length > 0 && target.mimeTypes.some((pattern) => mimeMatches(mime, pattern)),\n )\n if (match) {\n return { slug: match.slug, kind: kindFromMime(mime), mime }\n }\n\n const dedicated = mime.startsWith('image/') || mime.startsWith('video/') || mime === 'text/vtt'\n if (dedicated) {\n return { error: `\"${file.name}\" needs an upload collection that accepts this file type.` }\n }\n\n const fallback = targets.find((target) => target.mimeTypes.length === 0)\n if (fallback) {\n return { slug: fallback.slug, kind: 'document', mime }\n }\n return { error: `\"${file.name}\" is not a file type this assistant can store.` }\n}\n\nfunction extensionOf(name: string): string {\n const base = name.split(/[/\\\\]/).pop() ?? name\n const dot = base.lastIndexOf('.')\n if (dot <= 0) {\n return ''\n }\n return base.slice(dot + 1).toLowerCase()\n}\n\nfunction mimeOf(file: { name: string; type: string }): string {\n const declared = file.type.trim().toLowerCase()\n const fromExtension = mimeByExtension[extensionOf(file.name)]\n if (fromExtension && (declared === '' || declared === 'application/octet-stream')) {\n return fromExtension\n }\n if (declared && declared !== 'application/octet-stream') {\n return declared\n }\n return fromExtension ?? 'application/octet-stream'\n}\n\nfunction mimeMatches(mime: string, pattern: string): boolean {\n const normalized = pattern.trim().toLowerCase()\n if (normalized.endsWith('/*')) {\n return mime.startsWith(normalized.slice(0, -1))\n }\n return mime === normalized\n}\n\nexport function kindFromMime(mime: string): AssetKind {\n if (mime.startsWith('image/')) {\n return 'image'\n }\n if (mime.startsWith('video/')) {\n return 'video'\n }\n if (mime === 'text/vtt') {\n return 'caption'\n }\n return 'document'\n}\n"],"names":["blockedExtensions","Set","mimeByExtension","avif","gif","jpeg","jpg","mov","mp4","pdf","png","svg","vtt","webm","webp","isBlockedFilename","name","has","extensionOf","mimeTypesFromUpload","upload","types","mimeTypes","Array","isArray","filter","item","titleFromFilename","filename","base","split","pop","withoutExtension","replace","words","trim","charAt","toUpperCase","slice","chooseUploadCollection","file","targets","extension","error","length","mime","mimeOf","match","find","target","some","pattern","mimeMatches","slug","kind","kindFromMime","dedicated","startsWith","fallback","dot","lastIndexOf","toLowerCase","declared","type","fromExtension","normalized","endsWith"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,125 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@humaan/payload-plugin-ai-assistant",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Payload plugin that adds Humaan AI, an AI assistant, to the admin: it reads site content, answers questions, and proposes changes for editors to review.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/humaan/payload-plugin-ai-assistant.git"
|
|
9
|
+
},
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/humaan/payload-plugin-ai-assistant/issues"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/humaan/payload-plugin-ai-assistant#readme",
|
|
14
|
+
"type": "module",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"import": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"default": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./client": {
|
|
22
|
+
"import": "./dist/admin/AiAssistantControl.js",
|
|
23
|
+
"types": "./dist/admin/AiAssistantControl.d.ts",
|
|
24
|
+
"default": "./dist/admin/AiAssistantControl.js"
|
|
25
|
+
},
|
|
26
|
+
"./budget-field": {
|
|
27
|
+
"import": "./dist/admin/BudgetField.js",
|
|
28
|
+
"types": "./dist/admin/BudgetField.d.ts",
|
|
29
|
+
"default": "./dist/admin/BudgetField.js"
|
|
30
|
+
},
|
|
31
|
+
"./settings-alerts": {
|
|
32
|
+
"import": "./dist/admin/SettingsAlerts.js",
|
|
33
|
+
"types": "./dist/admin/SettingsAlerts.d.ts",
|
|
34
|
+
"default": "./dist/admin/SettingsAlerts.js"
|
|
35
|
+
},
|
|
36
|
+
"./page-context": {
|
|
37
|
+
"import": "./dist/admin/PageContextBridge.js",
|
|
38
|
+
"types": "./dist/admin/PageContextBridge.d.ts",
|
|
39
|
+
"default": "./dist/admin/PageContextBridge.js"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"main": "./dist/index.js",
|
|
43
|
+
"types": "./dist/index.d.ts",
|
|
44
|
+
"files": [
|
|
45
|
+
"dist"
|
|
46
|
+
],
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@payloadcms/db-mongodb": "3.90.2",
|
|
49
|
+
"@payloadcms/eslint-config": "3.28.0",
|
|
50
|
+
"@payloadcms/next": "3.90.2",
|
|
51
|
+
"@payloadcms/richtext-lexical": "3.90.2",
|
|
52
|
+
"@payloadcms/ui": "3.90.2",
|
|
53
|
+
"@playwright/test": "1.64.1",
|
|
54
|
+
"@swc/cli": "0.8.1",
|
|
55
|
+
"@types/node": "22.20.5",
|
|
56
|
+
"@types/react": "19.3.0",
|
|
57
|
+
"@types/react-dom": "19.3.0",
|
|
58
|
+
"conventional-changelog": "8.1.3",
|
|
59
|
+
"conventional-changelog-conventionalcommits": "10.4.1",
|
|
60
|
+
"copyfiles": "2.4.1",
|
|
61
|
+
"cross-env": "^10.1.0",
|
|
62
|
+
"eslint": "^9.39.5",
|
|
63
|
+
"graphql": "^16.14.2",
|
|
64
|
+
"mongodb-memory-server": "11.3.0",
|
|
65
|
+
"next": "16.4.1",
|
|
66
|
+
"payload": "3.90.2",
|
|
67
|
+
"prettier": "3.9.10",
|
|
68
|
+
"react": "19.3.1",
|
|
69
|
+
"react-dom": "19.3.1",
|
|
70
|
+
"rimraf": "6.1.3",
|
|
71
|
+
"sass": "^1.105.0",
|
|
72
|
+
"sharp": "0.35.5",
|
|
73
|
+
"tsx": "4.22.4",
|
|
74
|
+
"typescript": "6.0.3",
|
|
75
|
+
"node": "runtime:24.18.1"
|
|
76
|
+
},
|
|
77
|
+
"peerDependencies": {
|
|
78
|
+
"@payloadcms/richtext-lexical": "^3.90.0",
|
|
79
|
+
"@payloadcms/ui": "^3.90.0",
|
|
80
|
+
"payload": "^3.90.0",
|
|
81
|
+
"react": "^19.0.0",
|
|
82
|
+
"react-dom": "^19.0.0",
|
|
83
|
+
"sass": "^1.0.0"
|
|
84
|
+
},
|
|
85
|
+
"dependencies": {
|
|
86
|
+
"@ai-sdk/gateway": "^3.0.0",
|
|
87
|
+
"@ai-sdk/react": "^3.0.309",
|
|
88
|
+
"@vercel/oidc": "^3.2.0",
|
|
89
|
+
"ai": "^6.0.0",
|
|
90
|
+
"react-markdown": "^10.1.0",
|
|
91
|
+
"remark-gfm": "^4.0.1",
|
|
92
|
+
"zod": "^4.0.0"
|
|
93
|
+
},
|
|
94
|
+
"engines": {
|
|
95
|
+
"node": ">=20.9.0",
|
|
96
|
+
"pnpm": "^9 || ^10 || ^11"
|
|
97
|
+
},
|
|
98
|
+
"devEngines": {
|
|
99
|
+
"runtime": {
|
|
100
|
+
"name": "node",
|
|
101
|
+
"version": "24.18.1",
|
|
102
|
+
"onFail": "download"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"scripts": {
|
|
106
|
+
"build": "pnpm clean && pnpm copyfiles && pnpm build:types && pnpm build:swc",
|
|
107
|
+
"build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths --ignore \"**/*.test.ts\"",
|
|
108
|
+
"build:types": "tsc -p tsconfig.build.json",
|
|
109
|
+
"changelog": "conventional-changelog -p conventionalcommits -i CHANGELOG.md",
|
|
110
|
+
"clean": "rimraf {dist,*.tsbuildinfo}",
|
|
111
|
+
"copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/",
|
|
112
|
+
"dev": "next dev dev --turbo",
|
|
113
|
+
"dev:generate-importmap": "pnpm dev:payload generate:importmap",
|
|
114
|
+
"dev:generate-types": "pnpm dev:payload generate:types",
|
|
115
|
+
"dev:payload": "cross-env PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload",
|
|
116
|
+
"generate:importmap": "pnpm dev:generate-importmap",
|
|
117
|
+
"generate:types": "pnpm dev:generate-types",
|
|
118
|
+
"lint": "eslint",
|
|
119
|
+
"lint:fix": "eslint --fix",
|
|
120
|
+
"release:bump": "node scripts/bump-release.mjs",
|
|
121
|
+
"test": "pnpm test:int && pnpm test:e2e",
|
|
122
|
+
"test:e2e": "playwright test",
|
|
123
|
+
"test:int": "node --import tsx --test \"src/**/*.test.ts\""
|
|
124
|
+
}
|
|
6
125
|
}
|