@duplojs/agents-kit 0.1.0-beta.3 → 0.1.0-beta.6

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 (487) hide show
  1. package/README.md +11 -11
  2. package/dist/bin/index.mjs +2 -2
  3. package/dist/bin/installSkill/index.d.ts +2 -0
  4. package/dist/bin/{install → installSkill}/index.mjs +3 -3
  5. package/dist/bin/{install → installSkill}/skill.mjs +1 -1
  6. package/dist/bin/setup/instructions.d.ts +1 -1
  7. package/docs/API/10-lang/10-array/10-at.ts +4 -4
  8. package/docs/API/10-lang/10-array/10-coalescing.ts +3 -2
  9. package/docs/API/10-lang/10-array/10-indexOf.ts +1 -1
  10. package/docs/API/10-lang/10-array/10-is.ts +17 -3
  11. package/docs/API/10-lang/10-array/10-lastIndexOf.ts +1 -1
  12. package/docs/API/10-lang/10-chrono/10-addTime.ts +1 -1
  13. package/docs/API/10-lang/10-chrono/10-closestTo.ts +5 -8
  14. package/docs/API/10-lang/10-chrono/10-isDate.ts +15 -2
  15. package/docs/API/10-lang/10-chrono/10-isSerializedTheDate.ts +16 -1
  16. package/docs/API/10-lang/10-chrono/10-isSerializedTheTime.ts +16 -1
  17. package/docs/API/10-lang/10-chrono/10-isTime.ts +15 -2
  18. package/docs/API/10-lang/10-chrono/10-maxDate.ts +4 -8
  19. package/docs/API/10-lang/10-chrono/10-maxTime.ts +4 -8
  20. package/docs/API/10-lang/10-chrono/10-minDate.ts +4 -8
  21. package/docs/API/10-lang/10-chrono/10-minTime.ts +4 -8
  22. package/docs/API/10-lang/10-chrono/10-sortDates.ts +6 -8
  23. package/docs/API/10-lang/10-chrono/10-sortTimes.ts +6 -8
  24. package/docs/API/10-lang/10-chrono/10-subtractTime.ts +1 -1
  25. package/docs/API/10-lang/10-common/10-and.ts +6 -0
  26. package/docs/API/10-lang/10-common/10-createQueue.ts +4 -3
  27. package/docs/API/10-lang/10-common/10-createTransformer.ts +1 -1
  28. package/docs/API/10-lang/10-common/10-equal.ts +6 -0
  29. package/docs/API/10-lang/10-common/10-falsy.ts +19 -0
  30. package/docs/API/10-lang/10-common/10-instanceOf.ts +14 -3
  31. package/docs/API/10-lang/10-common/10-isType.ts +6 -0
  32. package/docs/API/10-lang/10-common/10-justExec.ts +3 -3
  33. package/docs/API/10-lang/10-common/10-or.ts +17 -3
  34. package/docs/API/10-lang/10-common/10-tap.ts +28 -0
  35. package/docs/API/10-lang/10-common/10-toJSON.ts +1 -1
  36. package/docs/API/10-lang/10-common/10-toNative.ts +1 -1
  37. package/docs/API/10-lang/10-common/10-toRegExp.ts +1 -1
  38. package/docs/API/10-lang/10-common/10-truthy.ts +19 -0
  39. package/docs/API/10-lang/10-common/10-whenNot.ts +44 -13
  40. package/docs/API/10-lang/10-common/index.llms.md +4 -0
  41. package/docs/API/10-lang/10-dataStructure/10-typeStructureIdentifier.ts +2 -2
  42. package/docs/API/10-lang/10-either/10-asyncGroup.ts +1 -1
  43. package/docs/API/10-lang/10-either/10-asyncSafeCallback.ts +4 -2
  44. package/docs/API/10-lang/10-either/10-extractErrorInLeft.ts +45 -0
  45. package/docs/API/10-lang/10-either/10-forwardAssertsSelection.ts +1 -1
  46. package/docs/API/10-lang/10-either/10-group.ts +1 -1
  47. package/docs/API/10-lang/10-either/10-hasInformation.ts +6 -0
  48. package/docs/API/10-lang/10-either/10-isLeft.ts +10 -1
  49. package/docs/API/10-lang/10-either/10-isRight.ts +10 -1
  50. package/docs/API/10-lang/10-either/10-isSelected.ts +13 -1
  51. package/docs/API/10-lang/10-either/10-keepAsRightSelection.ts +1 -1
  52. package/docs/API/10-lang/10-either/10-matchInformation.ts +7 -5
  53. package/docs/API/10-lang/10-either/10-matchInformationCombination.ts +61 -0
  54. package/docs/API/10-lang/10-either/10-matchInformationCombinationOtherwise.ts +62 -0
  55. package/docs/API/10-lang/10-either/10-matchInformationOtherwise.ts +7 -5
  56. package/docs/API/10-lang/10-either/10-rightAsyncPipe.ts +2 -1
  57. package/docs/API/10-lang/10-either/10-rightPipe.ts +1 -1
  58. package/docs/API/10-lang/10-either/10-safeCallback.ts +1 -1
  59. package/docs/API/10-lang/10-either/10-unwrapOr.ts +2 -2
  60. package/docs/API/10-lang/10-either/10-unwrapOtherwise.ts +2 -2
  61. package/docs/API/10-lang/10-either/10-whenHasInformation.ts +4 -3
  62. package/docs/API/10-lang/10-either/10-whenHasInformationOtherwise.ts +5 -5
  63. package/docs/API/10-lang/10-either/10-whenIsLeft.ts +2 -2
  64. package/docs/API/10-lang/10-either/10-whenIsLeftOtherwise.ts +5 -5
  65. package/docs/API/10-lang/10-either/10-whenIsRight.ts +2 -2
  66. package/docs/API/10-lang/10-either/10-whenIsRightOtherwise.ts +7 -7
  67. package/docs/API/10-lang/10-either/10-whenIsSelected.ts +5 -5
  68. package/docs/API/10-lang/10-either/10-whenIsSelectedOtherwise.ts +5 -5
  69. package/docs/API/10-lang/10-either/index.llms.md +12 -0
  70. package/docs/API/10-lang/10-generator/10-asyncConcat.ts +7 -10
  71. package/docs/API/10-lang/10-generator/10-asyncFlat.ts +6 -6
  72. package/docs/API/10-lang/10-generator/10-concat.ts +3 -3
  73. package/docs/API/10-lang/10-generator/10-flat.ts +2 -2
  74. package/docs/API/10-lang/10-generator/10-map.ts +1 -1
  75. package/docs/API/10-lang/10-generator/10-reduce.ts +1 -1
  76. package/docs/API/10-lang/10-number/10-betweenThan.ts +43 -0
  77. package/docs/API/10-lang/10-number/10-betweenThanOrEqual.ts +43 -0
  78. package/docs/API/10-lang/10-number/10-greaterThan.ts +35 -0
  79. package/docs/API/10-lang/10-number/10-greaterThanOrEqual.ts +35 -0
  80. package/docs/API/10-lang/10-number/10-isEven.ts +33 -0
  81. package/docs/API/10-lang/10-number/10-isInteger.ts +33 -0
  82. package/docs/API/10-lang/10-number/10-isMultipleOf.ts +35 -0
  83. package/docs/API/10-lang/10-number/10-isNegative.ts +33 -0
  84. package/docs/API/10-lang/10-number/10-isNotZero.ts +33 -0
  85. package/docs/API/10-lang/10-number/10-isOdd.ts +33 -0
  86. package/docs/API/10-lang/10-number/10-isPositive.ts +33 -0
  87. package/docs/API/10-lang/10-number/10-isSafe.ts +33 -0
  88. package/docs/API/10-lang/10-number/10-isStrictNegative.ts +34 -0
  89. package/docs/API/10-lang/10-number/10-isStrictPositive.ts +33 -0
  90. package/docs/API/10-lang/10-number/10-lessThan.ts +35 -0
  91. package/docs/API/10-lang/10-number/10-lessThanOrEqual.ts +35 -0
  92. package/docs/API/10-lang/10-number/10-max.ts +19 -0
  93. package/docs/API/10-lang/10-number/10-maxOf.ts +19 -0
  94. package/docs/API/10-lang/10-number/10-min.ts +19 -0
  95. package/docs/API/10-lang/10-number/10-minOf.ts +19 -0
  96. package/docs/API/10-lang/10-number/10-sort.ts +19 -0
  97. package/docs/API/10-lang/10-number/10-sum.ts +19 -0
  98. package/docs/API/10-lang/10-number/index.llms.md +92 -0
  99. package/docs/API/10-lang/10-number/index.md +3 -0
  100. package/docs/API/10-lang/10-object/10-assign.ts +41 -0
  101. package/docs/API/10-lang/10-object/10-countKeys.ts +15 -0
  102. package/docs/API/10-lang/10-object/10-deepDiscriminate.ts +63 -0
  103. package/docs/API/10-lang/10-object/10-deepOverride.ts +35 -0
  104. package/docs/API/10-lang/10-object/10-discriminate.ts +55 -0
  105. package/docs/API/10-lang/10-object/10-discriminateEntryKey.ts +43 -0
  106. package/docs/API/10-lang/10-object/10-discriminateEntryValue.ts +44 -0
  107. package/docs/API/10-lang/10-object/10-entries.ts +19 -0
  108. package/docs/API/10-lang/10-object/10-entry.ts +17 -0
  109. package/docs/API/10-lang/10-object/10-fromEntries.ts +23 -0
  110. package/docs/API/10-lang/10-object/10-getDeepProperty.ts +26 -0
  111. package/docs/API/10-lang/10-object/10-getProperty.ts +24 -0
  112. package/docs/API/10-lang/10-object/10-hasKeys.ts +43 -0
  113. package/docs/API/10-lang/10-object/10-isSimple.ts +38 -0
  114. package/docs/API/10-lang/10-object/10-keys.ts +19 -0
  115. package/docs/API/10-lang/10-object/10-omit.ts +39 -0
  116. package/docs/API/10-lang/10-object/10-override.ts +24 -0
  117. package/docs/API/10-lang/10-object/10-pick.ts +41 -0
  118. package/docs/API/10-lang/10-object/10-to.ts +40 -0
  119. package/docs/API/10-lang/10-object/10-transformProperties.ts +43 -0
  120. package/docs/API/10-lang/10-object/10-transformProperty.ts +39 -0
  121. package/docs/API/10-lang/10-object/10-values.ts +19 -0
  122. package/docs/API/10-lang/10-object/index.llms.md +92 -0
  123. package/docs/API/10-lang/10-object/index.md +3 -0
  124. package/docs/API/10-lang/10-path/10-computeRelative.ts +19 -0
  125. package/docs/API/10-lang/10-path/10-concatSegment.ts +28 -0
  126. package/docs/API/10-lang/10-path/10-create.ts +21 -0
  127. package/docs/API/10-lang/10-path/10-createAbsolute.ts +21 -0
  128. package/docs/API/10-lang/10-path/10-createAbsoluteOrThrow.ts +16 -0
  129. package/docs/API/10-lang/10-path/10-createMatcher.ts +50 -0
  130. package/docs/API/10-lang/10-path/10-createOrThrow.ts +16 -0
  131. package/docs/API/10-lang/10-path/10-createSegment.ts +26 -0
  132. package/docs/API/10-lang/10-path/10-createSegmentOrThrow.ts +16 -0
  133. package/docs/API/10-lang/10-path/10-declareAbsolutePath.ts +15 -0
  134. package/docs/API/10-lang/10-path/10-declarePath.ts +15 -0
  135. package/docs/API/10-lang/10-path/10-declareSegment.ts +15 -0
  136. package/docs/API/10-lang/10-path/10-getBaseName.ts +22 -0
  137. package/docs/API/10-lang/10-path/10-getExtensionName.ts +22 -0
  138. package/docs/API/10-lang/10-path/10-getParentFolderPath.ts +25 -0
  139. package/docs/API/10-lang/10-path/10-is.ts +46 -0
  140. package/docs/API/10-lang/10-path/10-isAbsolute.ts +46 -0
  141. package/docs/API/10-lang/10-path/10-isSegment.ts +42 -0
  142. package/docs/API/10-lang/10-path/10-normalize.ts +26 -0
  143. package/docs/API/10-lang/10-path/10-resolveFrom.ts +37 -0
  144. package/docs/API/10-lang/10-path/10-resolveRelative.ts +23 -0
  145. package/docs/API/10-lang/10-path/index.llms.md +88 -0
  146. package/docs/API/10-lang/10-path/index.md +3 -0
  147. package/docs/API/10-lang/10-pattern/10-exhaustive.ts +26 -0
  148. package/docs/API/10-lang/10-pattern/10-isMatch.ts +72 -0
  149. package/docs/API/10-lang/10-pattern/10-match.ts +133 -0
  150. package/docs/API/10-lang/10-pattern/10-matchWithEntity.ts +49 -0
  151. package/docs/API/10-lang/10-pattern/10-matchWithEntityOtherwise.ts +55 -0
  152. package/docs/API/10-lang/10-pattern/10-matchWithError.ts +45 -0
  153. package/docs/API/10-lang/10-pattern/10-matchWithErrorOtherwise.ts +48 -0
  154. package/docs/API/10-lang/10-pattern/10-matchWithFact.ts +49 -0
  155. package/docs/API/10-lang/10-pattern/10-matchWithFactOtherwise.ts +49 -0
  156. package/docs/API/10-lang/10-pattern/10-matchWithNumber.ts +33 -0
  157. package/docs/API/10-lang/10-pattern/10-matchWithNumberOtherwise.ts +37 -0
  158. package/docs/API/10-lang/10-pattern/10-matchWithString.ts +34 -0
  159. package/docs/API/10-lang/10-pattern/10-matchWithStringOtherwise.ts +35 -0
  160. package/docs/API/10-lang/10-pattern/10-matchWithTaggedObject.ts +43 -0
  161. package/docs/API/10-lang/10-pattern/10-matchWithTaggedObjectOtherwise.ts +49 -0
  162. package/docs/API/10-lang/10-pattern/10-otherwise.ts +28 -0
  163. package/docs/API/10-lang/10-pattern/10-union.ts +47 -0
  164. package/docs/API/10-lang/10-pattern/10-when.ts +46 -0
  165. package/docs/API/10-lang/10-pattern/10-whenNot.ts +123 -0
  166. package/docs/API/10-lang/10-pattern/index.llms.md +80 -0
  167. package/docs/API/10-lang/10-pattern/index.md +3 -0
  168. package/docs/API/10-lang/10-printer/10-bold.ts +12 -0
  169. package/docs/API/10-lang/10-printer/10-colorized.ts +18 -0
  170. package/docs/API/10-lang/10-printer/10-colorizedBold.ts +18 -0
  171. package/docs/API/10-lang/10-printer/10-indent.ts +20 -0
  172. package/docs/API/10-lang/10-printer/10-primitives.md +11 -0
  173. package/docs/API/10-lang/10-printer/10-render.ts +29 -0
  174. package/docs/API/10-lang/10-printer/10-renderLine.ts +12 -0
  175. package/docs/API/10-lang/10-printer/10-renderParagraph.ts +16 -0
  176. package/docs/API/10-lang/10-printer/index.llms.md +37 -0
  177. package/docs/API/10-lang/10-printer/index.md +3 -0
  178. package/docs/API/10-lang/10-string/10-at.ts +18 -0
  179. package/docs/API/10-lang/10-string/10-capitalize.ts +18 -0
  180. package/docs/API/10-lang/10-string/10-charAt.ts +18 -0
  181. package/docs/API/10-lang/10-string/10-concat.ts +18 -0
  182. package/docs/API/10-lang/10-string/10-endsWith.ts +33 -0
  183. package/docs/API/10-lang/10-string/10-extract.ts +18 -0
  184. package/docs/API/10-lang/10-string/10-extractAll.ts +18 -0
  185. package/docs/API/10-lang/10-string/10-first.ts +17 -0
  186. package/docs/API/10-lang/10-string/10-includes.ts +33 -0
  187. package/docs/API/10-lang/10-string/10-indexOf.ts +17 -0
  188. package/docs/API/10-lang/10-string/10-isComposedOf.ts +33 -0
  189. package/docs/API/10-lang/10-string/10-isEmail.ts +56 -0
  190. package/docs/API/10-lang/10-string/10-isIn.ts +34 -0
  191. package/docs/API/10-lang/10-string/10-isKeyof.ts +37 -0
  192. package/docs/API/10-lang/10-string/10-isNotEmpty.ts +32 -0
  193. package/docs/API/10-lang/10-string/10-isNumber.ts +32 -0
  194. package/docs/API/10-lang/10-string/10-isTrimmed.ts +33 -0
  195. package/docs/API/10-lang/10-string/10-isUrl.ts +31 -0
  196. package/docs/API/10-lang/10-string/10-isUuid.ts +31 -0
  197. package/docs/API/10-lang/10-string/10-join.ts +18 -0
  198. package/docs/API/10-lang/10-string/10-last.ts +17 -0
  199. package/docs/API/10-lang/10-string/10-lastIndexOf.ts +17 -0
  200. package/docs/API/10-lang/10-string/10-length.ts +18 -0
  201. package/docs/API/10-lang/10-string/10-lengthEqual.ts +33 -0
  202. package/docs/API/10-lang/10-string/10-maxCharacters.ts +33 -0
  203. package/docs/API/10-lang/10-string/10-minCharacters.ts +33 -0
  204. package/docs/API/10-lang/10-string/10-normalize.ts +17 -0
  205. package/docs/API/10-lang/10-string/10-padEnd.ts +17 -0
  206. package/docs/API/10-lang/10-string/10-padStart.ts +17 -0
  207. package/docs/API/10-lang/10-string/10-pop.ts +17 -0
  208. package/docs/API/10-lang/10-string/10-prepend.ts +17 -0
  209. package/docs/API/10-lang/10-string/10-repeat.ts +17 -0
  210. package/docs/API/10-lang/10-string/10-replace.ts +18 -0
  211. package/docs/API/10-lang/10-string/10-replaceAll.ts +17 -0
  212. package/docs/API/10-lang/10-string/10-search.ts +17 -0
  213. package/docs/API/10-lang/10-string/10-shift.ts +17 -0
  214. package/docs/API/10-lang/10-string/10-slice.ts +17 -0
  215. package/docs/API/10-lang/10-string/10-sort.ts +19 -0
  216. package/docs/API/10-lang/10-string/10-sortCompare.ts +17 -0
  217. package/docs/API/10-lang/10-string/10-split.ts +34 -0
  218. package/docs/API/10-lang/10-string/10-startsWith.ts +33 -0
  219. package/docs/API/10-lang/10-string/10-stringify.ts +11 -0
  220. package/docs/API/10-lang/10-string/10-substring.ts +17 -0
  221. package/docs/API/10-lang/10-string/10-test.ts +17 -0
  222. package/docs/API/10-lang/10-string/10-to.ts +11 -0
  223. package/docs/API/10-lang/10-string/10-toLowerCase.ts +17 -0
  224. package/docs/API/10-lang/10-string/10-toUpperCase.ts +17 -0
  225. package/docs/API/10-lang/10-string/10-trim.ts +17 -0
  226. package/docs/API/10-lang/10-string/10-trimEnd.ts +17 -0
  227. package/docs/API/10-lang/10-string/10-trimStart.ts +17 -0
  228. package/docs/API/10-lang/10-string/10-uncapitalize.ts +17 -0
  229. package/docs/API/10-lang/10-string/index.llms.md +208 -0
  230. package/docs/API/10-lang/10-string/index.md +3 -0
  231. package/docs/API/10-lang/10-tuple/10-from.ts +50 -0
  232. package/docs/API/10-lang/10-tuple/10-map.ts +37 -0
  233. package/docs/API/10-lang/10-tuple/index.llms.md +12 -0
  234. package/docs/API/10-lang/10-tuple/index.md +3 -0
  235. package/docs/API/40-json-web-token/10-tokenHandler/10-createTokenHandler.ts +160 -0
  236. package/docs/API/40-json-web-token/10-tokenHandler/index.llms.md +8 -0
  237. package/docs/API/40-json-web-token/10-tokenHandler/index.md +3 -0
  238. package/docs/API/40-json-web-token/20-signer/10-createHS256.ts +24 -0
  239. package/docs/API/40-json-web-token/20-signer/10-createHS512.ts +24 -0
  240. package/docs/API/40-json-web-token/20-signer/10-createRS256.ts +28 -0
  241. package/docs/API/40-json-web-token/20-signer/10-createRS512.ts +28 -0
  242. package/docs/API/40-json-web-token/20-signer/10-factory.ts +29 -0
  243. package/docs/API/40-json-web-token/20-signer/index.llms.md +24 -0
  244. package/docs/API/40-json-web-token/20-signer/index.md +3 -0
  245. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP.ts +26 -0
  246. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP256.ts +26 -0
  247. package/docs/API/40-json-web-token/30-cipher/10-factory.ts +29 -0
  248. package/docs/API/40-json-web-token/30-cipher/index.llms.md +16 -0
  249. package/docs/API/40-json-web-token/30-cipher/index.md +3 -0
  250. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.decrypt.ts +17 -0
  251. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.encrypt.ts +11 -0
  252. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.generateInitializationVector.ts +9 -0
  253. package/docs/API/40-json-web-token/40-utils/10-HMAC.sign.ts +13 -0
  254. package/docs/API/40-json-web-token/40-utils/10-HMAC.verify.ts +11 -0
  255. package/docs/API/40-json-web-token/40-utils/10-RSA.sign.ts +14 -0
  256. package/docs/API/40-json-web-token/40-utils/10-RSA.verify.ts +13 -0
  257. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.decrypt.ts +13 -0
  258. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.encrypt.ts +10 -0
  259. package/docs/API/40-json-web-token/40-utils/10-decodeBase64.ts +9 -0
  260. package/docs/API/40-json-web-token/40-utils/10-decodeBase64Url.ts +9 -0
  261. package/docs/API/40-json-web-token/40-utils/10-decodeText.ts +9 -0
  262. package/docs/API/40-json-web-token/40-utils/10-encodeBase64.ts +9 -0
  263. package/docs/API/40-json-web-token/40-utils/10-encodeBase64Url.ts +9 -0
  264. package/docs/API/40-json-web-token/40-utils/10-encodeText.ts +9 -0
  265. package/docs/API/40-json-web-token/40-utils/10-isBase64Url.ts +11 -0
  266. package/docs/API/40-json-web-token/40-utils/10-jsonParse.ts +11 -0
  267. package/docs/API/40-json-web-token/40-utils/10-pemToBinary.ts +11 -0
  268. package/docs/API/40-json-web-token/40-utils/index.llms.md +76 -0
  269. package/docs/API/40-json-web-token/40-utils/index.md +3 -0
  270. package/docs/API/40-json-web-token/index.md +3 -0
  271. package/docs/API/50-form/10-vue/10-construction/10-createForm.ts +48 -0
  272. package/docs/API/50-form/10-vue/10-construction/10-createFormField.ts +66 -0
  273. package/docs/API/50-form/10-vue/10-construction/10-createGridTemplates.ts +39 -0
  274. package/docs/API/50-form/10-vue/10-construction/10-createInput.ts +46 -0
  275. package/docs/API/50-form/10-vue/10-construction/10-createTemplate.ts +36 -0
  276. package/docs/API/50-form/10-vue/10-construction/fixtures/AddressInput.vue +19 -0
  277. package/docs/API/50-form/10-vue/10-construction/index.llms.md +24 -0
  278. package/docs/API/50-form/10-vue/10-construction/index.md +3 -0
  279. package/docs/API/50-form/10-vue/20-layouts/10-useCheckLayout.ts +40 -0
  280. package/docs/API/50-form/10-vue/20-layouts/10-useDisabledLayout.ts +34 -0
  281. package/docs/API/50-form/10-vue/20-layouts/10-useMultiLayout.ts +32 -0
  282. package/docs/API/50-form/10-vue/20-layouts/10-useRepeatLayout.ts +34 -0
  283. package/docs/API/50-form/10-vue/20-layouts/10-useSectionLayout.ts +20 -0
  284. package/docs/API/50-form/10-vue/20-layouts/10-useSlotLayout.ts +37 -0
  285. package/docs/API/50-form/10-vue/20-layouts/10-useStepLayout.ts +31 -0
  286. package/docs/API/50-form/10-vue/20-layouts/10-useUnionLayout.ts +48 -0
  287. package/docs/API/50-form/10-vue/20-layouts/index.llms.md +36 -0
  288. package/docs/API/50-form/10-vue/20-layouts/index.md +3 -0
  289. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckbox.ts +13 -0
  290. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckboxPolicy.ts +18 -0
  291. package/docs/API/50-form/10-vue/30-designSystem/10-useDateInput.ts +20 -0
  292. package/docs/API/50-form/10-vue/30-designSystem/10-useDualRangeInput.ts +27 -0
  293. package/docs/API/50-form/10-vue/30-designSystem/10-useFileInput.ts +23 -0
  294. package/docs/API/50-form/10-vue/30-designSystem/10-useNumberInput.ts +18 -0
  295. package/docs/API/50-form/10-vue/30-designSystem/10-useRadioGroup.ts +31 -0
  296. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeDateInput.ts +23 -0
  297. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeInput.ts +18 -0
  298. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeTimeInput.ts +23 -0
  299. package/docs/API/50-form/10-vue/30-designSystem/10-useSelectInput.ts +31 -0
  300. package/docs/API/50-form/10-vue/30-designSystem/10-useTextInput.ts +14 -0
  301. package/docs/API/50-form/10-vue/30-designSystem/10-useTextareaInput.ts +14 -0
  302. package/docs/API/50-form/10-vue/30-designSystem/10-useTimeInput.ts +20 -0
  303. package/docs/API/50-form/10-vue/30-designSystem/20-components.md +11 -0
  304. package/docs/API/50-form/10-vue/30-designSystem/index.llms.md +65 -0
  305. package/docs/API/50-form/10-vue/30-designSystem/index.md +3 -0
  306. package/docs/API/50-form/10-vue/fixtures/templates.ts +20 -0
  307. package/docs/API/50-form/10-vue/index.md +3 -0
  308. package/docs/API/50-form/index.md +3 -0
  309. package/docs/API/60-playwright/10-construction/10-createComponent.ts +47 -0
  310. package/docs/API/60-playwright/10-construction/10-createComponentInteraction.ts +28 -0
  311. package/docs/API/60-playwright/10-construction/10-createPage.ts +34 -0
  312. package/docs/API/60-playwright/10-construction/10-createStepWrapper.ts +23 -0
  313. package/docs/API/60-playwright/10-construction/10-createWebsite.ts +57 -0
  314. package/docs/API/60-playwright/10-construction/10-initClient.ts +38 -0
  315. package/docs/API/60-playwright/10-construction/index.llms.md +28 -0
  316. package/docs/API/60-playwright/10-construction/index.md +3 -0
  317. package/docs/API/60-playwright/20-actions/10-check.ts +9 -0
  318. package/docs/API/60-playwright/20-actions/10-clear.ts +9 -0
  319. package/docs/API/60-playwright/20-actions/10-click.ts +9 -0
  320. package/docs/API/60-playwright/20-actions/10-dragTo.ts +10 -0
  321. package/docs/API/60-playwright/20-actions/10-extractContent.ts +10 -0
  322. package/docs/API/60-playwright/20-actions/10-fill.ts +9 -0
  323. package/docs/API/60-playwright/20-actions/10-focus.ts +9 -0
  324. package/docs/API/60-playwright/20-actions/10-forceClick.ts +10 -0
  325. package/docs/API/60-playwright/20-actions/10-hover.ts +9 -0
  326. package/docs/API/60-playwright/20-actions/10-press.ts +9 -0
  327. package/docs/API/60-playwright/20-actions/10-selectOption.ts +10 -0
  328. package/docs/API/60-playwright/20-actions/10-type.ts +10 -0
  329. package/docs/API/60-playwright/20-actions/10-uncheck.ts +9 -0
  330. package/docs/API/60-playwright/20-actions/10-withStep.ts +10 -0
  331. package/docs/API/60-playwright/20-actions/index.llms.md +60 -0
  332. package/docs/API/60-playwright/20-actions/index.md +3 -0
  333. package/docs/API/60-playwright/30-assertions/10-toBeBusy.ts +10 -0
  334. package/docs/API/60-playwright/30-assertions/10-toBeChecked.ts +9 -0
  335. package/docs/API/60-playwright/30-assertions/10-toBeDisabled.ts +9 -0
  336. package/docs/API/60-playwright/30-assertions/10-toBeEnabled.ts +9 -0
  337. package/docs/API/60-playwright/30-assertions/10-toBeHidden.ts +9 -0
  338. package/docs/API/60-playwright/30-assertions/10-toBeNotBusy.ts +10 -0
  339. package/docs/API/60-playwright/30-assertions/10-toBeVisible.ts +10 -0
  340. package/docs/API/60-playwright/30-assertions/10-toContainText.ts +9 -0
  341. package/docs/API/60-playwright/30-assertions/10-toHaveAttribute.ts +12 -0
  342. package/docs/API/60-playwright/30-assertions/10-toHaveClass.ts +9 -0
  343. package/docs/API/60-playwright/30-assertions/10-toHaveNoText.ts +10 -0
  344. package/docs/API/60-playwright/30-assertions/10-toHaveQuantity.ts +20 -0
  345. package/docs/API/60-playwright/30-assertions/10-toHaveText.ts +9 -0
  346. package/docs/API/60-playwright/30-assertions/10-toHaveValue.ts +9 -0
  347. package/docs/API/60-playwright/30-assertions/10-withStep.ts +10 -0
  348. package/docs/API/60-playwright/30-assertions/index.llms.md +64 -0
  349. package/docs/API/60-playwright/30-assertions/index.md +3 -0
  350. package/docs/API/60-playwright/fixtures/component.ts +44 -0
  351. package/docs/API/60-playwright/index.md +3 -0
  352. package/docs/API.llms.md +84 -0
  353. package/docs/concepts/01-fundamental/01-constraint/20-manipulation.ts +9 -6
  354. package/docs/concepts/01-fundamental/01-constraint/30-cast.ts +9 -5
  355. package/docs/concepts/01-fundamental/02-currying/01-use.ts +5 -0
  356. package/docs/concepts/01-fundamental/02-currying/10-built-in-function.ts +28 -16
  357. package/docs/concepts/01-fundamental/02-currying/20-inner-pipe.ts +11 -2
  358. package/docs/concepts/01-fundamental/02-currying/30-async-pipe.ts +11 -2
  359. package/docs/concepts/01-fundamental/03-either/10-discrimination.ts +23 -12
  360. package/docs/concepts/01-fundamental/03-either/20-exhaustive-handling.ts +27 -10
  361. package/docs/concepts/01-fundamental/03-either/30-composition.ts +18 -10
  362. package/docs/concepts/01-fundamental/03-either/40-result-adaptation.ts +10 -4
  363. package/docs/concepts/01-fundamental/03-either/50-external-results.ts +16 -3
  364. package/docs/concepts/01-fundamental/04-data-structure/10-structure.ts +110 -59
  365. package/docs/concepts/01-fundamental/04-data-structure/20-constraint.ts +20 -12
  366. package/docs/concepts/01-fundamental/04-data-structure/30-validation.ts +13 -9
  367. package/docs/concepts/01-fundamental/04-data-structure/40-codecs.ts +31 -20
  368. package/docs/concepts/01-fundamental/04-data-structure/50-recursive.ts +10 -1
  369. package/docs/concepts/01-fundamental/05-chrono/10-creation.ts +39 -13
  370. package/docs/concepts/01-fundamental/05-chrono/20-manipulation.ts +20 -4
  371. package/docs/concepts/01-fundamental/05-chrono/30-serialized.ts +22 -6
  372. package/docs/concepts/01-fundamental/05-chrono/40-timezone.ts +5 -1
  373. package/docs/concepts/01-fundamental/06-modeling/20-entity.ts +29 -42
  374. package/docs/concepts/01-fundamental/06-modeling/30-tagged-object.ts +46 -23
  375. package/docs/concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts +30 -33
  376. package/docs/concepts/01-fundamental/07-discrimination/10-entity.ts +52 -20
  377. package/docs/concepts/01-fundamental/07-discrimination/20-fact.ts +54 -38
  378. package/docs/concepts/01-fundamental/07-discrimination/30-tagged-object.ts +52 -20
  379. package/docs/concepts/01-fundamental/07-discrimination/40-error.ts +26 -10
  380. package/docs/concepts/01-fundamental/07-discrimination/50-literal.ts +29 -10
  381. package/docs/concepts/01-fundamental/07-discrimination/60-shape.ts +10 -2
  382. package/docs/concepts/01-fundamental/07-discrimination/70-predicate.ts +18 -6
  383. package/docs/concepts/01-fundamental/08-kind/01-identity.md +7 -0
  384. package/docs/concepts/01-fundamental/08-kind/20-metadata.md +11 -0
  385. package/docs/concepts/01-fundamental/08-kind/30-transport.md +11 -0
  386. package/docs/concepts/01-fundamental/08-kind/index.md +3 -0
  387. package/docs/concepts/02-server/10-file/10-manipulation.ts +15 -3
  388. package/docs/concepts/02-server/10-file/20-path.ts +22 -6
  389. package/docs/concepts/02-server/20-http/10-init.ts +1 -9
  390. package/docs/concepts/02-server/20-http/20-route.ts +40 -32
  391. package/docs/concepts/02-server/20-http/30-routine.ts +12 -19
  392. package/docs/concepts/02-server/20-http/40-jwt.ts +49 -37
  393. package/docs/concepts/02-server/20-http/50-open-api.ts +44 -0
  394. package/docs/concepts/02-server/20-http/index.md +1 -1
  395. package/docs/concepts/02-server/30-environment/10-platform.ts +12 -3
  396. package/docs/concepts/02-server/30-environment/20-variable.ts +13 -7
  397. package/docs/concepts/03-client/10-http/10-init.ts +11 -23
  398. package/docs/concepts/03-client/10-http/20-request.ts +79 -69
  399. package/docs/concepts/03-client/10-http/30-hook.ts +23 -23
  400. package/docs/concepts/03-client/20-form/10-init.ts +18 -15
  401. package/docs/concepts/03-client/20-form/20-input.ts +13 -6
  402. package/docs/concepts/03-client/20-form/30-layout.ts +44 -49
  403. package/docs/concepts/03-client/20-form/40-template.ts +10 -5
  404. package/docs/concepts/03-client/20-form/50-integration.md +11 -0
  405. package/docs/concepts/03-client/20-form/examples/postModeration/ThePage.vue +32 -0
  406. package/docs/concepts/03-client/20-form/examples/postModeration/usePostModeration.ts +80 -0
  407. package/docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md +23 -20
  408. package/docs/concepts/05-type-driven-design/01-architecture/index.md +1 -1
  409. package/docs/concepts/05-type-driven-design/02-domains/10-entities.md +29 -37
  410. package/docs/concepts/05-type-driven-design/02-domains/20-aggregates.md +42 -26
  411. package/docs/concepts/05-type-driven-design/02-domains/30-repositories.md +20 -26
  412. package/docs/concepts/05-type-driven-design/02-domains/40-refinements.md +30 -0
  413. package/docs/concepts/05-type-driven-design/02-domains/index.md +1 -1
  414. package/docs/concepts/05-type-driven-design/03-applications/10-use-case.md +33 -40
  415. package/docs/concepts/05-type-driven-design/03-applications/20-ports.md +49 -0
  416. package/docs/concepts/05-type-driven-design/03-applications/index.md +1 -1
  417. package/docs/concepts/05-type-driven-design/04-infrastructure/10-implementation.md +27 -36
  418. package/docs/concepts/05-type-driven-design/04-infrastructure/index.md +1 -1
  419. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/index.ts +1 -0
  420. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/waitingListEntry.ts +17 -0
  421. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientGiveBackBook.ts +30 -12
  422. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientRentBook.ts +9 -8
  423. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/createBook.ts +7 -7
  424. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/index.ts +2 -0
  425. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/withdrawBook.ts +32 -0
  426. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientGiveBackBook.ts +72 -13
  427. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientRentBook.ts +37 -11
  428. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/createBook.ts +29 -17
  429. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/index.ts +1 -0
  430. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/withdrawBook.ts +37 -0
  431. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/create.ts +4 -5
  432. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/index.ts +2 -0
  433. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/rental.ts +9 -9
  434. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/reserve.ts +37 -0
  435. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/returnBook.ts +11 -9
  436. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/withdraw.ts +21 -0
  437. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/index.ts +42 -11
  438. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/giveBackBook.ts +11 -9
  439. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/rentBook.ts +10 -10
  440. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/index.ts +6 -29
  441. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/index.ts +1 -0
  442. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/cancel.ts +26 -0
  443. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/create.ts +33 -0
  444. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/index.ts +3 -0
  445. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/prepare.ts +23 -0
  446. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/index.ts +79 -0
  447. package/docs/concepts/05-type-driven-design/fixtures/business/domains/index.ts +1 -0
  448. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/index.ts +1 -0
  449. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/refineLinkBetweenClientAndBorrowedBook.ts +34 -0
  450. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/book.ts +1 -1
  451. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/index.ts +1 -0
  452. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/waitingListEntry.ts +19 -0
  453. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/clientRentBook.ts +3 -3
  454. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/bookExist.ts +2 -2
  455. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/clientExist.ts +2 -2
  456. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientGiveBackBook.ts +23 -14
  457. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientRentBook.ts +7 -12
  458. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/book.ts +1 -1
  459. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/index.ts +1 -0
  460. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/waitingListEntry.ts +17 -0
  461. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/useCases/index.ts +2 -1
  462. package/docs/concepts/05-type-driven-design/index.md +2 -2
  463. package/docs/concepts.llms.md +71 -25
  464. package/instructions/coding-conventions.md +2 -2
  465. package/package.json +17 -14
  466. package/skills/http-client/SKILL.md +1 -1
  467. package/skills/http-client/references/configuration.md +3 -1
  468. package/skills/http-client/references/examples/client-expectations.ts +11 -10
  469. package/skills/http-client/references/examples/client-streams.ts +2 -2
  470. package/skills/http-client/references/examples/external-client.ts +2 -2
  471. package/skills/http-client/references/responses.md +1 -1
  472. package/skills/http-server/SKILL.md +4 -9
  473. package/skills/http-server/references/examples/authentication.ts +2 -2
  474. package/skills/http-server/references/examples/inferred-client.ts +54 -0
  475. package/skills/http-server/references/examples/minimal-route.ts +2 -3
  476. package/skills/http-server/references/examples/protected-route.ts +4 -6
  477. package/skills/http-server/references/examples/rename-user-route.ts +4 -6
  478. package/skills/http-server/references/examples/user-checker.ts +2 -2
  479. package/skills/http-server/references/examples/user-route.ts +12 -5
  480. package/skills/http-server/references/initialization.md +1 -1
  481. package/skills/http-server/references/reusable-flows.md +3 -3
  482. package/skills/http-server/references/routes-and-floor.md +11 -3
  483. package/dist/bin/install/index.d.ts +0 -2
  484. package/docs/concepts/02-server/20-http/50-codegen.ts +0 -29
  485. package/skills/http-server/references/code-generation.md +0 -31
  486. package/skills/http-server/references/examples/generate-sdk.ts +0 -36
  487. /package/dist/bin/{install → installSkill}/skill.d.ts +0 -0
package/README.md CHANGED
@@ -14,24 +14,24 @@ Read the relevant pages by resolving their links relative to the summary. Before
14
14
 
15
15
  Use each API domain's `index.llms.md` to find a public function by its exported namespace and name, such as `DArray.map` in [`docs/API/10-lang/10-array/index.llms.md`](docs/API/10-lang/10-array/index.llms.md). The other current domains are [Chrono](docs/API/10-lang/10-chrono/index.llms.md), [Common](docs/API/10-lang/10-common/index.llms.md), [DataStructure](docs/API/10-lang/10-dataStructure/index.llms.md), [Either](docs/API/10-lang/10-either/index.llms.md), and [Generator](docs/API/10-lang/10-generator/index.llms.md). API sources are primarily TypeScript files combining descriptions and typed usage examples. Each summary exposes their headers and links to those files.
16
16
 
17
- The `install` command creates symbolic links to the package's skills by default.
17
+ The `install-skill` command creates symbolic links to the package's skills by default.
18
18
  The boolean `--copy` option copies the skills instead.
19
19
  Each installation removes the skill's destination and replaces it with the requested copy or link. The target of any existing symbolic link is preserved.
20
20
 
21
21
  ```sh
22
- pnpm exec duplojs-agents-kit install
23
- pnpm exec duplojs-agents-kit install http-server --type codex
24
- pnpm exec duplojs-agents-kit install http-client --copy
25
- pnpm exec duplojs-agents-kit install command --type codex
26
- pnpm exec duplojs-agents-kit install server --type codex
27
- pnpm exec duplojs-agents-kit install modeling --type codex
28
- pnpm exec duplojs-agents-kit install test --type codex
22
+ pnpm exec duplojs-agents-kit install-skill
23
+ pnpm exec duplojs-agents-kit install-skill http-server --type codex
24
+ pnpm exec duplojs-agents-kit install-skill http-client --copy
25
+ pnpm exec duplojs-agents-kit install-skill command --type codex
26
+ pnpm exec duplojs-agents-kit install-skill server --type codex
27
+ pnpm exec duplojs-agents-kit install-skill modeling --type codex
28
+ pnpm exec duplojs-agents-kit install-skill test --type codex
29
29
  ```
30
30
 
31
31
  Two independently installable skills cover HTTP:
32
32
 
33
- - `http-server` (`duplojs-http-server`) guides server setup, routes, reusable flows, and contract and schema generation.
34
- - `http-client` (`duplojs-http-client`) guides typed calls to DuploJS or external APIs, response expectations, hooks, Predicted mode, SSE, and streams. It accepts generated or handwritten route types.
33
+ - `http-server` (`duplojs-http-server`) guides server setup, routes, and reusable flows.
34
+ - `http-client` (`duplojs-http-client`) guides typed calls to DuploJS or external APIs, response expectations, hooks, Predicted mode, SSE, and streams.
35
35
 
36
36
  The `server` skill (`duplojs-server`) guides filesystem operations, typed I/O errors, file and folder structures, environment configuration, and process capabilities through `@duplojs/server`. It prioritizes the package's runtime abstractions and distinguishes the process working directory from the module directory.
37
37
 
@@ -39,7 +39,7 @@ The `modeling` skill (`duplojs-modeling`) guides business system modeling and im
39
39
 
40
40
  The `test` skill (`duplojs-test`) guides testing DuploJS results and type contracts, selecting expected Either information, monitoring new result variants with exhaustive selectors, and isolating server dependencies through `TESTImplementation`. It also points to the concepts for organizing E2E tests with `@duplojs/playwright`.
41
41
 
42
- The `command` skill guides the creation of typed CLI commands with `@duplojs/server/command`, including arguments, options, subcommands, help, and executable entry points. Running `install` without a skill installs all supported skills. References and checked TypeScript examples are included in both copied and linked installations.
42
+ The `command` skill guides the creation of typed CLI commands with `@duplojs/server/command`, including arguments, options, subcommands, help, and executable entry points. Running `install-skill` without a skill installs all supported skills. References and checked TypeScript examples are included in both copied and linked installations.
43
43
 
44
44
  The `setup` command creates `AGENTS.md` by default, or `CLAUDE.md` with `--type claude`, in the current project if needed and synchronizes a marked coding conventions block while preserving the surrounding content:
45
45
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { installCommand } from "./install/index.mjs";
2
+ import { installSkillCommand } from "./installSkill/index.mjs";
3
3
  import { setupCommand } from "./setup/index.mjs";
4
4
  import * as DSCommand from "@duplojs/server/command";
5
5
  //#region scripts/bin/index.ts
6
- await DSCommand.exec({ subjects: [installCommand, setupCommand] }, () => {});
6
+ await DSCommand.exec({ subjects: [installSkillCommand, setupCommand] }, () => {});
7
7
  //#endregion
@@ -0,0 +1,2 @@
1
+ import * as DSCommand from "@duplojs/server/command";
2
+ export declare const installSkillCommand: DSCommand.Command<"install-skill">;
@@ -7,8 +7,8 @@ import * as DPath from "@duplojs/lang/path";
7
7
  import * as DSFile from "@duplojs/server/file";
8
8
  import * as DEither from "@duplojs/lang/either";
9
9
  import * as DArray from "@duplojs/lang/array";
10
- //#region scripts/bin/install/index.ts
11
- const installCommand = DSCommand.create("install", {
10
+ //#region scripts/bin/installSkill/index.ts
11
+ const installSkillCommand = DSCommand.create("install-skill", {
12
12
  options: [DSCommand.createBooleanOption("copy", { description: "Copy skills instead of creating symbolic links" }), DSCommand.createOption("type", DDataStructure.literal(AgentTypeEnum.toTuple()))],
13
13
  subjects: [DSCommand.createArgument("skill", DDataStructure.literal(SkillEnum.toTuple()), { optional: true })]
14
14
  }, async ({ args, options }) => {
@@ -22,4 +22,4 @@ const installCommand = DSCommand.create("install", {
22
22
  await DEither.rightAsyncPipe(DSFile.readDirectory(skillsPath), DArray.filter(SkillEnum.has), DArray.map((value) => installSkill(agentType, value)), DCommon.promiseAll);
23
23
  });
24
24
  //#endregion
25
- export { installCommand };
25
+ export { installSkillCommand };
@@ -5,7 +5,7 @@ import * as DSCommon from "@duplojs/server/common";
5
5
  import * as DSFile from "@duplojs/server/file";
6
6
  import * as DEither from "@duplojs/lang/either";
7
7
  import * as DPattern from "@duplojs/lang/pattern";
8
- //#region scripts/bin/install/skill.ts
8
+ //#region scripts/bin/installSkill/skill.ts
9
9
  const AgentTypeEnum = DCommon.createEnum([
10
10
  "default",
11
11
  "claude",
@@ -4,5 +4,5 @@ import type * as DPath from "@duplojs/lang/path";
4
4
  declare const InvalidInstructionsMarkersError_base: abstract new (error: string) => DCommon.DuploJSError<"agents-kit-invalid-instructions-markers", string> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-agents-kit-invalid-instructions-markers", unknown>>, unknown>;
5
5
  export declare class InvalidInstructionsMarkersError extends InvalidInstructionsMarkersError_base {
6
6
  }
7
- export declare function synchronizeInstructions(content: string, instructions: string, packagePath: string & DPath.Path): DEither.Left<"agents-kit-invalid-instructions-markers", InvalidInstructionsMarkersError> | DEither.Success<string>;
7
+ export declare function synchronizeInstructions(content: string, instructions: string, packagePath: DPath.AnyPath): DEither.Left<"agents-kit-invalid-instructions-markers", InvalidInstructionsMarkersError> | DEither.Success<string>;
8
8
  export {};
@@ -6,12 +6,12 @@
6
6
  import * as DArray from "@duplojs/lang/array";
7
7
  import * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const colors = ["red", "green", "blue"] as const;
9
+ declare const colors: readonly ["red", "green", "blue"];
10
10
 
11
11
  // Appel classique : l’index couvert renvoie l’union des éléments du tableau.
12
12
  const color = DArray.at(colors, 1);
13
13
 
14
- // La valeur obtenue est « green » au runtime, mais le type conserve les trois valeurs possibles.
14
+ // La valeur obtenue est l’un des trois éléments du tuple.
15
15
  type _CheckColor = DCommon.ExpectType<
16
16
  typeof color,
17
17
  "red" | "green" | "blue",
@@ -24,7 +24,7 @@ const firstColor = DCommon.pipe(
24
24
  DArray.at(0),
25
25
  );
26
26
 
27
- // La valeur obtenue est « red » au runtime.
27
+ // La valeur obtenue est le premier élément du tuple.
28
28
  type _CheckFirstColor = DCommon.ExpectType<
29
29
  typeof firstColor,
30
30
  "red" | "green" | "blue",
@@ -34,7 +34,7 @@ type _CheckFirstColor = DCommon.ExpectType<
34
34
  // Un index littéral hors limites est identifié statiquement.
35
35
  const missingColor = DArray.at(colors, 3);
36
36
 
37
- // La valeur obtenue est undefined au runtime.
37
+ // Un index connu hors limites produit undefined.
38
38
  type _CheckMissingColor = DCommon.ExpectType<
39
39
  typeof missingColor,
40
40
  undefined,
@@ -13,7 +13,8 @@ const value = DArray.coalescing(42);
13
13
  type _CheckValue = DCommon.ExpectType<typeof value, readonly [42], "strict">;
14
14
 
15
15
  // Un tableau est conservé avec sa forme et ses éléments.
16
- const array = DArray.coalescing([1, 2] as const);
16
+ declare const input: readonly [1, 2];
17
+ const array = DArray.coalescing(input);
17
18
 
18
19
  // La valeur obtenue est [1, 2].
19
- type _CheckArray = DCommon.ExpectType<typeof array, [1, 2], "strict">;
20
+ type _CheckArray = DCommon.ExpectType<typeof array, readonly [1, 2], "strict">;
@@ -6,7 +6,7 @@
6
6
  import * as DArray from "@duplojs/lang/array";
7
7
  import * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const values = ["a", "b", "a"] as const;
9
+ const values = ["a", "b", "a"];
10
10
 
11
11
  // Appel classique : la recherche commence au début par défaut.
12
12
  const result = DArray.indexOf(values, "a");
@@ -4,12 +4,26 @@
4
4
  * Vérifier au runtime qu’une valeur est un tableau et affiner son type TypeScript.
5
5
  */
6
6
  import * as DArray from "@duplojs/lang/array";
7
- import type * as DCommon from "@duplojs/lang/common";
7
+ import * as DCommon from "@duplojs/lang/common";
8
8
 
9
- declare const input: unknown;
9
+ declare const input: DCommon.AnyValue;
10
10
 
11
11
  // Le test runtime réussit uniquement pour une valeur qui est effectivement un tableau.
12
12
  if (DArray.is(input)) {
13
13
  // Dans cette branche, input est affiné en tableau de valeurs inconnues.
14
- type _CheckInput = DCommon.ExpectType<typeof input, readonly unknown[], "strict">;
14
+ type _CheckInput = DCommon.ExpectType<typeof input, DCommon.AnyValue[], "strict">;
15
15
  }
16
+
17
+ // Dans un pipe, le même predicate unaire fournit le tableau à l’étape de traitement.
18
+ const first = DCommon.pipe(
19
+ input,
20
+ DCommon.when(
21
+ DArray.is,
22
+ (array) => {
23
+ type _CheckArray = DCommon.ExpectType<typeof array, DCommon.AnyValue[], "strict">;
24
+
25
+ return DArray.first(array);
26
+ },
27
+ ),
28
+ );
29
+ type _CheckFirst = DCommon.ExpectType<typeof first, DCommon.AnyValue | undefined, "strict">;
@@ -6,7 +6,7 @@
6
6
  import * as DArray from "@duplojs/lang/array";
7
7
  import * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const values = ["a", "b", "a"] as const;
9
+ const values = ["a", "b", "a"];
10
10
 
11
11
  // Appel classique : la recherche commence à la fin par défaut.
12
12
  const result = DArray.lastIndexOf(values, "a");
@@ -15,7 +15,7 @@ type _CheckTime = DCommon.ExpectType<typeof timeResult, DChrono.TheTime, "strict
15
15
 
16
16
  // La forme curifiée s’applique aussi dans un pipe.
17
17
  const piped = DCommon.pipe(
18
- "time1000+" as const,
18
+ "time1000+",
19
19
  DChrono.addTime("time500+"),
20
20
  );
21
21
  type _CheckPiped = DCommon.ExpectType<typeof piped, DChrono.TheTime, "strict">;
@@ -6,10 +6,7 @@
6
6
  import * as DChrono from "@duplojs/lang/chrono";
7
7
  import * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const dates = [
10
- DChrono.createDate("2021-01-10"),
11
- DChrono.createDate("2021-01-20"),
12
- ] as const;
9
+ declare const dates: readonly [DChrono.TheDate, DChrono.TheDate];
13
10
  const target = DChrono.createDate("2021-01-15");
14
11
 
15
12
  const closest = DChrono.closestTo(dates, target);
@@ -33,10 +30,10 @@ const piped = DCommon.pipe(
33
30
  type _CheckPiped = DCommon.ExpectType<typeof piped, DChrono.TheDate | undefined, "strict">;
34
31
 
35
32
  // Les collections peuvent mélanger TheDate et dates sérialisées.
36
- const mixedDates = [
37
- "date1609459200000+",
38
- DChrono.createDate("2021-01-10"),
39
- ] as const;
33
+ declare const mixedDates: readonly [
34
+ DChrono.TheDate | DChrono.SerializedTheDate,
35
+ DChrono.TheDate | DChrono.SerializedTheDate,
36
+ ];
40
37
  const mixedClosest = DChrono.closestTo(
41
38
  mixedDates,
42
39
  "date1609804800000+",
@@ -4,9 +4,9 @@
4
4
  * Identifier si une valeur est une instance de TheDate et réduire son type.
5
5
  */
6
6
  import * as DChrono from "@duplojs/lang/chrono";
7
- import type * as DCommon from "@duplojs/lang/common";
7
+ import * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const value: unknown = DChrono.createDate("2021-01-15");
9
+ declare const value: DCommon.AnyValue;
10
10
  const isDate = DChrono.isDate(value);
11
11
 
12
12
  // Le résultat indique si la valeur est une TheDate.
@@ -21,3 +21,16 @@ if (DChrono.isDate(value)) {
21
21
  type _CheckNarrowed = DCommon.ExpectType<typeof timestamp, number, "strict">;
22
22
  }
23
23
 
24
+ // Le predicate unaire peut aussi établir TheDate dans le callback d’un pipe.
25
+ const timestamp = DCommon.pipe(
26
+ value,
27
+ DCommon.when(
28
+ DChrono.isDate,
29
+ (date) => {
30
+ type _CheckDate = DCommon.ExpectType<typeof date, DChrono.TheDate, "strict">;
31
+
32
+ return DChrono.toTimestamp(date);
33
+ },
34
+ ),
35
+ );
36
+ type _CheckTimestamp = DCommon.ExpectType<typeof timestamp, DCommon.AnyValue, "strict">;
@@ -4,7 +4,7 @@
4
4
  * Vérifier qu’une chaîne respecte le format sérialisé sûr d’une TheDate.
5
5
  */
6
6
  import * as DChrono from "@duplojs/lang/chrono";
7
- import type * as DCommon from "@duplojs/lang/common";
7
+ import * as DCommon from "@duplojs/lang/common";
8
8
 
9
9
  const value = "date1609459200000+";
10
10
  const isSerialized = DChrono.isSerializedTheDate(value);
@@ -24,3 +24,18 @@ if (DChrono.isSerializedTheDate(value)) {
24
24
  type _CheckNarrowed = DCommon.ExpectType<typeof timestamp, number, "strict">;
25
25
  }
26
26
 
27
+ declare const checkedValue: string;
28
+
29
+ // Le pipe valide la chaîne avant de la convertir en timestamp.
30
+ const timestamp = DCommon.pipe(
31
+ checkedValue,
32
+ DCommon.when(
33
+ DChrono.isSerializedTheDate,
34
+ (serializedDate) => {
35
+ type _CheckDate = DCommon.ExpectType<typeof serializedDate, DChrono.SerializedTheDate, "strict">;
36
+
37
+ return DChrono.toTimestamp(serializedDate);
38
+ },
39
+ ),
40
+ );
41
+ type _CheckTimestamp = DCommon.ExpectType<typeof timestamp, string | number, "strict">;
@@ -4,7 +4,7 @@
4
4
  * Vérifier qu’une chaîne respecte le format sérialisé sûr d’une TheTime.
5
5
  */
6
6
  import * as DChrono from "@duplojs/lang/chrono";
7
- import type * as DCommon from "@duplojs/lang/common";
7
+ import * as DCommon from "@duplojs/lang/common";
8
8
 
9
9
  const value = "time90000+";
10
10
  const isSerialized = DChrono.isSerializedTheTime(value);
@@ -24,3 +24,18 @@ if (DChrono.isSerializedTheTime(value)) {
24
24
  type _CheckNarrowed = DCommon.ExpectType<typeof timeValue, number, "strict">;
25
25
  }
26
26
 
27
+ declare const checkedValue: string;
28
+
29
+ // Le pipe valide la chaîne avant de lire sa valeur temporelle.
30
+ const timeValue = DCommon.pipe(
31
+ checkedValue,
32
+ DCommon.when(
33
+ DChrono.isSerializedTheTime,
34
+ (serializedTime) => {
35
+ type _CheckTime = DCommon.ExpectType<typeof serializedTime, DChrono.SerializedTheTime, "strict">;
36
+
37
+ return DChrono.toTimeValue(serializedTime);
38
+ },
39
+ ),
40
+ );
41
+ type _CheckTimeValue = DCommon.ExpectType<typeof timeValue, string | number, "strict">;
@@ -4,9 +4,9 @@
4
4
  * Identifier si une valeur est une instance de TheTime et réduire son type.
5
5
  */
6
6
  import * as DChrono from "@duplojs/lang/chrono";
7
- import type * as DCommon from "@duplojs/lang/common";
7
+ import * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const value: unknown = DChrono.createTimeOrThrow(90_000);
9
+ declare const value: DCommon.AnyValue;
10
10
  const isTime = DChrono.isTime(value);
11
11
 
12
12
  // Le résultat indique si la valeur est une TheTime.
@@ -21,3 +21,16 @@ if (DChrono.isTime(value)) {
21
21
  type _CheckNarrowed = DCommon.ExpectType<typeof timeValue, number, "strict">;
22
22
  }
23
23
 
24
+ // Le predicate unaire peut aussi établir TheTime dans le callback d’un pipe.
25
+ const timeValue = DCommon.pipe(
26
+ value,
27
+ DCommon.when(
28
+ DChrono.isTime,
29
+ (time) => {
30
+ type _CheckTime = DCommon.ExpectType<typeof time, DChrono.TheTime, "strict">;
31
+
32
+ return DChrono.toTimeValue(time);
33
+ },
34
+ ),
35
+ );
36
+ type _CheckTimeValue = DCommon.ExpectType<typeof timeValue, DCommon.AnyValue, "strict">;
@@ -6,18 +6,14 @@
6
6
  import * as DChrono from "@duplojs/lang/chrono";
7
7
  import type * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const latest = DChrono.maxDate([
10
- DChrono.createDate("2021-01-01"),
11
- DChrono.createDate("2021-01-15"),
12
- ] as const);
9
+ declare const dates: [DChrono.TheDate, DChrono.TheDate];
10
+ const latest = DChrono.maxDate(dates);
13
11
 
14
12
  // La valeur obtenue est la date du 15 janvier.
15
13
  type _CheckLatest = DCommon.ExpectType<typeof latest, DChrono.TheDate, "strict">;
16
14
 
17
15
  // Les éléments peuvent être un mélange de TheDate et de dates sérialisées.
18
- const latestMixed = DChrono.maxDate([
19
- "date1609459200000+",
20
- DChrono.createDate("2021-01-15"),
21
- ] as const);
16
+ declare const mixedDates: [DChrono.TheDate | DChrono.SerializedTheDate, DChrono.TheDate | DChrono.SerializedTheDate];
17
+ const latestMixed = DChrono.maxDate(mixedDates);
22
18
  type _CheckMixed = DCommon.ExpectType<typeof latestMixed, DChrono.TheDate, "strict">;
23
19
 
@@ -6,18 +6,14 @@
6
6
  import * as DChrono from "@duplojs/lang/chrono";
7
7
  import type * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const longest = DChrono.maxTime([
10
- DChrono.createTimeOrThrow(1_000),
11
- DChrono.createTimeOrThrow(2_000),
12
- ] as const);
9
+ declare const times: [DChrono.TheTime, DChrono.TheTime];
10
+ const longest = DChrono.maxTime(times);
13
11
 
14
12
  // La valeur obtenue représente 2 000 millisecondes.
15
13
  type _CheckLongest = DCommon.ExpectType<typeof longest, DChrono.TheTime, "strict">;
16
14
 
17
15
  // Les éléments peuvent être un mélange de TheTime et de durées sérialisées.
18
- const longestMixed = DChrono.maxTime([
19
- "time1000+",
20
- DChrono.createTimeOrThrow(2_000),
21
- ] as const);
16
+ declare const mixedTimes: [DChrono.TheTime | DChrono.SerializedTheTime, DChrono.TheTime | DChrono.SerializedTheTime];
17
+ const longestMixed = DChrono.maxTime(mixedTimes);
22
18
  type _CheckMixed = DCommon.ExpectType<typeof longestMixed, DChrono.TheTime, "strict">;
23
19
 
@@ -6,18 +6,14 @@
6
6
  import * as DChrono from "@duplojs/lang/chrono";
7
7
  import type * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const earliest = DChrono.minDate([
10
- DChrono.createDate("2021-01-15"),
11
- DChrono.createDate("2021-01-01"),
12
- ] as const);
9
+ declare const dates: [DChrono.TheDate, DChrono.TheDate];
10
+ const earliest = DChrono.minDate(dates);
13
11
 
14
12
  // La valeur obtenue est la date du 1er janvier.
15
13
  type _CheckEarliest = DCommon.ExpectType<typeof earliest, DChrono.TheDate, "strict">;
16
14
 
17
15
  // Les éléments peuvent être un mélange de TheDate et de dates sérialisées.
18
- const earliestMixed = DChrono.minDate([
19
- "date1609459200000+",
20
- DChrono.createDate("2021-01-15"),
21
- ] as const);
16
+ declare const mixedDates: [DChrono.TheDate | DChrono.SerializedTheDate, DChrono.TheDate | DChrono.SerializedTheDate];
17
+ const earliestMixed = DChrono.minDate(mixedDates);
22
18
  type _CheckMixed = DCommon.ExpectType<typeof earliestMixed, DChrono.TheDate, "strict">;
23
19
 
@@ -6,18 +6,14 @@
6
6
  import * as DChrono from "@duplojs/lang/chrono";
7
7
  import type * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const shortest = DChrono.minTime([
10
- DChrono.createTimeOrThrow(1_000),
11
- DChrono.createTimeOrThrow(2_000),
12
- ] as const);
9
+ declare const times: [DChrono.TheTime, DChrono.TheTime];
10
+ const shortest = DChrono.minTime(times);
13
11
 
14
12
  // La valeur obtenue représente 1 000 millisecondes.
15
13
  type _CheckShortest = DCommon.ExpectType<typeof shortest, DChrono.TheTime, "strict">;
16
14
 
17
15
  // Les éléments peuvent être un mélange de TheTime et de durées sérialisées.
18
- const shortestMixed = DChrono.minTime([
19
- "time1000+",
20
- DChrono.createTimeOrThrow(2_000),
21
- ] as const);
16
+ declare const mixedTimes: [DChrono.TheTime | DChrono.SerializedTheTime, DChrono.TheTime | DChrono.SerializedTheTime];
17
+ const shortestMixed = DChrono.minTime(mixedTimes);
22
18
  type _CheckMixed = DCommon.ExpectType<typeof shortestMixed, DChrono.TheTime, "strict">;
23
19
 
@@ -7,10 +7,7 @@ import * as DArray from "@duplojs/lang/array";
7
7
  import * as DChrono from "@duplojs/lang/chrono";
8
8
  import * as DCommon from "@duplojs/lang/common";
9
9
 
10
- const dates = [
11
- DChrono.createDate("2021-01-15"),
12
- DChrono.createDate("2021-01-01"),
13
- ] as const;
10
+ declare const dates: readonly [DChrono.TheDate, DChrono.TheDate];
14
11
  const ascending = DChrono.sortDates(dates, "ASC");
15
12
 
16
13
  // La nouvelle collection est triée du 1er au 15 janvier.
@@ -24,9 +21,10 @@ const descending = DCommon.pipe(
24
21
  type _CheckDescending = DCommon.ExpectType<typeof descending, DChrono.TheDate[], "strict">;
25
22
 
26
23
  // Une collection peut mélanger dates sérialisées et TheDate.
27
- const mixed = DChrono.sortDates([
28
- "date1609545600000+",
29
- DChrono.createDate("2021-01-01"),
30
- ] as const, "ASC");
24
+ declare const mixedDates: readonly [
25
+ DChrono.TheDate | DChrono.SerializedTheDate,
26
+ DChrono.TheDate | DChrono.SerializedTheDate,
27
+ ];
28
+ const mixed = DChrono.sortDates(mixedDates, "ASC");
31
29
  type _CheckMixed = DCommon.ExpectType<typeof mixed, DChrono.TheDate[], "strict">;
32
30
 
@@ -6,10 +6,7 @@
6
6
  import * as DChrono from "@duplojs/lang/chrono";
7
7
  import * as DCommon from "@duplojs/lang/common";
8
8
 
9
- const times = [
10
- DChrono.createTimeOrThrow(2_000),
11
- DChrono.createTimeOrThrow(1_000),
12
- ] as const;
9
+ declare const times: readonly [DChrono.TheTime, DChrono.TheTime];
13
10
  const ascending = DChrono.sortTimes(times, "ASC");
14
11
 
15
12
  // La nouvelle collection est triée de 1 000 à 2 000 millisecondes.
@@ -23,9 +20,10 @@ const descending = DCommon.pipe(
23
20
  type _CheckDescending = DCommon.ExpectType<typeof descending, DChrono.TheTime[], "strict">;
24
21
 
25
22
  // Une collection peut mélanger durées sérialisées et TheTime.
26
- const mixed = DChrono.sortTimes([
27
- "time2000+",
28
- DChrono.createTimeOrThrow(1_000),
29
- ] as const, "ASC");
23
+ declare const mixedTimes: readonly [
24
+ DChrono.TheTime | DChrono.SerializedTheTime,
25
+ DChrono.TheTime | DChrono.SerializedTheTime,
26
+ ];
27
+ const mixed = DChrono.sortTimes(mixedTimes, "ASC");
30
28
  type _CheckMixed = DCommon.ExpectType<typeof mixed, DChrono.TheTime[], "strict">;
31
29
 
@@ -15,7 +15,7 @@ type _CheckTime = DCommon.ExpectType<typeof timeResult, DChrono.TheTime, "strict
15
15
 
16
16
  // La forme curifiée s’applique aussi dans un pipe.
17
17
  const piped = DCommon.pipe(
18
- "date1000+" as const,
18
+ "date1000+",
19
19
  DChrono.subtractTime("time500+"),
20
20
  );
21
21
  type _CheckPiped = DCommon.ExpectType<typeof piped, DChrono.TheDate, "strict">;
@@ -17,6 +17,12 @@ type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
17
17
 
18
18
  declare const source: string | number;
19
19
 
20
+ if (DCommon.and(source, [DCommon.isType("string"), DCommon.truthy])) {
21
+ type _CheckIfValue = DCommon.ExpectType<typeof source, string, "strict">;
22
+ const uppercase = DString.toUpperCase(source);
23
+ type _CheckUppercase = DCommon.ExpectType<typeof uppercase, Uppercase<string>, "strict">;
24
+ }
25
+
20
26
  // Appel curifié : le predicate composé est passé directement à DCommon.when.
21
27
  const transformed = DCommon.pipe(
22
28
  source,
@@ -4,13 +4,14 @@
4
4
  * Créer une file d’attente typée avec une capacité optionnelle.
5
5
  */
6
6
  import * as DCommon from "@duplojs/lang/common";
7
+ import type * as DEither from "@duplojs/lang/either";
7
8
 
8
9
  const queue = DCommon.createQueue({ concurrency: 1 });
9
10
  const result = queue.add(() => "done");
10
11
 
11
- // Chaque tâche est exécutée dans une Promise et ses erreurs sont représentées par un Left.
12
+ // Le résultat contient la valeur de la tâche, ou un Left si son exécution lève une erreur.
12
13
  type _CheckResult = DCommon.ExpectType<
13
14
  typeof result,
14
- Promise<"done">,
15
- "two-extends-one"
15
+ Promise<string | DEither.Left<"execution-error", unknown>>,
16
+ "strict"
16
17
  >;
@@ -8,7 +8,7 @@ import * as DCommon from "@duplojs/lang/common";
8
8
  const toNative = DCommon.createTransformer("toNative");
9
9
  const result = toNative({
10
10
  toNative() {
11
- return 42 as const;
11
+ return 42;
12
12
  },
13
13
  });
14
14
 
@@ -14,6 +14,12 @@ type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
14
14
 
15
15
  declare const source: string | number;
16
16
 
17
+ if (DCommon.equal(source, "value")) {
18
+ type _CheckIfValue = DCommon.ExpectType<typeof source, "value", "strict">;
19
+ const uppercase = DString.toUpperCase(source);
20
+ type _CheckUppercase = DCommon.ExpectType<typeof uppercase, "VALUE", "strict">;
21
+ }
22
+
17
23
  // Appel curifié : le prédicat est passé directement à DCommon.when.
18
24
  const transformed = DCommon.pipe(
19
25
  source,
@@ -10,3 +10,22 @@ const result = DCommon.falsy(input);
10
10
 
11
11
  // Le prédicat produit un booléen et distingue la branche falsy de l’union.
12
12
  type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
13
+
14
+ // L’appel direct expose la branche falsy dans le if.
15
+ if (DCommon.falsy(input)) {
16
+ type _CheckInput = DCommon.ExpectType<typeof input, "" | null, "strict">;
17
+ }
18
+
19
+ // Le predicate unaire s’utilise directement avec DCommon.when.
20
+ const preserved = DCommon.pipe(
21
+ input,
22
+ DCommon.when(
23
+ DCommon.falsy,
24
+ (value) => {
25
+ type _CheckValue = DCommon.ExpectType<typeof value, "" | null, "strict">;
26
+
27
+ return DCommon.forward(value);
28
+ },
29
+ ),
30
+ );
31
+ type _CheckPreserved = DCommon.ExpectType<typeof preserved, string | null, "strict">;
@@ -4,6 +4,7 @@
4
4
  * Créer un prédicat basé sur un constructeur avec narrowing de l’instance.
5
5
  */
6
6
  import * as DCommon from "@duplojs/lang/common";
7
+ import * as DChrono from "@duplojs/lang/chrono";
7
8
 
8
9
  declare const input: Date | string;
9
10
  const result = DCommon.instanceOf(input, Date);
@@ -11,13 +12,23 @@ const result = DCommon.instanceOf(input, Date);
11
12
  // Le test runtime produit un booléen.
12
13
  type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
13
14
 
15
+ if (DCommon.instanceOf(input, Date)) {
16
+ type _CheckInput = DCommon.ExpectType<typeof input, Date, "strict">;
17
+ const chronoDate = DChrono.createDateOrThrow(input);
18
+ type _CheckChronoDate = DCommon.ExpectType<typeof chronoDate, DChrono.TheDate, "strict">;
19
+ }
20
+
14
21
  // La forme curifiée s’utilise directement comme predicate dans DCommon.when.
15
- const preserved = DCommon.pipe(
22
+ const converted = DCommon.pipe(
16
23
  input,
17
24
  DCommon.when(
18
25
  DCommon.instanceOf(Date),
19
- DCommon.forward,
26
+ (date) => {
27
+ type _CheckDate = DCommon.ExpectType<typeof date, Date, "strict">;
28
+
29
+ return DChrono.createDateOrThrow(date);
30
+ },
20
31
  ),
21
32
  );
22
33
 
23
- type _CheckPreserved = DCommon.ExpectType<typeof preserved, Date | string, "strict">;
34
+ type _CheckConverted = DCommon.ExpectType<typeof converted, DChrono.TheDate | string, "strict">;
@@ -12,6 +12,12 @@ declare const input: string | number;
12
12
  const result = DCommon.isType(input, "string");
13
13
  type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
14
14
 
15
+ if (DCommon.isType(input, "string")) {
16
+ type _CheckInput = DCommon.ExpectType<typeof input, string, "strict">;
17
+ const uppercase = DString.toUpperCase(input);
18
+ type _CheckUppercase = DCommon.ExpectType<typeof uppercase, Uppercase<string>, "strict">;
19
+ }
20
+
15
21
  // Appel curifié : le predicate est passé directement à DCommon.when.
16
22
  const transformed = DCommon.pipe(
17
23
  input,