@minded-ai/mindedjs 3.1.38-beta.2 → 3.1.38-beta.4
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/triggers/processTriggerPayload.js +1 -1
- package/dist/triggers/processTriggerPayload.js.map +1 -1
- package/dist/utils/schemaUtils.d.ts.map +1 -1
- package/dist/utils/schemaUtils.js +5 -4
- package/dist/utils/schemaUtils.js.map +1 -1
- package/package.json +1 -1
- package/src/triggers/processTriggerPayload.ts +1 -1
- package/src/utils/schemaUtils.ts +5 -4
|
@@ -44,7 +44,7 @@ async function processTriggerPayload({ flows, llm, triggerBody, sessionId, trigg
|
|
|
44
44
|
// If the trigger is a dashboard message, the message is already a json stringified form
|
|
45
45
|
if (triggerName === Flows_types_1.KnownTriggerNames.DASHBOARD_MESSAGE) {
|
|
46
46
|
try {
|
|
47
|
-
structuredPayload = JSON.parse(rawPayload
|
|
47
|
+
structuredPayload = JSON.parse(rawPayload);
|
|
48
48
|
}
|
|
49
49
|
catch (err) {
|
|
50
50
|
logger_1.logger.warn({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processTriggerPayload.js","sourceRoot":"","sources":["../../src/triggers/processTriggerPayload.ts"],"names":[],"mappings":";;;;;AAsBA,sDA8EC;AAnGD,sDAAmG;AACnG,qGAA4G;AAC5G,sDAAiE;AACjE,gGAAwE;AACxE,yEAAqG;AACrG,4CAAyC;AAWzC;;;;GAIG;AACI,KAAK,UAAU,qBAAqB,CAAC,EAC1C,KAAK,EACL,GAAG,EACH,WAAW,EACX,SAAS,EACT,WAAW,EACX,OAAO,GACqB;;IAE5B,oBAAoB;IACpB,MAAM,YAAY,GAAG,KAAK;SACvB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;SAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,KAAK,yBAAW,CAAC,MAAM,CAAkB,CAAC;IAE9G,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAG,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,0CAAE,MAAM,EAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzF,IAAI,UAAU,GAAe,IAAI,CAAC;IAClC,IAAI,WAAW,KAAK,+BAAiB,CAAC,iBAAiB,EAAE,CAAC;QACxD,qDAAqD;QACrD,MAAM,iBAAiB,GAAG,IAAA,mCAAgB,EAAC,WAAW,CAAC,CAAC;QACxD,UAAU,GAAG,IAAA,gDAA6B,EAAC,WAAW,CAAC,OAAO,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC3F,CAAC;SACI,IAAI,OAAO,KAAI,MAAA,qCAA2B,CAAC,OAAO,CAAC,0CAAG,WAAW,CAAC,CAAA,EAAE,CAAC;QACxE,UAAU,GAAG,qCAA2B,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC;IAC9E,CAAC;SACI,CAAC;QACJ,UAAU,GAAG,WAAW,CAAC;IAC3B,CAAC;IAED,oCAAoC;IACpC,IAAI,iBAAiB,GAAe,IAAI,CAAC;IACzC,IAAI,YAAY,IAAI,GAAG,EAAE,CAAC;QAExB,wFAAwF;QACxF,IAAI,WAAW,KAAK,+BAAiB,CAAC,iBAAiB,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"processTriggerPayload.js","sourceRoot":"","sources":["../../src/triggers/processTriggerPayload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/schemaUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,oBAAoB,iEAA2D,CAAC;AAC7F,eAAO,MAAM,iBAAiB,iPAO5B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,aAAa,gBAAgB,EAAE,EAC/B,QAAQ,gBAAgB,CAAC,OAAO,CAAC,KAChC,CAAC,CAAC,UA+BJ,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,CAAC,EAAE,WAAW,EAAE,EACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,GAC3C,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"schemaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/schemaUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,oBAAoB,iEAA2D,CAAC;AAC7F,eAAO,MAAM,iBAAiB,iPAO5B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,aAAa,gBAAgB,EAAE,EAC/B,QAAQ,gBAAgB,CAAC,OAAO,CAAC,KAChC,CAAC,CAAC,UA+BJ,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,CAAC,EAAE,WAAW,EAAE,EACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,GAC3C,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CA0B3C"}
|
|
@@ -26,7 +26,7 @@ const mapItemTypeToZod = (type, properties, items) => {
|
|
|
26
26
|
case 'boolean':
|
|
27
27
|
return zod_1.z.boolean();
|
|
28
28
|
case 'any':
|
|
29
|
-
return
|
|
29
|
+
return zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean()]);
|
|
30
30
|
case 'array': {
|
|
31
31
|
const itemType = items === null || items === void 0 ? void 0 : items.type;
|
|
32
32
|
const itemSchema = itemType ? (0, exports.mapItemTypeToZod)(itemType, items === null || items === void 0 ? void 0 : items.properties, undefined) : exports.nestedValueSchema;
|
|
@@ -38,7 +38,7 @@ const mapItemTypeToZod = (type, properties, items) => {
|
|
|
38
38
|
for (const property of properties) {
|
|
39
39
|
let propertySchema = (0, exports.mapItemTypeToZod)(property.type, (_a = property.items) === null || _a === void 0 ? void 0 : _a.properties, property.items);
|
|
40
40
|
if (property.required === false) {
|
|
41
|
-
propertySchema = propertySchema.
|
|
41
|
+
propertySchema = propertySchema.nullable();
|
|
42
42
|
}
|
|
43
43
|
shape[property.name] = propertySchema;
|
|
44
44
|
}
|
|
@@ -65,9 +65,10 @@ function createZodSchemaFromFields(fields, defaultSchema) {
|
|
|
65
65
|
if (field.description) {
|
|
66
66
|
fieldSchema = fieldSchema.describe(field.description);
|
|
67
67
|
}
|
|
68
|
-
// Handle optional fields
|
|
68
|
+
// Handle optional fields — use nullable (not optional) for OpenAI structured output compatibility,
|
|
69
|
+
// since OpenAI requires all fields in `required` and uses null for absent values
|
|
69
70
|
if (field.required === false) {
|
|
70
|
-
fieldSchema = fieldSchema.
|
|
71
|
+
fieldSchema = fieldSchema.nullable();
|
|
71
72
|
}
|
|
72
73
|
schemaFields[field.name] = fieldSchema;
|
|
73
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaUtils.js","sourceRoot":"","sources":["../../src/utils/schemaUtils.ts"],"names":[],"mappings":";;;AAmEA,
|
|
1
|
+
{"version":3,"file":"schemaUtils.js","sourceRoot":"","sources":["../../src/utils/schemaUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -62,7 +62,7 @@ export async function processTriggerPayload({
|
|
|
62
62
|
// If the trigger is a dashboard message, the message is already a json stringified form
|
|
63
63
|
if (triggerName === KnownTriggerNames.DASHBOARD_MESSAGE) {
|
|
64
64
|
try {
|
|
65
|
-
structuredPayload = JSON.parse(rawPayload
|
|
65
|
+
structuredPayload = JSON.parse(rawPayload);
|
|
66
66
|
}
|
|
67
67
|
catch (err) {
|
|
68
68
|
logger.warn({
|
package/src/utils/schemaUtils.ts
CHANGED
|
@@ -28,7 +28,7 @@ export const mapItemTypeToZod = (
|
|
|
28
28
|
case 'boolean':
|
|
29
29
|
return z.boolean();
|
|
30
30
|
case 'any':
|
|
31
|
-
return
|
|
31
|
+
return z.union([z.string(), z.number(), z.boolean()]);
|
|
32
32
|
case 'array': {
|
|
33
33
|
const itemType = items?.type;
|
|
34
34
|
const itemSchema = itemType ? mapItemTypeToZod(itemType, items?.properties, undefined) : nestedValueSchema;
|
|
@@ -40,7 +40,7 @@ export const mapItemTypeToZod = (
|
|
|
40
40
|
for (const property of properties) {
|
|
41
41
|
let propertySchema = mapItemTypeToZod(property.type, property.items?.properties, property.items);
|
|
42
42
|
if (property.required === false) {
|
|
43
|
-
propertySchema = propertySchema.
|
|
43
|
+
propertySchema = propertySchema.nullable();
|
|
44
44
|
}
|
|
45
45
|
shape[property.name] = propertySchema;
|
|
46
46
|
}
|
|
@@ -80,9 +80,10 @@ export function createZodSchemaFromFields(
|
|
|
80
80
|
fieldSchema = fieldSchema.describe(field.description);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
// Handle optional fields
|
|
83
|
+
// Handle optional fields — use nullable (not optional) for OpenAI structured output compatibility,
|
|
84
|
+
// since OpenAI requires all fields in `required` and uses null for absent values
|
|
84
85
|
if (field.required === false) {
|
|
85
|
-
fieldSchema = fieldSchema.
|
|
86
|
+
fieldSchema = fieldSchema.nullable();
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
schemaFields[field.name] = fieldSchema;
|