typia 9.0.0 → 9.1.0-dev.20250408

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.
Files changed (577) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +149 -150
  3. package/lib/executable/setup/PluginConfigurator.js +3 -3
  4. package/lib/executable/setup/PluginConfigurator.mjs +3 -3
  5. package/lib/executable/typia.js +15 -15
  6. package/lib/executable/typia.mjs +15 -15
  7. package/lib/factories/MetadataCommentTagFactory.js +8 -10
  8. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  9. package/lib/factories/MetadataCommentTagFactory.mjs +8 -10
  10. package/lib/functional.js +19 -27
  11. package/lib/functional.js.map +1 -1
  12. package/lib/functional.mjs +20 -27
  13. package/lib/http.js +27 -32
  14. package/lib/http.js.map +1 -1
  15. package/lib/http.mjs +28 -32
  16. package/lib/json.d.mts +66 -4
  17. package/lib/json.d.ts +66 -4
  18. package/lib/json.js +23 -21
  19. package/lib/json.js.map +1 -1
  20. package/lib/json.mjs +24 -22
  21. package/lib/llm.js +4 -9
  22. package/lib/llm.js.map +1 -1
  23. package/lib/llm.mjs +5 -9
  24. package/lib/misc.js +27 -23
  25. package/lib/misc.js.map +1 -1
  26. package/lib/misc.mjs +28 -23
  27. package/lib/module.d.mts +1 -0
  28. package/lib/module.d.ts +1 -0
  29. package/lib/module.js +20 -24
  30. package/lib/module.js.map +1 -1
  31. package/lib/module.mjs +19 -24
  32. package/lib/notations.js +25 -30
  33. package/lib/notations.js.map +1 -1
  34. package/lib/notations.mjs +26 -30
  35. package/lib/programmers/json/JsonSchemaProgrammer.d.mts +9 -0
  36. package/lib/programmers/json/JsonSchemaProgrammer.d.ts +9 -0
  37. package/lib/programmers/json/JsonSchemaProgrammer.js +20 -0
  38. package/lib/programmers/json/JsonSchemaProgrammer.js.map +1 -0
  39. package/lib/programmers/json/JsonSchemaProgrammer.mjs +20 -0
  40. package/lib/programmers/json/JsonSchemaProgrammer.mjs.map +1 -0
  41. package/lib/programmers/json/JsonSchemasProgrammer.js +1 -1
  42. package/lib/programmers/json/JsonSchemasProgrammer.js.map +1 -1
  43. package/lib/programmers/json/JsonSchemasProgrammer.mjs +1 -1
  44. package/lib/protobuf.js +18 -23
  45. package/lib/protobuf.js.map +1 -1
  46. package/lib/protobuf.mjs +19 -23
  47. package/lib/reflect.js +3 -8
  48. package/lib/reflect.js.map +1 -1
  49. package/lib/reflect.mjs +4 -8
  50. package/lib/schemas/json/IJsonSchemaUnit.d.mts +26 -0
  51. package/lib/schemas/json/IJsonSchemaUnit.d.ts +26 -0
  52. package/lib/schemas/json/IJsonSchemaUnit.js +3 -0
  53. package/lib/schemas/json/IJsonSchemaUnit.js.map +1 -0
  54. package/lib/schemas/json/IJsonSchemaUnit.mjs +2 -0
  55. package/lib/schemas/json/IJsonSchemaUnit.mjs.map +1 -0
  56. package/lib/transformers/CallExpressionTransformer.js +2 -2
  57. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  58. package/lib/transformers/CallExpressionTransformer.mjs +2 -2
  59. package/lib/transformers/NoTransformConfigurationError.d.mts +1 -0
  60. package/lib/transformers/NoTransformConfigurationError.d.ts +1 -0
  61. package/lib/transformers/NoTransformConfigurationError.js +20 -0
  62. package/lib/transformers/NoTransformConfigurationError.js.map +1 -0
  63. package/lib/transformers/NoTransformConfigurationError.mjs +19 -0
  64. package/lib/transformers/NoTransformConfigurationError.mjs.map +1 -0
  65. package/lib/transformers/features/json/JsonSchemaTransformer.d.mts +5 -0
  66. package/lib/transformers/features/json/JsonSchemaTransformer.d.ts +5 -0
  67. package/lib/transformers/features/json/JsonSchemaTransformer.js +108 -0
  68. package/lib/transformers/features/json/JsonSchemaTransformer.js.map +1 -0
  69. package/lib/transformers/features/json/JsonSchemaTransformer.mjs +104 -0
  70. package/lib/transformers/features/json/JsonSchemaTransformer.mjs.map +1 -0
  71. package/lib/transformers/features/json/JsonSchemasTransformer.js +9 -9
  72. package/lib/transformers/features/json/JsonSchemasTransformer.js.map +1 -1
  73. package/lib/transformers/features/json/JsonSchemasTransformer.mjs +9 -9
  74. package/package.json +1 -4
  75. package/src/AssertionGuard.ts +1 -1
  76. package/src/CamelCase.ts +75 -75
  77. package/src/IRandomGenerator.ts +49 -49
  78. package/src/IReadableURLSearchParams.ts +9 -9
  79. package/src/IValidation.ts +1 -1
  80. package/src/PascalCase.ts +71 -71
  81. package/src/Primitive.ts +92 -92
  82. package/src/Resolved.ts +74 -74
  83. package/src/SnakeCase.ts +126 -126
  84. package/src/TypeGuardError.ts +37 -37
  85. package/src/executable/TypiaGenerateWizard.ts +83 -83
  86. package/src/executable/TypiaPatchWizard.ts +45 -45
  87. package/src/executable/TypiaSetupWizard.ts +171 -171
  88. package/src/executable/setup/ArgumentParser.ts +42 -42
  89. package/src/executable/setup/CommandExecutor.ts +8 -8
  90. package/src/executable/setup/FileRetriever.ts +19 -19
  91. package/src/executable/setup/PackageManager.ts +87 -87
  92. package/src/executable/setup/PluginConfigurator.ts +69 -69
  93. package/src/executable/typia.ts +55 -55
  94. package/src/factories/CommentFactory.ts +79 -79
  95. package/src/factories/ExpressionFactory.ts +216 -216
  96. package/src/factories/IdentifierFactory.ts +89 -89
  97. package/src/factories/JsonMetadataFactory.ts +83 -83
  98. package/src/factories/LiteralFactory.ts +52 -52
  99. package/src/factories/MetadataCollection.ts +278 -278
  100. package/src/factories/MetadataCommentTagFactory.ts +648 -650
  101. package/src/factories/MetadataFactory.ts +404 -404
  102. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  103. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  104. package/src/factories/NumericRangeFactory.ts +72 -72
  105. package/src/factories/ProtobufFactory.ts +875 -875
  106. package/src/factories/StatementFactory.ts +90 -90
  107. package/src/factories/TemplateFactory.ts +64 -64
  108. package/src/factories/TypeFactory.ts +140 -140
  109. package/src/factories/ValueFactory.ts +12 -12
  110. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  111. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  112. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  113. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  114. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  115. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  116. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  117. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  118. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  119. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  120. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  121. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  122. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  123. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  124. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  125. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  126. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  127. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  128. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  129. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  130. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  131. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  132. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  133. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  134. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  135. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  136. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  137. package/src/functional.ts +740 -750
  138. package/src/http.ts +1040 -1047
  139. package/src/index.ts +4 -4
  140. package/src/internal/_IProtobufWriter.ts +18 -18
  141. package/src/internal/_ProtobufReader.ts +194 -194
  142. package/src/internal/_ProtobufSizer.ts +145 -145
  143. package/src/internal/_ProtobufWriter.ts +145 -145
  144. package/src/internal/_accessExpressionAsString.ts +46 -46
  145. package/src/internal/_assertGuard.ts +13 -13
  146. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  147. package/src/internal/_httpFormDataReadArray.ts +4 -4
  148. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  149. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  150. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  151. package/src/internal/_httpFormDataReadFile.ts +10 -10
  152. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  153. package/src/internal/_httpFormDataReadString.ts +10 -10
  154. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  155. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  156. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  157. package/src/internal/_httpParameterReadBigint.ts +10 -10
  158. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  159. package/src/internal/_httpParameterReadNumber.ts +7 -7
  160. package/src/internal/_httpParameterReadString.ts +2 -2
  161. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  162. package/src/internal/_httpQueryReadArray.ts +4 -4
  163. package/src/internal/_httpQueryReadBigint.ts +12 -12
  164. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  165. package/src/internal/_httpQueryReadNumber.ts +9 -9
  166. package/src/internal/_httpQueryReadString.ts +4 -4
  167. package/src/internal/_isBetween.ts +2 -2
  168. package/src/internal/_isBigintString.ts +8 -8
  169. package/src/internal/_isFormatByte.ts +7 -7
  170. package/src/internal/_isFormatDate.ts +3 -3
  171. package/src/internal/_isFormatDateTime.ts +4 -4
  172. package/src/internal/_isFormatDuration.ts +4 -4
  173. package/src/internal/_isFormatEmail.ts +4 -4
  174. package/src/internal/_isFormatHostname.ts +4 -4
  175. package/src/internal/_isFormatIdnEmail.ts +4 -4
  176. package/src/internal/_isFormatIdnHostname.ts +4 -4
  177. package/src/internal/_isFormatIpv4.ts +4 -4
  178. package/src/internal/_isFormatIpv6.ts +4 -4
  179. package/src/internal/_isFormatIri.ts +3 -3
  180. package/src/internal/_isFormatIriReference.ts +4 -4
  181. package/src/internal/_isFormatJsonPointer.ts +3 -3
  182. package/src/internal/_isFormatPassword.ts +1 -1
  183. package/src/internal/_isFormatRegex.ts +8 -8
  184. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  185. package/src/internal/_isFormatTime.ts +4 -4
  186. package/src/internal/_isFormatUri.ts +6 -6
  187. package/src/internal/_isFormatUriReference.ts +5 -5
  188. package/src/internal/_isFormatUriTemplate.ts +4 -4
  189. package/src/internal/_isFormatUrl.ts +4 -4
  190. package/src/internal/_isFormatUuid.ts +3 -3
  191. package/src/internal/_isTypeFloat.ts +5 -5
  192. package/src/internal/_isTypeInt32.ts +5 -5
  193. package/src/internal/_isTypeInt64.ts +5 -5
  194. package/src/internal/_isTypeUint32.ts +5 -5
  195. package/src/internal/_isTypeUint64.ts +5 -5
  196. package/src/internal/_isUniqueItems.ts +159 -159
  197. package/src/internal/_jsonStringifyNumber.ts +12 -12
  198. package/src/internal/_jsonStringifyRest.ts +3 -3
  199. package/src/internal/_jsonStringifyString.ts +42 -42
  200. package/src/internal/_jsonStringifyTail.ts +2 -2
  201. package/src/internal/_llmApplicationFinalize.ts +20 -20
  202. package/src/internal/_miscCloneAny.ts +46 -46
  203. package/src/internal/_notationAny.ts +37 -37
  204. package/src/internal/_notationCamel.ts +13 -13
  205. package/src/internal/_notationPascal.ts +8 -8
  206. package/src/internal/_notationSnake.ts +43 -43
  207. package/src/internal/_randomArray.ts +21 -21
  208. package/src/internal/_randomBigint.ts +6 -6
  209. package/src/internal/_randomBoolean.ts +1 -1
  210. package/src/internal/_randomFormatByte.ts +3 -3
  211. package/src/internal/_randomFormatDate.ts +18 -18
  212. package/src/internal/_randomFormatDatetime.ts +16 -16
  213. package/src/internal/_randomFormatDuration.ts +27 -27
  214. package/src/internal/_randomFormatEmail.ts +11 -11
  215. package/src/internal/_randomFormatHostname.ts +6 -6
  216. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  217. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  218. package/src/internal/_randomFormatIpv4.ts +11 -11
  219. package/src/internal/_randomFormatIpv6.ts +11 -11
  220. package/src/internal/_randomFormatIri.ts +3 -3
  221. package/src/internal/_randomFormatIriReference.ts +3 -3
  222. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  223. package/src/internal/_randomFormatPassword.ts +8 -8
  224. package/src/internal/_randomFormatRegex.ts +4 -4
  225. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  226. package/src/internal/_randomFormatTime.ts +14 -14
  227. package/src/internal/_randomFormatUri.ts +3 -3
  228. package/src/internal/_randomFormatUriReference.ts +3 -3
  229. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  230. package/src/internal/_randomFormatUrl.ts +11 -11
  231. package/src/internal/_randomFormatUuid.ts +6 -6
  232. package/src/internal/_randomInteger.ts +53 -53
  233. package/src/internal/_randomNumber.ts +80 -80
  234. package/src/internal/_randomPattern.ts +10 -10
  235. package/src/internal/_randomPick.ts +9 -9
  236. package/src/internal/_randomString.ts +24 -24
  237. package/src/internal/_throwTypeGuardError.ts +5 -5
  238. package/src/internal/_validateReport.ts +13 -13
  239. package/src/internal/private/__notationCapitalize.ts +2 -2
  240. package/src/internal/private/__notationUnsnake.ts +24 -24
  241. package/src/json.ts +696 -696
  242. package/src/llm.ts +335 -342
  243. package/src/misc.ts +651 -658
  244. package/src/module.ts +929 -935
  245. package/src/notations.ts +820 -827
  246. package/src/programmers/AssertProgrammer.ts +454 -454
  247. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  248. package/src/programmers/FeatureProgrammer.ts +622 -622
  249. package/src/programmers/ImportProgrammer.ts +185 -185
  250. package/src/programmers/IsProgrammer.ts +273 -273
  251. package/src/programmers/RandomProgrammer.ts +1190 -1190
  252. package/src/programmers/TypiaProgrammer.ts +175 -175
  253. package/src/programmers/ValidateProgrammer.ts +439 -439
  254. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  255. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  256. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  257. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  258. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  259. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  260. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  261. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  262. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  263. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  264. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  265. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  266. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  267. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  268. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  269. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  270. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  271. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  272. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  273. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  274. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  275. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  276. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  277. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  278. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  279. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  280. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  281. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  282. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  283. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  284. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  285. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  286. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  287. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  288. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  289. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  290. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  291. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  292. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  293. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  294. package/src/programmers/internal/check_array_length.ts +47 -47
  295. package/src/programmers/internal/check_bigint.ts +50 -50
  296. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  297. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  298. package/src/programmers/internal/check_everything.ts +23 -23
  299. package/src/programmers/internal/check_native.ts +27 -27
  300. package/src/programmers/internal/check_number.ts +112 -112
  301. package/src/programmers/internal/check_object.ts +75 -75
  302. package/src/programmers/internal/check_string.ts +50 -50
  303. package/src/programmers/internal/check_template.ts +48 -48
  304. package/src/programmers/internal/check_union_array_like.ts +335 -335
  305. package/src/programmers/internal/decode_union_object.ts +116 -116
  306. package/src/programmers/internal/feature_object_entries.ts +61 -61
  307. package/src/programmers/internal/json_schema_alias.ts +47 -47
  308. package/src/programmers/internal/json_schema_array.ts +45 -45
  309. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  310. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  311. package/src/programmers/internal/json_schema_constant.ts +26 -26
  312. package/src/programmers/internal/json_schema_description.ts +12 -12
  313. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  314. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  315. package/src/programmers/internal/json_schema_native.ts +33 -33
  316. package/src/programmers/internal/json_schema_number.ts +15 -15
  317. package/src/programmers/internal/json_schema_object.ts +158 -158
  318. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  319. package/src/programmers/internal/json_schema_station.ts +185 -185
  320. package/src/programmers/internal/json_schema_string.ts +15 -15
  321. package/src/programmers/internal/json_schema_template.ts +55 -55
  322. package/src/programmers/internal/json_schema_title.ts +20 -20
  323. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  324. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  325. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  326. package/src/programmers/internal/prune_object_properties.ts +71 -71
  327. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  328. package/src/programmers/internal/stringify_native.ts +7 -7
  329. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  330. package/src/programmers/internal/template_to_pattern.ts +23 -23
  331. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  332. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  333. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  334. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  335. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  336. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  337. package/src/programmers/json/JsonSchemaProgrammer.ts +26 -0
  338. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  339. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  340. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  341. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  342. package/src/programmers/llm/LlmApplicationProgrammer.ts +401 -401
  343. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  344. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  345. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  346. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  347. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  348. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  349. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  350. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  351. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  352. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  353. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  354. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  355. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  356. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  357. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  358. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  359. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  360. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  361. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  362. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  363. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  364. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  365. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  366. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  367. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  368. package/src/protobuf.ts +861 -868
  369. package/src/reflect.ts +50 -57
  370. package/src/schemas/json/IJsonApplication.ts +73 -73
  371. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  372. package/src/schemas/json/IJsonSchemaUnit.ts +32 -0
  373. package/src/schemas/json/__IJsonApplication.ts +63 -63
  374. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  375. package/src/schemas/metadata/IMetadata.ts +35 -35
  376. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  377. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  378. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  379. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  380. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  381. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  382. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  383. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  384. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  385. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  386. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  387. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  388. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  389. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  390. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  391. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  392. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  393. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  394. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  395. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  396. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  397. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  398. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  399. package/src/schemas/metadata/Metadata.ts +687 -687
  400. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  401. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  402. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  403. package/src/schemas/metadata/MetadataArray.ts +49 -49
  404. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  405. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  406. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  407. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  408. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  409. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  410. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  411. package/src/schemas/metadata/MetadataMap.ts +48 -48
  412. package/src/schemas/metadata/MetadataNative.ts +44 -44
  413. package/src/schemas/metadata/MetadataObject.ts +48 -48
  414. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  415. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  416. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  417. package/src/schemas/metadata/MetadataSet.ts +45 -45
  418. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  419. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  420. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  421. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  422. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  423. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  424. package/src/tags/Constant.ts +15 -15
  425. package/src/tags/ContentMediaType.ts +10 -10
  426. package/src/tags/Default.ts +22 -22
  427. package/src/tags/Example.ts +24 -24
  428. package/src/tags/Examples.ts +16 -16
  429. package/src/tags/ExclusiveMaximum.ts +23 -23
  430. package/src/tags/ExclusiveMinimum.ts +23 -23
  431. package/src/tags/Format.ts +50 -50
  432. package/src/tags/JsonSchemaPlugin.ts +8 -8
  433. package/src/tags/MaxItems.ts +12 -12
  434. package/src/tags/MaxLength.ts +12 -12
  435. package/src/tags/Maximum.ts +19 -19
  436. package/src/tags/MinItems.ts +12 -12
  437. package/src/tags/MinLength.ts +12 -12
  438. package/src/tags/Minimum.ts +19 -19
  439. package/src/tags/MultipleOf.ts +21 -21
  440. package/src/tags/Pattern.ts +31 -31
  441. package/src/tags/Sequence.ts +10 -10
  442. package/src/tags/TagBase.ts +82 -82
  443. package/src/tags/Type.ts +37 -37
  444. package/src/tags/UniqueItems.ts +14 -14
  445. package/src/tags/index.ts +21 -21
  446. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  447. package/src/transform.ts +35 -35
  448. package/src/transformers/CallExpressionTransformer.ts +546 -546
  449. package/src/transformers/FileTransformer.ts +136 -136
  450. package/src/transformers/IProgrammerProps.ts +11 -11
  451. package/src/transformers/ITransformOptions.ts +62 -62
  452. package/src/transformers/ITransformProps.ts +9 -9
  453. package/src/transformers/ITypiaContext.ts +18 -18
  454. package/src/transformers/ImportTransformer.ts +81 -81
  455. package/src/transformers/NoTransformConfigurationError.ts +18 -0
  456. package/src/transformers/NodeTransformer.ts +17 -17
  457. package/src/transformers/TransformerError.ts +60 -60
  458. package/src/transformers/features/AssertTransformer.ts +24 -24
  459. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  460. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  461. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  462. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  463. package/src/transformers/features/IsTransformer.ts +18 -18
  464. package/src/transformers/features/RandomTransformer.ts +41 -41
  465. package/src/transformers/features/ValidateTransformer.ts +18 -18
  466. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  467. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  468. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  469. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  470. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  471. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  472. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  473. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  474. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  475. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  476. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  477. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  478. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  479. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  480. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  481. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  482. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  483. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  484. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  485. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  486. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  487. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  488. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  489. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  490. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  491. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  492. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  493. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  494. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  495. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  496. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  497. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  498. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  499. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  500. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  501. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  502. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  503. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  504. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  505. package/src/transformers/features/json/JsonSchemaTransformer.ts +135 -0
  506. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  507. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  508. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  509. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  510. package/src/transformers/features/llm/LlmApplicationTransformer.ts +128 -128
  511. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  512. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
  513. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  514. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  515. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  516. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  517. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  518. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  519. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  520. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  521. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  522. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  523. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  524. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  525. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  526. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  527. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  528. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  529. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  530. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  531. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  532. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  533. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  534. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  535. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  536. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  537. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  538. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  539. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  540. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  541. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  542. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  543. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  544. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  545. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  546. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  547. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  548. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  549. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  550. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  551. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  552. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  553. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  554. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  555. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  556. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  557. package/src/transformers/internal/GenericTransformer.ts +101 -101
  558. package/src/typings/Atomic.ts +13 -13
  559. package/src/typings/ClassProperties.ts +5 -5
  560. package/src/typings/Customizable.ts +5 -5
  561. package/src/typings/Equal.ts +18 -18
  562. package/src/typings/IsTuple.ts +9 -9
  563. package/src/typings/NativeClass.ts +23 -23
  564. package/src/typings/OmitNever.ts +3 -3
  565. package/src/typings/ProtobufAtomic.ts +19 -19
  566. package/src/typings/SpecialFields.ts +3 -3
  567. package/src/typings/ValidationPipe.ts +9 -9
  568. package/src/typings/ValueOf.ts +20 -20
  569. package/src/typings/Writable.ts +11 -11
  570. package/src/utils/ArrayUtil.ts +41 -41
  571. package/src/utils/Escaper.ts +50 -50
  572. package/src/utils/MapUtil.ts +14 -14
  573. package/src/utils/NamingConvention.ts +94 -94
  574. package/src/utils/PatternUtil.ts +29 -29
  575. package/src/utils/ProtobufNameEncoder.ts +32 -32
  576. package/src/utils/Singleton.ts +16 -16
  577. package/src/utils/StringUtil.ts +16 -16
package/src/llm.ts CHANGED
@@ -1,342 +1,335 @@
1
- import { ILlmApplication, ILlmSchema } from "@samchon/openapi";
2
-
3
- /**
4
- * > You must configure the generic argument `App`.
5
- *
6
- * TypeScript functions to LLM function calling application.
7
- *
8
- * Creates an application of LLM (Large Language Model) function calling application
9
- * from a TypeScript class or interface type containing the target functions to be
10
- * called by the LLM function calling feature.
11
- *
12
- * If you put the returned {@link ILlmApplication.functions} objects to the LLM provider
13
- * like [OpenAI (ChatGPT)](https://openai.com/), the LLM will automatically select the
14
- * proper function and fill its arguments from the conversation (maybe chatting text)
15
- * with user (human). This is the concept of the LLM function calling.
16
- *
17
- * By the way, there can be some parameters (or their nested properties) which must be
18
- * composed by human, not by LLM. File uploading feature or some sensitive information
19
- * like security keys (password) are the examples. In that case, you can separate the
20
- * function parameters to both LLM and human sides by configuring the
21
- * {@link ILlmApplication.IOptions.separate} property. The separated parameters are
22
- * assigned to the {@link ILlmFunction.separated} property.
23
- *
24
- * For reference, the actual function call execution is not by LLM, but by you.
25
- * When the LLM selects the proper function and fills the arguments, you just call
26
- * the function with the LLM prepared arguments. And then informs the return value to
27
- * the LLM by system prompt. The LLM will continue the next conversation based on
28
- * the return value.
29
- *
30
- * Additionally, if you've configured {@link ILlmApplication.IOptions.separate},
31
- * so that the parameters are separated to human and LLM sides, you can merge these
32
- * humand and LLM sides' parameters into one through {@link HttpLlm.mergeParameters}
33
- * before the actual LLM function call execution.
34
- *
35
- * Here is the list of available `Model` types with their corresponding LLM schema.
36
- * Reading the following list, and determine the `Model` type considering the
37
- * characteristics of the target LLM provider.
38
- *
39
- * - LLM provider schemas
40
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
41
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
42
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
43
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
44
- * - Midldle layer schemas
45
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
46
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
47
- *
48
- * @template App Target class or interface type collecting the functions to call
49
- * @template Model LLM schema model
50
- * @template Config Configuration of LLM schema composition
51
- * @param options Options for the LLM application construction
52
- * @returns Application of LLM function calling schemas
53
- * @reference https://platform.openai.com/docs/guides/function-calling
54
- * @author Jeongho Nam - https://github.com/samchon
55
- */
56
- export function application(
57
- options?: Partial<Pick<ILlmApplication.IOptions<any>, "separate">>,
58
- ): never;
59
-
60
- /**
61
- * TypeScript functions to LLM function calling application.
62
- *
63
- * Creates an application of LLM (Large Language Model) function calling application
64
- * from a TypeScript class or interface type containing the target functions to be
65
- * called by the LLM function calling feature.
66
- *
67
- * If you put the returned {@link ILlmApplication.functions} objects to the LLM provider
68
- * like [OpenAI (ChatGPT)](https://openai.com/), the LLM will automatically select the
69
- * proper function and fill its arguments from the conversation (maybe chatting text)
70
- * with user (human). This is the concept of the LLM function calling.
71
- *
72
- * By the way, there can be some parameters (or their nested properties) which must be
73
- * composed by human, not by LLM. File uploading feature or some sensitive information
74
- * like security keys (password) are the examples. In that case, you can separate the
75
- * function parameters to both LLM and human sides by configuring the
76
- * {@link ILlmApplication.IOptions.separate} property. The separated parameters are
77
- * assigned to the {@link ILlmFunction.separated} property.
78
- *
79
- * For reference, the actual function call execution is not by LLM, but by you.
80
- * When the LLM selects the proper function and fills the arguments, you just call
81
- * the function with the LLM prepared arguments. And then informs the return value to
82
- * the LLM by system prompt. The LLM will continue the next conversation based on
83
- * the return value.
84
- *
85
- * Additionally, if you've configured {@link ILlmApplication.IOptions.separate},
86
- * so that the parameters are separated to human and LLM sides, you can merge these
87
- * humand and LLM sides' parameters into one through {@link HttpLlm.mergeParameters}
88
- * before the actual LLM function call execution.
89
- *
90
- * Here is the list of available `Model` types with their corresponding LLM schema.
91
- * Reading the following list, and determine the `Model` type considering the
92
- * characteristics of the target LLM provider.
93
- *
94
- * - LLM provider schemas
95
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
96
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
97
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
98
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
99
- * - Midldle layer schemas
100
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
101
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
102
- *
103
- * @template App Target class or interface type collecting the functions to call
104
- * @template Model LLM schema model
105
- * @template Config Configuration of LLM schema composition
106
- * @param options Options for the LLM application construction
107
- * @returns Application of LLM function calling schemas
108
- * @reference https://platform.openai.com/docs/guides/function-calling
109
- * @author Jeongho Nam - https://github.com/samchon
110
- */
111
- export function application<
112
- App extends Record<string, any>,
113
- Model extends ILlmSchema.Model,
114
- Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
115
- >(
116
- options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>,
117
- ): ILlmApplication<Model, App>;
118
-
119
- /**
120
- * @internal
121
- */
122
- export function application(): never {
123
- halt("application");
124
- }
125
-
126
- /**
127
- * > You must configure the generic argument `Parameters`.
128
- *
129
- * TypeScript parameters to LLM parameters schema.
130
- *
131
- * Creates an LLM (Large Language Model) parameters schema, a type metadata that is used in the
132
- * [LLM function calling](https://platform.openai.com/docs/guides/function-calling)
133
- * and [LLM structured outputs](https://platform.openai.com/docs/guides/structured-outputs),
134
- * from a TypeScript parameters type.
135
- *
136
- * For references, LLM identifies only keyworded arguments, not positional arguments.
137
- * Therefore, the TypeScript parameters type must be an object type, and its properties
138
- * must be static. If dynamic properties are, it would be compilation error.
139
- *
140
- * Also, such parameters type can be utilized not only for the LLM function calling,
141
- * but also for the LLM structured outputs. The LLM structured outputs is a feature
142
- * that LLM (Large Language Model) can generate a structured output, not only a plain
143
- * text, by filling the parameters from the conversation (maybe chatting text) with user
144
- * (human).
145
- *
146
- * Here is the list of available `Model` types with their corresponding LLM schema.
147
- * Reading the following list, and determine the `Model` type considering the
148
- * characteristics of the target LLM provider.
149
- *
150
- * - LLM provider schemas
151
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
152
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
153
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
154
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
155
- * - Midldle layer schemas
156
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
157
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
158
- *
159
- * @template Parameters Target parameters type
160
- * @template Model LLM schema model
161
- * @template Config Configuration of LLM schema composition
162
- * @returns LLM parameters schema
163
- * @reference https://platform.openai.com/docs/guides/function-calling
164
- * @reference https://platform.openai.com/docs/guides/structured-outputs
165
- */
166
- export function parameters(): never;
167
-
168
- /**
169
- * TypeScript parameters to LLM parameters schema.
170
- *
171
- * Creates an LLM (Large Language Model) parameters schema, a type metadata that is used in the
172
- * [LLM function calling](https://platform.openai.com/docs/guides/function-calling)
173
- * and [LLM structured outputs](https://platform.openai.com/docs/guides/structured-outputs),
174
- * from a TypeScript parameters type.
175
- *
176
- * For references, LLM identifies only keyworded arguments, not positional arguments.
177
- * Therefore, the TypeScript parameters type must be an object type, and its properties
178
- * must be static. If dynamic properties are, it would be compilation error.
179
- *
180
- * Also, such parameters type can be utilized not only for the LLM function calling,
181
- * but also for the LLM structured outputs. The LLM structured outputs is a feature
182
- * that LLM (Large Language Model) can generate a structured output, not only a plain
183
- * text, by filling the parameters from the conversation (maybe chatting text) with user
184
- * (human).
185
- *
186
- * Here is the list of available `Model` types with their corresponding LLM schema.
187
- * Reading the following list, and determine the `Model` type considering the
188
- * characteristics of the target LLM provider.
189
- *
190
- * - LLM provider schemas
191
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
192
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
193
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
194
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
195
- * - Midldle layer schemas
196
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
197
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
198
- *
199
- * @template Parameters Target parameters type
200
- * @template Model LLM schema model
201
- * @template Config Configuration of LLM schema composition
202
- * @returns LLM parameters schema
203
- * @reference https://platform.openai.com/docs/guides/function-calling
204
- * @reference https://platform.openai.com/docs/guides/structured-outputs
205
- */
206
- export function parameters<
207
- Parameters extends Record<string, any>,
208
- Model extends ILlmSchema.Model,
209
- Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
210
- >(): ILlmSchema.ModelParameters[Model];
211
-
212
- /**
213
- * @internal
214
- */
215
- export function parameters(): never {
216
- halt("parameters");
217
- }
218
-
219
- /**
220
- * > You must configure the generic argument `T`.
221
- *
222
- * TypeScript type to LLM type schema.
223
- *
224
- * Creates an LLM (Large Language Model) type schema, a type metadata that is used in the
225
- * [LLM function calling](@reference https://platform.openai.com/docs/guides/function-calling),
226
- * from a TypeScript type.
227
- *
228
- * The returned {@link ILlmSchema} type would be specified by the `Model` argument,
229
- * and here is the list of available `Model` types with their corresponding LLM schema.
230
- * Reading the following list, and determine the `Model` type considering the
231
- * characteristics of the target LLM provider.
232
- *
233
- * - LLM provider schemas
234
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
235
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
236
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
237
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
238
- * - Midldle layer schemas
239
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
240
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
241
- *
242
- * If you actually want to perform the LLM function calling with TypeScript functions,
243
- * you can do it with the {@link application} function. Otherwise you hope to perform the
244
- * structured output, {@link parameters} function is better. Let's enjoy the LLM function calling
245
- * and structured output with the native TypeScript functions and types.
246
- *
247
- * > **What LLM function calling is?
248
- * >
249
- * > LLM (Large Language Model) selects property function and fill the arguments,
250
- * > but actual function call execution is not by LLM, but by you.
251
- * >
252
- * > In nowadays, most LLM (Large Language Model) like OpenAI are supporting
253
- * > "function calling" feature. The "function calling" means that LLM automatically selects
254
- * > a proper function and compose parameter values from the user's chatting text.
255
- * >
256
- * > When LLM selects the proper function and its arguments, you just call the function
257
- * > with the arguments. And then informs the return value to the LLM by system prompt,
258
- * > LLM will continue the next conversation based on the return value.
259
- *
260
- * @template T Target type
261
- * @template Model LLM schema model
262
- * @template Config Configuration of LLM schema composition
263
- * @returns LLM schema
264
- * @reference https://platform.openai.com/docs/guides/function-calling
265
- * @reference https://platform.openai.com/docs/guides/structured-outputs
266
- * @author Jeongho Nam - https://github.com/samchon
267
- */
268
- export function schema(): never;
269
-
270
- /**
271
- * TypeScript type to LLM type schema.
272
- *
273
- * Creates an LLM (Large Language Model) type schema, a type metadata that is used in the
274
- * [LLM function calling](@reference https://platform.openai.com/docs/guides/function-calling),
275
- * from a TypeScript type.
276
- *
277
- * The returned {@link ILlmSchema} type would be specified by the `Model` argument,
278
- * and here is the list of available `Model` types with their corresponding LLM schema:
279
- *
280
- * - LLM provider schemas
281
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
282
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
283
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
284
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
285
- * - Midldle layer schemas
286
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
287
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
288
- *
289
- * If you actually want to perform the LLM function calling with TypeScript functions,
290
- * you can do it with the {@link application} function. Otherwise you hope to perform the
291
- * structured output, {@link parameters} function is better. Let's enjoy the LLM function calling
292
- * and structured output with the native TypeScript functions and types.
293
- *
294
- * > **What LLM function calling is?
295
- * >
296
- * > LLM (Large Language Model) selects property function and fill the arguments,
297
- * > but actual function call execution is not by LLM, but by you.
298
- * >
299
- * > In nowadays, most LLM (Large Language Model) like OpenAI are supporting
300
- * > "function calling" feature. The "function calling" means that LLM automatically selects
301
- * > a proper function and compose parameter values from the user's chatting text.
302
- * >
303
- * > When LLM selects the proper function and its arguments, you just call the function
304
- * > with the arguments. And then informs the return value to the LLM by system prompt,
305
- * > LLM will continue the next conversation based on the return value.
306
- *
307
- * @template T Target type
308
- * @template Model LLM schema model
309
- * @template Config Configuration of LLM schema composition
310
- * @returns LLM schema
311
- * @reference https://platform.openai.com/docs/guides/function-calling
312
- * @reference https://platform.openai.com/docs/guides/structured-outputs
313
- * @author Jeongho Nam - https://github.com/samchon
314
- */
315
- export function schema<
316
- T,
317
- Model extends ILlmSchema.Model,
318
- Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
319
- >(
320
- ...$defs: Extract<
321
- ILlmSchema.ModelSchema[Model],
322
- { $ref: string }
323
- > extends never
324
- ? []
325
- : [Record<string, ILlmSchema.ModelSchema[Model]>]
326
- ): ILlmSchema.ModelSchema[Model];
327
-
328
- /**
329
- * @internal
330
- */
331
- export function schema(): never {
332
- halt("schema");
333
- }
334
-
335
- /**
336
- * @internal
337
- */
338
- function halt(name: string): never {
339
- throw new Error(
340
- `Error on typia.llm.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
341
- );
342
- }
1
+ import { ILlmApplication, ILlmSchema } from "@samchon/openapi";
2
+
3
+ import { NoTransformConfigurationError } from "./transformers/NoTransformConfigurationError";
4
+
5
+ /**
6
+ * > You must configure the generic argument `App`.
7
+ *
8
+ * TypeScript functions to LLM function calling application.
9
+ *
10
+ * Creates an application of LLM (Large Language Model) function calling application
11
+ * from a TypeScript class or interface type containing the target functions to be
12
+ * called by the LLM function calling feature.
13
+ *
14
+ * If you put the returned {@link ILlmApplication.functions} objects to the LLM provider
15
+ * like [OpenAI (ChatGPT)](https://openai.com/), the LLM will automatically select the
16
+ * proper function and fill its arguments from the conversation (maybe chatting text)
17
+ * with user (human). This is the concept of the LLM function calling.
18
+ *
19
+ * By the way, there can be some parameters (or their nested properties) which must be
20
+ * composed by human, not by LLM. File uploading feature or some sensitive information
21
+ * like security keys (password) are the examples. In that case, you can separate the
22
+ * function parameters to both LLM and human sides by configuring the
23
+ * {@link ILlmApplication.IOptions.separate} property. The separated parameters are
24
+ * assigned to the {@link ILlmFunction.separated} property.
25
+ *
26
+ * For reference, the actual function call execution is not by LLM, but by you.
27
+ * When the LLM selects the proper function and fills the arguments, you just call
28
+ * the function with the LLM prepared arguments. And then informs the return value to
29
+ * the LLM by system prompt. The LLM will continue the next conversation based on
30
+ * the return value.
31
+ *
32
+ * Additionally, if you've configured {@link ILlmApplication.IOptions.separate},
33
+ * so that the parameters are separated to human and LLM sides, you can merge these
34
+ * humand and LLM sides' parameters into one through {@link HttpLlm.mergeParameters}
35
+ * before the actual LLM function call execution.
36
+ *
37
+ * Here is the list of available `Model` types with their corresponding LLM schema.
38
+ * Reading the following list, and determine the `Model` type considering the
39
+ * characteristics of the target LLM provider.
40
+ *
41
+ * - LLM provider schemas
42
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
43
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
44
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
45
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
46
+ * - Midldle layer schemas
47
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
48
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
49
+ *
50
+ * @template App Target class or interface type collecting the functions to call
51
+ * @template Model LLM schema model
52
+ * @template Config Configuration of LLM schema composition
53
+ * @param options Options for the LLM application construction
54
+ * @returns Application of LLM function calling schemas
55
+ * @reference https://platform.openai.com/docs/guides/function-calling
56
+ * @author Jeongho Nam - https://github.com/samchon
57
+ */
58
+ export function application(
59
+ options?: Partial<Pick<ILlmApplication.IOptions<any>, "separate">>,
60
+ ): never;
61
+
62
+ /**
63
+ * TypeScript functions to LLM function calling application.
64
+ *
65
+ * Creates an application of LLM (Large Language Model) function calling application
66
+ * from a TypeScript class or interface type containing the target functions to be
67
+ * called by the LLM function calling feature.
68
+ *
69
+ * If you put the returned {@link ILlmApplication.functions} objects to the LLM provider
70
+ * like [OpenAI (ChatGPT)](https://openai.com/), the LLM will automatically select the
71
+ * proper function and fill its arguments from the conversation (maybe chatting text)
72
+ * with user (human). This is the concept of the LLM function calling.
73
+ *
74
+ * By the way, there can be some parameters (or their nested properties) which must be
75
+ * composed by human, not by LLM. File uploading feature or some sensitive information
76
+ * like security keys (password) are the examples. In that case, you can separate the
77
+ * function parameters to both LLM and human sides by configuring the
78
+ * {@link ILlmApplication.IOptions.separate} property. The separated parameters are
79
+ * assigned to the {@link ILlmFunction.separated} property.
80
+ *
81
+ * For reference, the actual function call execution is not by LLM, but by you.
82
+ * When the LLM selects the proper function and fills the arguments, you just call
83
+ * the function with the LLM prepared arguments. And then informs the return value to
84
+ * the LLM by system prompt. The LLM will continue the next conversation based on
85
+ * the return value.
86
+ *
87
+ * Additionally, if you've configured {@link ILlmApplication.IOptions.separate},
88
+ * so that the parameters are separated to human and LLM sides, you can merge these
89
+ * humand and LLM sides' parameters into one through {@link HttpLlm.mergeParameters}
90
+ * before the actual LLM function call execution.
91
+ *
92
+ * Here is the list of available `Model` types with their corresponding LLM schema.
93
+ * Reading the following list, and determine the `Model` type considering the
94
+ * characteristics of the target LLM provider.
95
+ *
96
+ * - LLM provider schemas
97
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
98
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
99
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
100
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
101
+ * - Midldle layer schemas
102
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
103
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
104
+ *
105
+ * @template App Target class or interface type collecting the functions to call
106
+ * @template Model LLM schema model
107
+ * @template Config Configuration of LLM schema composition
108
+ * @param options Options for the LLM application construction
109
+ * @returns Application of LLM function calling schemas
110
+ * @reference https://platform.openai.com/docs/guides/function-calling
111
+ * @author Jeongho Nam - https://github.com/samchon
112
+ */
113
+ export function application<
114
+ App extends Record<string, any>,
115
+ Model extends ILlmSchema.Model,
116
+ Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
117
+ >(
118
+ options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>,
119
+ ): ILlmApplication<Model, App>;
120
+
121
+ /**
122
+ * @internal
123
+ */
124
+ export function application(): never {
125
+ NoTransformConfigurationError("llm.application");
126
+ }
127
+
128
+ /**
129
+ * > You must configure the generic argument `Parameters`.
130
+ *
131
+ * TypeScript parameters to LLM parameters schema.
132
+ *
133
+ * Creates an LLM (Large Language Model) parameters schema, a type metadata that is used in the
134
+ * [LLM function calling](https://platform.openai.com/docs/guides/function-calling)
135
+ * and [LLM structured outputs](https://platform.openai.com/docs/guides/structured-outputs),
136
+ * from a TypeScript parameters type.
137
+ *
138
+ * For references, LLM identifies only keyworded arguments, not positional arguments.
139
+ * Therefore, the TypeScript parameters type must be an object type, and its properties
140
+ * must be static. If dynamic properties are, it would be compilation error.
141
+ *
142
+ * Also, such parameters type can be utilized not only for the LLM function calling,
143
+ * but also for the LLM structured outputs. The LLM structured outputs is a feature
144
+ * that LLM (Large Language Model) can generate a structured output, not only a plain
145
+ * text, by filling the parameters from the conversation (maybe chatting text) with user
146
+ * (human).
147
+ *
148
+ * Here is the list of available `Model` types with their corresponding LLM schema.
149
+ * Reading the following list, and determine the `Model` type considering the
150
+ * characteristics of the target LLM provider.
151
+ *
152
+ * - LLM provider schemas
153
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
154
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
155
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
156
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
157
+ * - Midldle layer schemas
158
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
159
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
160
+ *
161
+ * @template Parameters Target parameters type
162
+ * @template Model LLM schema model
163
+ * @template Config Configuration of LLM schema composition
164
+ * @returns LLM parameters schema
165
+ * @reference https://platform.openai.com/docs/guides/function-calling
166
+ * @reference https://platform.openai.com/docs/guides/structured-outputs
167
+ */
168
+ export function parameters(): never;
169
+
170
+ /**
171
+ * TypeScript parameters to LLM parameters schema.
172
+ *
173
+ * Creates an LLM (Large Language Model) parameters schema, a type metadata that is used in the
174
+ * [LLM function calling](https://platform.openai.com/docs/guides/function-calling)
175
+ * and [LLM structured outputs](https://platform.openai.com/docs/guides/structured-outputs),
176
+ * from a TypeScript parameters type.
177
+ *
178
+ * For references, LLM identifies only keyworded arguments, not positional arguments.
179
+ * Therefore, the TypeScript parameters type must be an object type, and its properties
180
+ * must be static. If dynamic properties are, it would be compilation error.
181
+ *
182
+ * Also, such parameters type can be utilized not only for the LLM function calling,
183
+ * but also for the LLM structured outputs. The LLM structured outputs is a feature
184
+ * that LLM (Large Language Model) can generate a structured output, not only a plain
185
+ * text, by filling the parameters from the conversation (maybe chatting text) with user
186
+ * (human).
187
+ *
188
+ * Here is the list of available `Model` types with their corresponding LLM schema.
189
+ * Reading the following list, and determine the `Model` type considering the
190
+ * characteristics of the target LLM provider.
191
+ *
192
+ * - LLM provider schemas
193
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
194
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
195
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
196
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
197
+ * - Midldle layer schemas
198
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
199
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
200
+ *
201
+ * @template Parameters Target parameters type
202
+ * @template Model LLM schema model
203
+ * @template Config Configuration of LLM schema composition
204
+ * @returns LLM parameters schema
205
+ * @reference https://platform.openai.com/docs/guides/function-calling
206
+ * @reference https://platform.openai.com/docs/guides/structured-outputs
207
+ */
208
+ export function parameters<
209
+ Parameters extends Record<string, any>,
210
+ Model extends ILlmSchema.Model,
211
+ Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
212
+ >(): ILlmSchema.ModelParameters[Model];
213
+
214
+ /**
215
+ * @internal
216
+ */
217
+ export function parameters(): never {
218
+ NoTransformConfigurationError("llm.parameters");
219
+ }
220
+
221
+ /**
222
+ * > You must configure the generic argument `T`.
223
+ *
224
+ * TypeScript type to LLM type schema.
225
+ *
226
+ * Creates an LLM (Large Language Model) type schema, a type metadata that is used in the
227
+ * [LLM function calling](@reference https://platform.openai.com/docs/guides/function-calling),
228
+ * from a TypeScript type.
229
+ *
230
+ * The returned {@link ILlmSchema} type would be specified by the `Model` argument,
231
+ * and here is the list of available `Model` types with their corresponding LLM schema.
232
+ * Reading the following list, and determine the `Model` type considering the
233
+ * characteristics of the target LLM provider.
234
+ *
235
+ * - LLM provider schemas
236
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
237
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
238
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
239
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
240
+ * - Midldle layer schemas
241
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
242
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
243
+ *
244
+ * If you actually want to perform the LLM function calling with TypeScript functions,
245
+ * you can do it with the {@link application} function. Otherwise you hope to perform the
246
+ * structured output, {@link parameters} function is better. Let's enjoy the LLM function calling
247
+ * and structured output with the native TypeScript functions and types.
248
+ *
249
+ * > **What LLM function calling is?
250
+ * >
251
+ * > LLM (Large Language Model) selects property function and fill the arguments,
252
+ * > but actual function call execution is not by LLM, but by you.
253
+ * >
254
+ * > In nowadays, most LLM (Large Language Model) like OpenAI are supporting
255
+ * > "function calling" feature. The "function calling" means that LLM automatically selects
256
+ * > a proper function and compose parameter values from the user's chatting text.
257
+ * >
258
+ * > When LLM selects the proper function and its arguments, you just call the function
259
+ * > with the arguments. And then informs the return value to the LLM by system prompt,
260
+ * > LLM will continue the next conversation based on the return value.
261
+ *
262
+ * @template T Target type
263
+ * @template Model LLM schema model
264
+ * @template Config Configuration of LLM schema composition
265
+ * @returns LLM schema
266
+ * @reference https://platform.openai.com/docs/guides/function-calling
267
+ * @reference https://platform.openai.com/docs/guides/structured-outputs
268
+ * @author Jeongho Nam - https://github.com/samchon
269
+ */
270
+ export function schema(): never;
271
+
272
+ /**
273
+ * TypeScript type to LLM type schema.
274
+ *
275
+ * Creates an LLM (Large Language Model) type schema, a type metadata that is used in the
276
+ * [LLM function calling](@reference https://platform.openai.com/docs/guides/function-calling),
277
+ * from a TypeScript type.
278
+ *
279
+ * The returned {@link ILlmSchema} type would be specified by the `Model` argument,
280
+ * and here is the list of available `Model` types with their corresponding LLM schema:
281
+ *
282
+ * - LLM provider schemas
283
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
284
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
285
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
286
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
287
+ * - Midldle layer schemas
288
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
289
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
290
+ *
291
+ * If you actually want to perform the LLM function calling with TypeScript functions,
292
+ * you can do it with the {@link application} function. Otherwise you hope to perform the
293
+ * structured output, {@link parameters} function is better. Let's enjoy the LLM function calling
294
+ * and structured output with the native TypeScript functions and types.
295
+ *
296
+ * > **What LLM function calling is?
297
+ * >
298
+ * > LLM (Large Language Model) selects property function and fill the arguments,
299
+ * > but actual function call execution is not by LLM, but by you.
300
+ * >
301
+ * > In nowadays, most LLM (Large Language Model) like OpenAI are supporting
302
+ * > "function calling" feature. The "function calling" means that LLM automatically selects
303
+ * > a proper function and compose parameter values from the user's chatting text.
304
+ * >
305
+ * > When LLM selects the proper function and its arguments, you just call the function
306
+ * > with the arguments. And then informs the return value to the LLM by system prompt,
307
+ * > LLM will continue the next conversation based on the return value.
308
+ *
309
+ * @template T Target type
310
+ * @template Model LLM schema model
311
+ * @template Config Configuration of LLM schema composition
312
+ * @returns LLM schema
313
+ * @reference https://platform.openai.com/docs/guides/function-calling
314
+ * @reference https://platform.openai.com/docs/guides/structured-outputs
315
+ * @author Jeongho Nam - https://github.com/samchon
316
+ */
317
+ export function schema<
318
+ T,
319
+ Model extends ILlmSchema.Model,
320
+ Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
321
+ >(
322
+ ...$defs: Extract<
323
+ ILlmSchema.ModelSchema[Model],
324
+ { $ref: string }
325
+ > extends never
326
+ ? []
327
+ : [Record<string, ILlmSchema.ModelSchema[Model]>]
328
+ ): ILlmSchema.ModelSchema[Model];
329
+
330
+ /**
331
+ * @internal
332
+ */
333
+ export function schema(): never {
334
+ NoTransformConfigurationError("llm.schema");
335
+ }