typia 9.5.0 → 9.6.0-dev.20250719

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