@mvriu5/payload-ai 1.5.0 → 1.6.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 +34 -0
- package/dist/ai/promptCaching.d.ts +23 -0
- package/dist/ai/promptCaching.js +120 -0
- package/dist/ai/proposalRepair.d.ts +30 -0
- package/dist/ai/proposalRepair.js +76 -0
- package/dist/ai/sensitiveData.d.ts +1 -0
- package/dist/ai/sensitiveData.js +3 -1
- package/dist/components/translate-document/TranslateDocumentButton.d.ts +2 -0
- package/dist/components/translate-document/TranslateDocumentButton.js +111 -0
- package/dist/components/translate-document/TranslateDocumentButton.module.css +11 -0
- package/dist/exports/client.d.ts +2 -0
- package/dist/exports/client.js +2 -0
- package/dist/handlers/chatHandler.d.ts +1 -0
- package/dist/handlers/chatHandler.js +464 -138
- package/dist/handlers/translateDocumentHandler.d.ts +14 -0
- package/dist/handlers/translateDocumentHandler.js +186 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +62 -3
- package/dist/payload/documentTranslation.d.ts +15 -0
- package/dist/payload/documentTranslation.js +120 -0
- package/dist/payload/toolFieldSelection.d.ts +25 -0
- package/dist/payload/toolFieldSelection.js +118 -0
- package/dist/payload/toolSchemas.d.ts +7 -0
- package/dist/payload/toolSchemas.js +117 -0
- package/package.json +2 -2
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getSchemaFields } from "./normalizeData.js";
|
|
3
|
+
const relationshipIDSchema = z.union([
|
|
4
|
+
z.string().min(1),
|
|
5
|
+
z.number()
|
|
6
|
+
]);
|
|
7
|
+
const getOptionValues = (field)=>{
|
|
8
|
+
return (field.options || []).flatMap((option)=>{
|
|
9
|
+
const value = typeof option === "string" ? option : option.value;
|
|
10
|
+
return value ? [
|
|
11
|
+
value
|
|
12
|
+
] : [];
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
const createSelectSchema = (field)=>{
|
|
16
|
+
const values = getOptionValues(field);
|
|
17
|
+
const valueSchema = values.length > 0 ? z.enum(values) : z.string();
|
|
18
|
+
return field.hasMany ? z.array(valueSchema) : valueSchema;
|
|
19
|
+
};
|
|
20
|
+
const createRelationshipSchema = (field)=>{
|
|
21
|
+
const polymorphicValueSchema = Array.isArray(field.relationTo) ? z.union([
|
|
22
|
+
relationshipIDSchema,
|
|
23
|
+
z.object({
|
|
24
|
+
relationTo: z.enum(field.relationTo),
|
|
25
|
+
value: relationshipIDSchema
|
|
26
|
+
}).strict()
|
|
27
|
+
]) : relationshipIDSchema;
|
|
28
|
+
return field.hasMany ? z.array(polymorphicValueSchema) : polymorphicValueSchema;
|
|
29
|
+
};
|
|
30
|
+
const createObjectSchema = (fields)=>{
|
|
31
|
+
const shape = {};
|
|
32
|
+
const addFields = (nestedFields)=>{
|
|
33
|
+
for (const field of nestedFields){
|
|
34
|
+
if (field.type === "ui") continue;
|
|
35
|
+
if (!field.name) {
|
|
36
|
+
if (field.fields?.length) addFields(field.fields);
|
|
37
|
+
if (field.tabs?.length) {
|
|
38
|
+
for (const tab of field.tabs){
|
|
39
|
+
if (tab.name) {
|
|
40
|
+
shape[tab.name] = createObjectSchema(tab.fields || []).nullable().optional();
|
|
41
|
+
} else {
|
|
42
|
+
addFields(tab.fields || []);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
shape[field.name] = createFieldValueSchema(field).nullable().optional();
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
addFields(fields);
|
|
52
|
+
return z.object(shape).strict();
|
|
53
|
+
};
|
|
54
|
+
const createBlocksSchema = (field)=>{
|
|
55
|
+
const blockSchemas = (field.blocks || []).map((block)=>createObjectSchema(block.fields || []).extend({
|
|
56
|
+
blockType: z.literal(block.slug)
|
|
57
|
+
}));
|
|
58
|
+
if (blockSchemas.length === 0) return z.array(z.record(z.string(), z.unknown()));
|
|
59
|
+
if (blockSchemas.length === 1) return z.array(blockSchemas[0]);
|
|
60
|
+
return z.array(z.union(blockSchemas));
|
|
61
|
+
};
|
|
62
|
+
const createFieldValueSchema = (field)=>{
|
|
63
|
+
switch(field.type){
|
|
64
|
+
case "array":
|
|
65
|
+
return z.array(createObjectSchema(field.fields || []));
|
|
66
|
+
case "blocks":
|
|
67
|
+
return createBlocksSchema(field);
|
|
68
|
+
case "checkbox":
|
|
69
|
+
return z.boolean();
|
|
70
|
+
case "date":
|
|
71
|
+
return z.string().min(1);
|
|
72
|
+
case "email":
|
|
73
|
+
return z.string();
|
|
74
|
+
case "group":
|
|
75
|
+
return createObjectSchema(field.fields || []);
|
|
76
|
+
case "number":
|
|
77
|
+
return z.number();
|
|
78
|
+
case "point":
|
|
79
|
+
return z.tuple([
|
|
80
|
+
z.number(),
|
|
81
|
+
z.number()
|
|
82
|
+
]);
|
|
83
|
+
case "radio":
|
|
84
|
+
case "select":
|
|
85
|
+
return createSelectSchema(field);
|
|
86
|
+
case "relationship":
|
|
87
|
+
case "upload":
|
|
88
|
+
return createRelationshipSchema(field);
|
|
89
|
+
case "richText":
|
|
90
|
+
return z.union([
|
|
91
|
+
z.string(),
|
|
92
|
+
z.record(z.string(), z.unknown())
|
|
93
|
+
]);
|
|
94
|
+
case "code":
|
|
95
|
+
case "text":
|
|
96
|
+
case "textarea":
|
|
97
|
+
return z.string();
|
|
98
|
+
case "json":
|
|
99
|
+
default:
|
|
100
|
+
return z.unknown();
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
export const genericPayloadDataSchema = z.record(z.string(), z.unknown());
|
|
104
|
+
const payloadDataSchemaCache = new WeakMap();
|
|
105
|
+
export const createPayloadDataSchema = (config)=>{
|
|
106
|
+
if (!config) return genericPayloadDataSchema;
|
|
107
|
+
const cached = payloadDataSchemaCache.get(config);
|
|
108
|
+
if (cached) return cached;
|
|
109
|
+
const schema = createObjectSchema(getSchemaFields(config));
|
|
110
|
+
payloadDataSchemaCache.set(config, schema);
|
|
111
|
+
return schema;
|
|
112
|
+
};
|
|
113
|
+
export const createLocalizedPayloadDataSchema = (dataSchema)=>{
|
|
114
|
+
return z.record(z.string(), dataSchema).refine((value)=>Object.keys(value).length > 0, {
|
|
115
|
+
message: "localizedData must include at least one locale entry."
|
|
116
|
+
});
|
|
117
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mvriu5/payload-ai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "AI assistant plugin for Payload CMS with provider selection, CMS mentions, and signed action proposals.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"payload",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"copyfiles": "2.4.1",
|
|
85
85
|
"cross-env": "^10.1.0",
|
|
86
86
|
"eslint": "^10.5.0",
|
|
87
|
-
"graphql": "^
|
|
87
|
+
"graphql": "^16.8.1",
|
|
88
88
|
"jsdom": "^29.1.1",
|
|
89
89
|
"knip": "^6.18.0",
|
|
90
90
|
"next": "16.2.11",
|