@typia/core 12.0.0-dev.20260303-2 → 12.0.0-dev.20260305

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.
@@ -19,10 +19,10 @@ const LlmSchemaProgrammer_1 = require("./LlmSchemaProgrammer");
19
19
  var LlmApplicationProgrammer;
20
20
  (function (LlmApplicationProgrammer) {
21
21
  LlmApplicationProgrammer.validate = (props) => {
22
- var _a, _b, _c, _d, _e, _f, _g;
23
- const top = props.metadata;
22
+ var _a, _b, _c, _d, _e, _f, _g, _h;
23
+ // the class
24
24
  if (props.explore.top === false)
25
- if (props.explore.object === ((_a = top === null || top === void 0 ? void 0 : top.objects[0]) === null || _a === void 0 ? void 0 : _a.type) &&
25
+ if (props.explore.object === ((_b = (_a = props.metadata) === null || _a === void 0 ? void 0 : _a.objects[0]) === null || _b === void 0 ? void 0 : _b.type) &&
26
26
  typeof props.explore.property === "string" &&
27
27
  props.metadata.size() === 1 &&
28
28
  props.metadata.nullable === false &&
@@ -31,24 +31,26 @@ var LlmApplicationProgrammer;
31
31
  return validateFunction(props.explore.property, props.metadata.functions[0]);
32
32
  else
33
33
  return LlmSchemaProgrammer_1.LlmSchemaProgrammer.validate(props);
34
+ // top-level type must be a single non-nullable required object
34
35
  const output = [];
35
- const validity = props.metadata.size() === 1 &&
36
+ const isValidType = props.metadata.size() === 1 &&
36
37
  props.metadata.objects.length === 1 &&
37
38
  props.metadata.isRequired() === true &&
38
39
  props.metadata.nullable === false;
39
- if (validity === false)
40
+ if (isValidType === false)
40
41
  output.push("LLM application's generic argument must be a class/interface type.");
41
- const object = (_b = props.metadata.objects[0]) === null || _b === void 0 ? void 0 : _b.type;
42
+ // validate each property of the class/interface
43
+ const object = (_c = props.metadata.objects[0]) === null || _c === void 0 ? void 0 : _c.type;
42
44
  if (object !== undefined) {
43
45
  if (object.properties.some((p) => p.key.isSoleLiteral() === false))
44
46
  output.push("LLM application does not allow dynamic keys on class/interface type.");
45
- let least = false;
47
+ let least = false; // tracks whether at least one function exists
46
48
  for (const p of object.properties) {
47
49
  const name = JSON.stringify(p.key.getSoleLiteral());
48
50
  const value = p.value;
49
51
  if (value.functions.length) {
50
52
  least || (least = true);
51
- if (validity === false) {
53
+ if (isValidType === false) {
52
54
  if (value.functions.length !== 1 || value.size() !== 1)
53
55
  output.push(`LLM application's function (${name}) type does not allow union type.`);
54
56
  if (value.isRequired() === false)
@@ -57,7 +59,7 @@ var LlmApplicationProgrammer;
57
59
  output.push(`LLM application's function (${name}) type must not be nullable.`);
58
60
  }
59
61
  const description = concatDescription(JsonApplicationProgrammer_1.JsonApplicationProgrammer.writeDescription({
60
- description: (_g = (_c = p.description) !== null && _c !== void 0 ? _c : (_f = (_e = (_d = p.jsDocTags.find((tag) => tag.name === "description")) === null || _d === void 0 ? void 0 : _d.text) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.text) !== null && _g !== void 0 ? _g : null,
62
+ description: (_h = (_d = p.description) !== null && _d !== void 0 ? _d : (_g = (_f = (_e = p.jsDocTags.find((tag) => tag.name === "description")) === null || _e === void 0 ? void 0 : _e.text) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.text) !== null && _h !== void 0 ? _h : null,
61
63
  jsDocTags: p.jsDocTags,
62
64
  kind: "summary",
63
65
  }));
@@ -70,37 +72,48 @@ var LlmApplicationProgrammer;
70
72
  }
71
73
  return output;
72
74
  };
75
+ /**
76
+ * Validates that a {@link MetadataSchema} represents a valid
77
+ * {@link ILlmSchema.IParameters} type: a single, non-nullable, non-optional
78
+ * object type without dynamic property keys.
79
+ */
80
+ const validateObjectSchema = (prefix, label, schema) => {
81
+ const errors = [];
82
+ if (schema.isRequired() === false)
83
+ errors.push(`${prefix} ${label} cannot be optional (union with undefined).`);
84
+ if (schema.nullable === true)
85
+ errors.push(`${prefix} ${label} cannot be nullable.`);
86
+ if (schema.size() !== 1 || schema.objects.length !== 1)
87
+ errors.push(`${prefix} ${label} must be a single object type.`);
88
+ else if (schema.objects[0].type.properties.some((p) => p.key.isSoleLiteral() === false))
89
+ errors.push(`${prefix} ${label} cannot have dynamic property keys.`);
90
+ return errors;
91
+ };
73
92
  const validateFunction = (name, func) => {
74
93
  var _a;
75
- const output = [];
94
+ const messages = [];
76
95
  const prefix = `LLM application's function (${JSON.stringify(name)})`;
77
- if (func.output.size() && func.output.isRequired() === false)
78
- output.push(`${prefix} return type cannot be optional (union with undefined).`);
96
+ // function name
79
97
  if (/^[0-9]/.test((_a = name[0]) !== null && _a !== void 0 ? _a : "") === true)
80
- output.push(`${prefix} name cannot start with a number.`);
98
+ messages.push(`${prefix} name cannot start with a number.`);
81
99
  if (/^[a-zA-Z0-9_-]+$/.test(name) === false)
82
- output.push(`${prefix} name must contain only alphanumeric characters, underscores, or hyphens.`);
100
+ messages.push(`${prefix} name must contain only alphanumeric characters, underscores, or hyphens.`);
83
101
  if (name.length > 64)
84
- output.push(`${prefix} name cannot exceed 64 characters.`);
102
+ messages.push(`${prefix} name cannot exceed 64 characters.`);
103
+ // output
104
+ if (func.output.size() !== 0)
105
+ messages.push(...validateObjectSchema(prefix, "return type", func.output));
106
+ // parameters
85
107
  if (func.parameters.length !== 0 && func.parameters.length !== 1)
86
- output.push(`${prefix} must have exactly one parameter or no parameters.`);
87
- if (func.parameters.length !== 0) {
88
- const type = func.parameters[0].type;
89
- if (type.size() !== 1 || type.objects.length !== 1)
90
- output.push(`${prefix} parameter must be a single object type.`);
91
- else {
92
- if (type.objects[0].type.properties.some((p) => p.key.isSoleLiteral() === false))
93
- output.push(`${prefix} parameter cannot have dynamic property keys.`);
94
- if (type.isRequired() === false)
95
- output.push(`${prefix} parameter cannot be optional (union with undefined).`);
96
- if (type.nullable === true)
97
- output.push(`${prefix} parameter cannot be nullable.`);
98
- }
99
- }
100
- return output;
108
+ messages.push(`${prefix} must have exactly one parameter or no parameters.`);
109
+ if (func.parameters.length !== 0)
110
+ messages.push(...validateObjectSchema(prefix, "parameter", func.parameters[0].type));
111
+ return messages;
101
112
  };
102
113
  LlmApplicationProgrammer.write = (props) => {
103
114
  const metadata = MetadataSchema_1.MetadataSchema.unalias(props.metadata);
115
+ // collect the first parameter's MetadataParameter for each valid function,
116
+ // keyed by property name, for runtime validator generation
104
117
  const functionParameters = Object.fromEntries(metadata.objects[0].type.properties.filter((p) => p.key.isSoleLiteral() &&
105
118
  p.value.size() === 1 &&
106
119
  p.value.nullable === false &&
@@ -113,12 +126,14 @@ var LlmApplicationProgrammer;
113
126
  p.key.getSoleLiteral(),
114
127
  MetadataSchema_1.MetadataSchema.unalias(p.value).functions[0].parameters[0],
115
128
  ]));
129
+ // build JSON Schema application, filtering out @human-tagged parameters
116
130
  const errorMessages = [];
117
131
  const application = JsonApplicationProgrammer_1.JsonApplicationProgrammer.write({
118
132
  version: "3.1",
119
133
  metadata,
120
134
  filter: (p) => p.jsDocTags.some((tag) => tag.name === "human") === false,
121
135
  });
136
+ // convert each JSON Schema function to an LLM function
122
137
  const functions = application.functions.map((func) => {
123
138
  var _a;
124
139
  return writeFunction({
@@ -132,9 +147,6 @@ var LlmApplicationProgrammer;
132
147
  parameter: (_a = functionParameters[func.name]) !== null && _a !== void 0 ? _a : null,
133
148
  });
134
149
  });
135
- if (functions.some((func) => func === null))
136
- throw new Error("Failed to write LLM application:\n\n" +
137
- errorMessages.map((str) => ` - ${str}`).join("\n"));
138
150
  return {
139
151
  config: Object.assign(Object.assign({}, utils_1.LlmSchemaConverter.getConfig(props.config)), { separate: null, validate: null }),
140
152
  functions: functions.filter((f) => f !== null),
@@ -143,11 +155,11 @@ var LlmApplicationProgrammer;
143
155
  const writeFunction = (props) => {
144
156
  var _a, _b, _c, _d, _e, _f;
145
157
  const config = utils_1.LlmSchemaConverter.getConfig(props.config);
158
+ // convert parameters and output schemas
146
159
  const parameters = writeParameters(Object.assign(Object.assign({}, props), { config, accessor: `$input.${props.function.name}.parameters` }));
147
160
  if (parameters === null)
148
161
  return null;
149
162
  const output = writeOutput({
150
- parameters,
151
163
  config,
152
164
  components: props.components,
153
165
  schema: (_b = (_a = props.function.output) === null || _a === void 0 ? void 0 : _a.schema) !== null && _b !== void 0 ? _b : null,
@@ -156,27 +168,20 @@ var LlmApplicationProgrammer;
156
168
  });
157
169
  if (output === null)
158
170
  return null;
171
+ // fall back output description from the function metadata
159
172
  if (output &&
160
- utils_1.LlmTypeChecker.isReference(output) === false &&
161
173
  output.description === undefined &&
162
174
  !!((_d = (_c = props.function.output) === null || _c === void 0 ? void 0 : _c.description) === null || _d === void 0 ? void 0 : _d.length))
163
175
  output.description = props.function.output.description;
176
+ // assemble the LLM function
164
177
  return {
165
178
  name: props.function.name,
166
179
  parameters,
167
180
  output: output !== null && output !== void 0 ? output : undefined,
168
- description: (() => {
169
- var _a, _b;
170
- if (!((_a = props.function.summary) === null || _a === void 0 ? void 0 : _a.length) ||
171
- !((_b = props.function.description) === null || _b === void 0 ? void 0 : _b.length))
172
- return props.function.summary || props.function.description;
173
- const summary = props.function.summary.endsWith(".")
174
- ? props.function.summary.slice(0, -1)
175
- : props.function.summary;
176
- return props.function.description.startsWith(summary)
177
- ? props.function.description
178
- : summary + ".\n\n" + props.function.description;
179
- })(),
181
+ description: concatDescription({
182
+ summary: props.function.summary,
183
+ description: props.function.description,
184
+ }),
180
185
  deprecated: props.function.deprecated,
181
186
  tags: props.function.tags,
182
187
  validate: writeValidator({
@@ -191,32 +196,41 @@ var LlmApplicationProgrammer;
191
196
  };
192
197
  const writeParameters = (props) => {
193
198
  var _a, _b, _c, _d, _e, _f;
199
+ // extract the first parameter's object schema, defaulting to empty object
194
200
  const schema = (_b = (_a = props.function.parameters[0]) === null || _a === void 0 ? void 0 : _a.schema) !== null && _b !== void 0 ? _b : {
195
201
  type: "object",
196
202
  properties: {},
197
203
  additionalProperties: false,
198
204
  required: [],
199
205
  };
200
- const result = utils_1.LlmSchemaConverter.parameters({
206
+ return convertParameters({
201
207
  config: props.config,
202
208
  components: props.components,
203
209
  schema: Object.assign(Object.assign({}, schema), { title: (_c = schema.title) !== null && _c !== void 0 ? _c : (_d = props.function.parameters[0]) === null || _d === void 0 ? void 0 : _d.title, description: (_e = schema.description) !== null && _e !== void 0 ? _e : (_f = props.function.parameters[0]) === null || _f === void 0 ? void 0 : _f.description }),
204
210
  accessor: props.accessor,
211
+ errors: props.errors,
205
212
  });
206
- if (result.success === false) {
207
- props.errors.push(...result.error.reasons.map((r) => ` - ${r.accessor}: ${r.message}`));
208
- return null;
209
- }
210
- return result.value;
211
213
  };
212
214
  const writeOutput = (props) => {
213
215
  if (props.schema === null)
214
216
  return undefined;
215
- const result = utils_1.LlmSchemaConverter.schema({
217
+ return convertParameters({
218
+ config: props.config,
219
+ components: props.components,
220
+ schema: props.schema,
221
+ accessor: props.accessor,
222
+ errors: props.errors,
223
+ });
224
+ };
225
+ /**
226
+ * Converts an OpenAPI object schema to {@link ILlmSchema.IParameters},
227
+ * collecting transformation errors into the provided array.
228
+ */
229
+ const convertParameters = (props) => {
230
+ const result = utils_1.LlmSchemaConverter.parameters({
216
231
  config: props.config,
217
232
  components: props.components,
218
233
  schema: props.schema,
219
- $defs: props.parameters.$defs,
220
234
  accessor: props.accessor,
221
235
  });
222
236
  if (result.success === false) {
@@ -226,14 +240,15 @@ var LlmApplicationProgrammer;
226
240
  return result.value;
227
241
  };
228
242
  const writeValidator = (props) => {
243
+ // no parameter metadata — generate a permissive `any` validator
229
244
  if (props.parameter === null)
230
245
  return ValidateProgrammer_1.ValidateProgrammer.write(Object.assign(Object.assign({}, props), { type: props.context.checker.getTypeFromTypeNode(TypeFactory_1.TypeFactory.keyword("any")), config: {
231
246
  equals: props.equals,
232
247
  }, name: undefined }));
233
- const type = props.parameter.tsType;
234
- if (type === undefined)
235
- // unreachable
248
+ // unreachable tsType is always set by the transformer
249
+ if (props.parameter.tsType === undefined)
236
250
  throw new Error("Failed to write LLM application's function validator. You don't have to call `LlmApplicationOfValidator.write()` function by yourself, but only by the `typia.llm.applicationOfValidate()` function.");
251
+ // generate a typed validator from the parameter's TypeScript type
237
252
  return ValidateProgrammer_1.ValidateProgrammer.write(Object.assign(Object.assign({}, props), { type: props.parameter.tsType, config: {
238
253
  equals: props.equals,
239
254
  }, name: props.className
@@ -241,10 +256,16 @@ var LlmApplicationProgrammer;
241
256
  : undefined }));
242
257
  };
243
258
  })(LlmApplicationProgrammer || (exports.LlmApplicationProgrammer = LlmApplicationProgrammer = {}));
259
+ /**
260
+ * Concatenates summary and description into a single string.
261
+ *
262
+ * If both are present, joins them with a period and double newline, avoiding
263
+ * duplication when the description already starts with the summary.
264
+ */
244
265
  const concatDescription = (p) => {
245
- var _a, _b, _c;
266
+ var _a, _b;
246
267
  if (!((_a = p.summary) === null || _a === void 0 ? void 0 : _a.length) || !((_b = p.description) === null || _b === void 0 ? void 0 : _b.length))
247
- return (_c = p.summary) !== null && _c !== void 0 ? _c : p.description;
268
+ return p.summary || p.description;
248
269
  const summary = p.summary.endsWith(".")
249
270
  ? p.summary.slice(0, -1)
250
271
  : p.summary;
@@ -1 +1 @@
1
- {"version":3,"file":"LlmApplicationProgrammer.js","sourceRoot":"","sources":["../../../src/programmers/llm/LlmApplicationProgrammer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LlmApplicationProgrammer.js","sourceRoot":"","sources":["../../../src/programmers/llm/LlmApplicationProgrammer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { LlmSchemaConverter, LlmTypeChecker } from '@typia/utils';
1
+ import { LlmSchemaConverter } from '@typia/utils';
2
2
  import { TypeFactory } from '../../factories/TypeFactory.mjs';
3
3
  import { MetadataSchema } from '../../schemas/metadata/MetadataSchema.mjs';
4
4
  import { ValidateProgrammer } from '../ValidateProgrammer.mjs';
@@ -17,9 +17,9 @@ import { LlmSchemaProgrammer } from './LlmSchemaProgrammer.mjs';
17
17
  var LlmApplicationProgrammer;
18
18
  (function (LlmApplicationProgrammer) {
19
19
  LlmApplicationProgrammer.validate = (props) => {
20
- const top = props.metadata;
20
+ // the class
21
21
  if (props.explore.top === false)
22
- if (props.explore.object === top?.objects[0]?.type &&
22
+ if (props.explore.object === props.metadata?.objects[0]?.type &&
23
23
  typeof props.explore.property === "string" &&
24
24
  props.metadata.size() === 1 &&
25
25
  props.metadata.nullable === false &&
@@ -28,24 +28,26 @@ var LlmApplicationProgrammer;
28
28
  return validateFunction(props.explore.property, props.metadata.functions[0]);
29
29
  else
30
30
  return LlmSchemaProgrammer.validate(props);
31
+ // top-level type must be a single non-nullable required object
31
32
  const output = [];
32
- const validity = props.metadata.size() === 1 &&
33
+ const isValidType = props.metadata.size() === 1 &&
33
34
  props.metadata.objects.length === 1 &&
34
35
  props.metadata.isRequired() === true &&
35
36
  props.metadata.nullable === false;
36
- if (validity === false)
37
+ if (isValidType === false)
37
38
  output.push("LLM application's generic argument must be a class/interface type.");
39
+ // validate each property of the class/interface
38
40
  const object = props.metadata.objects[0]?.type;
39
41
  if (object !== undefined) {
40
42
  if (object.properties.some((p) => p.key.isSoleLiteral() === false))
41
43
  output.push("LLM application does not allow dynamic keys on class/interface type.");
42
- let least = false;
44
+ let least = false; // tracks whether at least one function exists
43
45
  for (const p of object.properties) {
44
46
  const name = JSON.stringify(p.key.getSoleLiteral());
45
47
  const value = p.value;
46
48
  if (value.functions.length) {
47
49
  least ||= true;
48
- if (validity === false) {
50
+ if (isValidType === false) {
49
51
  if (value.functions.length !== 1 || value.size() !== 1)
50
52
  output.push(`LLM application's function (${name}) type does not allow union type.`);
51
53
  if (value.isRequired() === false)
@@ -70,36 +72,47 @@ var LlmApplicationProgrammer;
70
72
  }
71
73
  return output;
72
74
  };
75
+ /**
76
+ * Validates that a {@link MetadataSchema} represents a valid
77
+ * {@link ILlmSchema.IParameters} type: a single, non-nullable, non-optional
78
+ * object type without dynamic property keys.
79
+ */
80
+ const validateObjectSchema = (prefix, label, schema) => {
81
+ const errors = [];
82
+ if (schema.isRequired() === false)
83
+ errors.push(`${prefix} ${label} cannot be optional (union with undefined).`);
84
+ if (schema.nullable === true)
85
+ errors.push(`${prefix} ${label} cannot be nullable.`);
86
+ if (schema.size() !== 1 || schema.objects.length !== 1)
87
+ errors.push(`${prefix} ${label} must be a single object type.`);
88
+ else if (schema.objects[0].type.properties.some((p) => p.key.isSoleLiteral() === false))
89
+ errors.push(`${prefix} ${label} cannot have dynamic property keys.`);
90
+ return errors;
91
+ };
73
92
  const validateFunction = (name, func) => {
74
- const output = [];
93
+ const messages = [];
75
94
  const prefix = `LLM application's function (${JSON.stringify(name)})`;
76
- if (func.output.size() && func.output.isRequired() === false)
77
- output.push(`${prefix} return type cannot be optional (union with undefined).`);
95
+ // function name
78
96
  if (/^[0-9]/.test(name[0] ?? "") === true)
79
- output.push(`${prefix} name cannot start with a number.`);
97
+ messages.push(`${prefix} name cannot start with a number.`);
80
98
  if (/^[a-zA-Z0-9_-]+$/.test(name) === false)
81
- output.push(`${prefix} name must contain only alphanumeric characters, underscores, or hyphens.`);
99
+ messages.push(`${prefix} name must contain only alphanumeric characters, underscores, or hyphens.`);
82
100
  if (name.length > 64)
83
- output.push(`${prefix} name cannot exceed 64 characters.`);
101
+ messages.push(`${prefix} name cannot exceed 64 characters.`);
102
+ // output
103
+ if (func.output.size() !== 0)
104
+ messages.push(...validateObjectSchema(prefix, "return type", func.output));
105
+ // parameters
84
106
  if (func.parameters.length !== 0 && func.parameters.length !== 1)
85
- output.push(`${prefix} must have exactly one parameter or no parameters.`);
86
- if (func.parameters.length !== 0) {
87
- const type = func.parameters[0].type;
88
- if (type.size() !== 1 || type.objects.length !== 1)
89
- output.push(`${prefix} parameter must be a single object type.`);
90
- else {
91
- if (type.objects[0].type.properties.some((p) => p.key.isSoleLiteral() === false))
92
- output.push(`${prefix} parameter cannot have dynamic property keys.`);
93
- if (type.isRequired() === false)
94
- output.push(`${prefix} parameter cannot be optional (union with undefined).`);
95
- if (type.nullable === true)
96
- output.push(`${prefix} parameter cannot be nullable.`);
97
- }
98
- }
99
- return output;
107
+ messages.push(`${prefix} must have exactly one parameter or no parameters.`);
108
+ if (func.parameters.length !== 0)
109
+ messages.push(...validateObjectSchema(prefix, "parameter", func.parameters[0].type));
110
+ return messages;
100
111
  };
101
112
  LlmApplicationProgrammer.write = (props) => {
102
113
  const metadata = MetadataSchema.unalias(props.metadata);
114
+ // collect the first parameter's MetadataParameter for each valid function,
115
+ // keyed by property name, for runtime validator generation
103
116
  const functionParameters = Object.fromEntries(metadata.objects[0].type.properties.filter((p) => p.key.isSoleLiteral() &&
104
117
  p.value.size() === 1 &&
105
118
  p.value.nullable === false &&
@@ -112,12 +125,14 @@ var LlmApplicationProgrammer;
112
125
  p.key.getSoleLiteral(),
113
126
  MetadataSchema.unalias(p.value).functions[0].parameters[0],
114
127
  ]));
128
+ // build JSON Schema application, filtering out @human-tagged parameters
115
129
  const errorMessages = [];
116
130
  const application = JsonApplicationProgrammer.write({
117
131
  version: "3.1",
118
132
  metadata,
119
133
  filter: (p) => p.jsDocTags.some((tag) => tag.name === "human") === false,
120
134
  });
135
+ // convert each JSON Schema function to an LLM function
121
136
  const functions = application.functions.map((func) => writeFunction({
122
137
  context: props.context,
123
138
  modulo: props.modulo,
@@ -128,9 +143,6 @@ var LlmApplicationProgrammer;
128
143
  errors: errorMessages,
129
144
  parameter: functionParameters[func.name] ?? null,
130
145
  }));
131
- if (functions.some((func) => func === null))
132
- throw new Error("Failed to write LLM application:\n\n" +
133
- errorMessages.map((str) => ` - ${str}`).join("\n"));
134
146
  return {
135
147
  config: {
136
148
  ...LlmSchemaConverter.getConfig(props.config),
@@ -142,6 +154,7 @@ var LlmApplicationProgrammer;
142
154
  };
143
155
  const writeFunction = (props) => {
144
156
  const config = LlmSchemaConverter.getConfig(props.config);
157
+ // convert parameters and output schemas
145
158
  const parameters = writeParameters({
146
159
  ...props,
147
160
  config,
@@ -150,7 +163,6 @@ var LlmApplicationProgrammer;
150
163
  if (parameters === null)
151
164
  return null;
152
165
  const output = writeOutput({
153
- parameters,
154
166
  config,
155
167
  components: props.components,
156
168
  schema: props.function.output?.schema ?? null,
@@ -159,26 +171,20 @@ var LlmApplicationProgrammer;
159
171
  });
160
172
  if (output === null)
161
173
  return null;
174
+ // fall back output description from the function metadata
162
175
  if (output &&
163
- LlmTypeChecker.isReference(output) === false &&
164
176
  output.description === undefined &&
165
177
  !!props.function.output?.description?.length)
166
178
  output.description = props.function.output.description;
179
+ // assemble the LLM function
167
180
  return {
168
181
  name: props.function.name,
169
182
  parameters,
170
183
  output: output ?? undefined,
171
- description: (() => {
172
- if (!props.function.summary?.length ||
173
- !props.function.description?.length)
174
- return props.function.summary || props.function.description;
175
- const summary = props.function.summary.endsWith(".")
176
- ? props.function.summary.slice(0, -1)
177
- : props.function.summary;
178
- return props.function.description.startsWith(summary)
179
- ? props.function.description
180
- : summary + ".\n\n" + props.function.description;
181
- })(),
184
+ description: concatDescription({
185
+ summary: props.function.summary,
186
+ description: props.function.description,
187
+ }),
182
188
  deprecated: props.function.deprecated,
183
189
  tags: props.function.tags,
184
190
  validate: writeValidator({
@@ -192,13 +198,14 @@ var LlmApplicationProgrammer;
192
198
  };
193
199
  };
194
200
  const writeParameters = (props) => {
201
+ // extract the first parameter's object schema, defaulting to empty object
195
202
  const schema = props.function.parameters[0]?.schema ?? {
196
203
  type: "object",
197
204
  properties: {},
198
205
  additionalProperties: false,
199
206
  required: [],
200
207
  };
201
- const result = LlmSchemaConverter.parameters({
208
+ return convertParameters({
202
209
  config: props.config,
203
210
  components: props.components,
204
211
  schema: {
@@ -207,21 +214,29 @@ var LlmApplicationProgrammer;
207
214
  description: schema.description ?? props.function.parameters[0]?.description,
208
215
  },
209
216
  accessor: props.accessor,
217
+ errors: props.errors,
210
218
  });
211
- if (result.success === false) {
212
- props.errors.push(...result.error.reasons.map((r) => ` - ${r.accessor}: ${r.message}`));
213
- return null;
214
- }
215
- return result.value;
216
219
  };
217
220
  const writeOutput = (props) => {
218
221
  if (props.schema === null)
219
222
  return undefined;
220
- const result = LlmSchemaConverter.schema({
223
+ return convertParameters({
224
+ config: props.config,
225
+ components: props.components,
226
+ schema: props.schema,
227
+ accessor: props.accessor,
228
+ errors: props.errors,
229
+ });
230
+ };
231
+ /**
232
+ * Converts an OpenAPI object schema to {@link ILlmSchema.IParameters},
233
+ * collecting transformation errors into the provided array.
234
+ */
235
+ const convertParameters = (props) => {
236
+ const result = LlmSchemaConverter.parameters({
221
237
  config: props.config,
222
238
  components: props.components,
223
239
  schema: props.schema,
224
- $defs: props.parameters.$defs,
225
240
  accessor: props.accessor,
226
241
  });
227
242
  if (result.success === false) {
@@ -231,6 +246,7 @@ var LlmApplicationProgrammer;
231
246
  return result.value;
232
247
  };
233
248
  const writeValidator = (props) => {
249
+ // no parameter metadata — generate a permissive `any` validator
234
250
  if (props.parameter === null)
235
251
  return ValidateProgrammer.write({
236
252
  ...props,
@@ -240,10 +256,10 @@ var LlmApplicationProgrammer;
240
256
  },
241
257
  name: undefined,
242
258
  });
243
- const type = props.parameter.tsType;
244
- if (type === undefined)
245
- // unreachable
259
+ // unreachable tsType is always set by the transformer
260
+ if (props.parameter.tsType === undefined)
246
261
  throw new Error("Failed to write LLM application's function validator. You don't have to call `LlmApplicationOfValidator.write()` function by yourself, but only by the `typia.llm.applicationOfValidate()` function.");
262
+ // generate a typed validator from the parameter's TypeScript type
247
263
  return ValidateProgrammer.write({
248
264
  ...props,
249
265
  type: props.parameter.tsType,
@@ -256,9 +272,15 @@ var LlmApplicationProgrammer;
256
272
  });
257
273
  };
258
274
  })(LlmApplicationProgrammer || (LlmApplicationProgrammer = {}));
275
+ /**
276
+ * Concatenates summary and description into a single string.
277
+ *
278
+ * If both are present, joins them with a period and double newline, avoiding
279
+ * duplication when the description already starts with the summary.
280
+ */
259
281
  const concatDescription = (p) => {
260
282
  if (!p.summary?.length || !p.description?.length)
261
- return p.summary ?? p.description;
283
+ return p.summary || p.description;
262
284
  const summary = p.summary.endsWith(".")
263
285
  ? p.summary.slice(0, -1)
264
286
  : p.summary;
@@ -1 +1 @@
1
- {"version":3,"file":"LlmApplicationProgrammer.mjs","sources":["../../../src/programmers/llm/LlmApplicationProgrammer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LlmApplicationProgrammer.mjs","sources":["../../../src/programmers/llm/LlmApplicationProgrammer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typia/core",
3
- "version": "12.0.0-dev.20260303-2",
3
+ "version": "12.0.0-dev.20260305",
4
4
  "description": "Superfast runtime validators with only one line",
5
5
  "main": "lib/index.js",
6
6
  "exports": {
@@ -22,8 +22,8 @@
22
22
  },
23
23
  "homepage": "https://typia.io",
24
24
  "dependencies": {
25
- "@typia/interface": "^12.0.0-dev.20260303-2",
26
- "@typia/utils": "^12.0.0-dev.20260303-2"
25
+ "@typia/interface": "^12.0.0-dev.20260305",
26
+ "@typia/utils": "^12.0.0-dev.20260305"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@rollup/plugin-commonjs": "^29.0.0",
@@ -8,7 +8,7 @@ import {
8
8
  IValidation,
9
9
  OpenApi,
10
10
  } from "@typia/interface";
11
- import { LlmSchemaConverter, LlmTypeChecker } from "@typia/utils";
11
+ import { LlmSchemaConverter } from "@typia/utils";
12
12
  import ts from "typescript";
13
13
 
14
14
  import { ITypiaContext } from "../../context/ITypiaContext";
@@ -37,10 +37,10 @@ export namespace LlmApplicationProgrammer {
37
37
  metadata: MetadataSchema;
38
38
  explore: MetadataFactory.IExplore;
39
39
  }): string[] => {
40
- const top: MetadataSchema = props.metadata;
40
+ // the class
41
41
  if (props.explore.top === false)
42
42
  if (
43
- props.explore.object === top?.objects[0]?.type &&
43
+ props.explore.object === props.metadata?.objects[0]?.type &&
44
44
  typeof props.explore.property === "string" &&
45
45
  props.metadata.size() === 1 &&
46
46
  props.metadata.nullable === false &&
@@ -53,17 +53,19 @@ export namespace LlmApplicationProgrammer {
53
53
  );
54
54
  else return LlmSchemaProgrammer.validate(props);
55
55
 
56
+ // top-level type must be a single non-nullable required object
56
57
  const output: string[] = [];
57
- const validity: boolean =
58
+ const isValidType: boolean =
58
59
  props.metadata.size() === 1 &&
59
60
  props.metadata.objects.length === 1 &&
60
61
  props.metadata.isRequired() === true &&
61
62
  props.metadata.nullable === false;
62
- if (validity === false)
63
+ if (isValidType === false)
63
64
  output.push(
64
65
  "LLM application's generic argument must be a class/interface type.",
65
66
  );
66
67
 
68
+ // validate each property of the class/interface
67
69
  const object: MetadataObjectType | undefined =
68
70
  props.metadata.objects[0]?.type;
69
71
  if (object !== undefined) {
@@ -71,13 +73,13 @@ export namespace LlmApplicationProgrammer {
71
73
  output.push(
72
74
  "LLM application does not allow dynamic keys on class/interface type.",
73
75
  );
74
- let least: boolean = false;
76
+ let least: boolean = false; // tracks whether at least one function exists
75
77
  for (const p of object.properties) {
76
78
  const name: string = JSON.stringify(p.key.getSoleLiteral()!);
77
79
  const value: MetadataSchema = p.value;
78
80
  if (value.functions.length) {
79
81
  least ||= true;
80
- if (validity === false) {
82
+ if (isValidType === false) {
81
83
  if (value.functions.length !== 1 || value.size() !== 1)
82
84
  output.push(
83
85
  `LLM application's function (${name}) type does not allow union type.`,
@@ -117,45 +119,64 @@ export namespace LlmApplicationProgrammer {
117
119
  return output;
118
120
  };
119
121
 
122
+ /**
123
+ * Validates that a {@link MetadataSchema} represents a valid
124
+ * {@link ILlmSchema.IParameters} type: a single, non-nullable, non-optional
125
+ * object type without dynamic property keys.
126
+ */
127
+ const validateObjectSchema = (
128
+ prefix: string,
129
+ label: string,
130
+ schema: MetadataSchema,
131
+ ): string[] => {
132
+ const errors: string[] = [];
133
+ if (schema.isRequired() === false)
134
+ errors.push(
135
+ `${prefix} ${label} cannot be optional (union with undefined).`,
136
+ );
137
+ if (schema.nullable === true)
138
+ errors.push(`${prefix} ${label} cannot be nullable.`);
139
+ if (schema.size() !== 1 || schema.objects.length !== 1)
140
+ errors.push(`${prefix} ${label} must be a single object type.`);
141
+ else if (
142
+ schema.objects[0]!.type.properties.some(
143
+ (p) => p.key.isSoleLiteral() === false,
144
+ )
145
+ )
146
+ errors.push(`${prefix} ${label} cannot have dynamic property keys.`);
147
+ return errors;
148
+ };
149
+
120
150
  const validateFunction = (name: string, func: MetadataFunction): string[] => {
121
- const output: string[] = [];
151
+ const messages: string[] = [];
122
152
  const prefix: string = `LLM application's function (${JSON.stringify(name)})`;
123
- if (func.output.size() && func.output.isRequired() === false)
124
- output.push(
125
- `${prefix} return type cannot be optional (union with undefined).`,
126
- );
153
+
154
+ // function name
127
155
  if (/^[0-9]/.test(name[0] ?? "") === true)
128
- output.push(`${prefix} name cannot start with a number.`);
156
+ messages.push(`${prefix} name cannot start with a number.`);
129
157
  if (/^[a-zA-Z0-9_-]+$/.test(name) === false)
130
- output.push(
158
+ messages.push(
131
159
  `${prefix} name must contain only alphanumeric characters, underscores, or hyphens.`,
132
160
  );
133
161
  if (name.length > 64)
134
- output.push(`${prefix} name cannot exceed 64 characters.`);
162
+ messages.push(`${prefix} name cannot exceed 64 characters.`);
163
+
164
+ // output
165
+ if (func.output.size() !== 0)
166
+ messages.push(
167
+ ...validateObjectSchema(prefix, "return type", func.output),
168
+ );
169
+
170
+ // parameters
135
171
  if (func.parameters.length !== 0 && func.parameters.length !== 1)
136
- output.push(
172
+ messages.push(
137
173
  `${prefix} must have exactly one parameter or no parameters.`,
138
174
  );
139
- if (func.parameters.length !== 0) {
140
- const type: MetadataSchema = func.parameters[0]!.type;
141
- if (type.size() !== 1 || type.objects.length !== 1)
142
- output.push(`${prefix} parameter must be a single object type.`);
143
- else {
144
- if (
145
- type.objects[0]!.type.properties.some(
146
- (p) => p.key.isSoleLiteral() === false,
147
- )
148
- )
149
- output.push(`${prefix} parameter cannot have dynamic property keys.`);
150
- if (type.isRequired() === false)
151
- output.push(
152
- `${prefix} parameter cannot be optional (union with undefined).`,
153
- );
154
- if (type.nullable === true)
155
- output.push(`${prefix} parameter cannot be nullable.`);
156
- }
157
- }
158
- return output;
175
+ if (func.parameters.length !== 0)
176
+ messages.push(
177
+ ...validateObjectSchema(prefix, "parameter", func.parameters[0]!.type),
178
+ );
179
+ return messages;
159
180
  };
160
181
 
161
182
  export const write = (props: {
@@ -170,6 +191,9 @@ export namespace LlmApplicationProgrammer {
170
191
  name?: string;
171
192
  }): ILlmApplication => {
172
193
  const metadata: MetadataSchema = MetadataSchema.unalias(props.metadata);
194
+
195
+ // collect the first parameter's MetadataParameter for each valid function,
196
+ // keyed by property name, for runtime validator generation
173
197
  const functionParameters: Record<string, MetadataParameter> =
174
198
  Object.fromEntries(
175
199
  metadata.objects[0]!.type.properties.filter(
@@ -195,6 +219,7 @@ export namespace LlmApplicationProgrammer {
195
219
  ]),
196
220
  );
197
221
 
222
+ // build JSON Schema application, filtering out @human-tagged parameters
198
223
  const errorMessages: string[] = [];
199
224
  const application: IJsonSchemaApplication<"3.1"> =
200
225
  JsonApplicationProgrammer.write({
@@ -203,6 +228,7 @@ export namespace LlmApplicationProgrammer {
203
228
  filter: (p) =>
204
229
  p.jsDocTags.some((tag) => tag.name === "human") === false,
205
230
  });
231
+ // convert each JSON Schema function to an LLM function
206
232
  const functions: Array<ILlmFunction | null> = application.functions.map(
207
233
  (func) =>
208
234
  writeFunction({
@@ -216,11 +242,6 @@ export namespace LlmApplicationProgrammer {
216
242
  parameter: functionParameters[func.name] ?? null,
217
243
  }),
218
244
  );
219
- if (functions.some((func) => func === null))
220
- throw new Error(
221
- "Failed to write LLM application:\n\n" +
222
- errorMessages.map((str) => ` - ${str}`).join("\n"),
223
- );
224
245
  return {
225
246
  config: {
226
247
  ...LlmSchemaConverter.getConfig(props.config),
@@ -250,14 +271,15 @@ export namespace LlmApplicationProgrammer {
250
271
  const config: ILlmSchema.IConfig = LlmSchemaConverter.getConfig(
251
272
  props.config,
252
273
  );
274
+
275
+ // convert parameters and output schemas
253
276
  const parameters: ILlmSchema.IParameters | null = writeParameters({
254
277
  ...props,
255
278
  config,
256
279
  accessor: `$input.${props.function.name}.parameters`,
257
280
  });
258
281
  if (parameters === null) return null;
259
- const output: ILlmSchema | null | undefined = writeOutput({
260
- parameters,
282
+ const output: ILlmSchema.IParameters | null | undefined = writeOutput({
261
283
  config,
262
284
  components: props.components,
263
285
  schema: props.function.output?.schema ?? null,
@@ -266,30 +288,23 @@ export namespace LlmApplicationProgrammer {
266
288
  });
267
289
  if (output === null) return null;
268
290
 
291
+ // fall back output description from the function metadata
269
292
  if (
270
293
  output &&
271
- LlmTypeChecker.isReference(output) === false &&
272
294
  output.description === undefined &&
273
295
  !!props.function.output?.description?.length
274
296
  )
275
297
  output.description = props.function.output.description;
298
+
299
+ // assemble the LLM function
276
300
  return {
277
301
  name: props.function.name,
278
302
  parameters,
279
303
  output: output ?? undefined,
280
- description: (() => {
281
- if (
282
- !props.function.summary?.length ||
283
- !props.function.description?.length
284
- )
285
- return props.function.summary || props.function.description;
286
- const summary: string = props.function.summary.endsWith(".")
287
- ? props.function.summary.slice(0, -1)
288
- : props.function.summary;
289
- return props.function.description.startsWith(summary)
290
- ? props.function.description
291
- : summary + ".\n\n" + props.function.description;
292
- })(),
304
+ description: concatDescription({
305
+ summary: props.function.summary,
306
+ description: props.function.description,
307
+ }),
293
308
  deprecated: props.function.deprecated,
294
309
  tags: props.function.tags,
295
310
  validate: writeValidator({
@@ -310,6 +325,7 @@ export namespace LlmApplicationProgrammer {
310
325
  accessor: string;
311
326
  config: ILlmSchema.IConfig;
312
327
  }): ILlmSchema.IParameters | null => {
328
+ // extract the first parameter's object schema, defaulting to empty object
313
329
  const schema: OpenApi.IJsonSchema.IObject | OpenApi.IJsonSchema.IReference =
314
330
  (props.function.parameters[0]?.schema as
315
331
  | OpenApi.IJsonSchema.IObject
@@ -319,42 +335,55 @@ export namespace LlmApplicationProgrammer {
319
335
  additionalProperties: false,
320
336
  required: [],
321
337
  };
322
- const result: IResult<ILlmSchema.IParameters, IJsonSchemaTransformError> =
323
- LlmSchemaConverter.parameters({
324
- config: props.config,
325
- components: props.components,
326
- schema: {
327
- ...schema,
328
- title: schema.title ?? props.function.parameters[0]?.title,
329
- description:
330
- schema.description ?? props.function.parameters[0]?.description,
331
- },
332
- accessor: props.accessor,
333
- });
334
- if (result.success === false) {
335
- props.errors.push(
336
- ...result.error.reasons.map((r) => ` - ${r.accessor}: ${r.message}`),
337
- );
338
- return null;
339
- }
340
- return result.value;
338
+ return convertParameters({
339
+ config: props.config,
340
+ components: props.components,
341
+ schema: {
342
+ ...schema,
343
+ title: schema.title ?? props.function.parameters[0]?.title,
344
+ description:
345
+ schema.description ?? props.function.parameters[0]?.description,
346
+ },
347
+ accessor: props.accessor,
348
+ errors: props.errors,
349
+ });
341
350
  };
342
351
 
343
352
  const writeOutput = (props: {
344
- parameters: ILlmSchema.IParameters;
345
353
  components: OpenApi.IComponents;
346
354
  config: ILlmSchema.IConfig;
347
355
  schema: OpenApi.IJsonSchema | null;
348
356
  errors: string[];
349
357
  accessor: string;
350
- }): ILlmSchema | null | undefined => {
358
+ }): ILlmSchema.IParameters | null | undefined => {
351
359
  if (props.schema === null) return undefined;
352
- const result: IResult<ILlmSchema, IJsonSchemaTransformError> =
353
- LlmSchemaConverter.schema({
360
+ return convertParameters({
361
+ config: props.config,
362
+ components: props.components,
363
+ schema: props.schema as
364
+ | OpenApi.IJsonSchema.IObject
365
+ | OpenApi.IJsonSchema.IReference,
366
+ accessor: props.accessor,
367
+ errors: props.errors,
368
+ });
369
+ };
370
+
371
+ /**
372
+ * Converts an OpenAPI object schema to {@link ILlmSchema.IParameters},
373
+ * collecting transformation errors into the provided array.
374
+ */
375
+ const convertParameters = (props: {
376
+ config: ILlmSchema.IConfig;
377
+ components: OpenApi.IComponents;
378
+ schema: OpenApi.IJsonSchema.IObject | OpenApi.IJsonSchema.IReference;
379
+ accessor: string;
380
+ errors: string[];
381
+ }): ILlmSchema.IParameters | null => {
382
+ const result: IResult<ILlmSchema.IParameters, IJsonSchemaTransformError> =
383
+ LlmSchemaConverter.parameters({
354
384
  config: props.config,
355
385
  components: props.components,
356
386
  schema: props.schema,
357
- $defs: (props.parameters as any).$defs,
358
387
  accessor: props.accessor,
359
388
  });
360
389
  if (result.success === false) {
@@ -374,6 +403,7 @@ export namespace LlmApplicationProgrammer {
374
403
  equals: boolean;
375
404
  className?: string;
376
405
  }): ((props: unknown) => IValidation<unknown>) => {
406
+ // no parameter metadata — generate a permissive `any` validator
377
407
  if (props.parameter === null)
378
408
  return ValidateProgrammer.write({
379
409
  ...props,
@@ -386,12 +416,13 @@ export namespace LlmApplicationProgrammer {
386
416
  name: undefined,
387
417
  }) as any;
388
418
 
389
- const type: ts.Type | undefined = props.parameter.tsType;
390
- if (type === undefined)
391
- // unreachable
419
+ // unreachable tsType is always set by the transformer
420
+ if (props.parameter.tsType === undefined)
392
421
  throw new Error(
393
422
  "Failed to write LLM application's function validator. You don't have to call `LlmApplicationOfValidator.write()` function by yourself, but only by the `typia.llm.applicationOfValidate()` function.",
394
423
  );
424
+
425
+ // generate a typed validator from the parameter's TypeScript type
395
426
  return ValidateProgrammer.write({
396
427
  ...props,
397
428
  type: props.parameter.tsType!,
@@ -407,12 +438,18 @@ export namespace LlmApplicationProgrammer {
407
438
  };
408
439
  }
409
440
 
441
+ /**
442
+ * Concatenates summary and description into a single string.
443
+ *
444
+ * If both are present, joins them with a period and double newline, avoiding
445
+ * duplication when the description already starts with the summary.
446
+ */
410
447
  const concatDescription = (p: {
411
448
  summary?: string | undefined;
412
449
  description?: string | undefined;
413
450
  }): string | undefined => {
414
451
  if (!p.summary?.length || !p.description?.length)
415
- return p.summary ?? p.description;
452
+ return p.summary || p.description;
416
453
  const summary: string = p.summary.endsWith(".")
417
454
  ? p.summary.slice(0, -1)
418
455
  : p.summary;