@duplojs/agents-kit 0.0.0-stage → 0.1.0-beta.3

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 (551) hide show
  1. package/README.md +73 -2
  2. package/dist/bin/index.d.ts +2 -0
  3. package/dist/bin/index.mjs +7 -0
  4. package/dist/bin/install/index.d.ts +2 -0
  5. package/dist/bin/install/index.mjs +25 -0
  6. package/dist/bin/install/skill.d.ts +28 -0
  7. package/dist/bin/install/skill.mjs +58 -0
  8. package/dist/bin/packagePath.d.ts +2 -0
  9. package/dist/bin/packagePath.mjs +12 -0
  10. package/dist/bin/setup/index.d.ts +12 -0
  11. package/dist/bin/setup/index.mjs +33 -0
  12. package/dist/bin/setup/instructions.d.ts +8 -0
  13. package/dist/bin/setup/instructions.mjs +27 -0
  14. package/dist/index.cjs +1 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.mjs +0 -0
  17. package/docs/API/10-lang/10-array/10-at.ts +65 -0
  18. package/docs/API/10-lang/10-array/10-chunk.ts +42 -0
  19. package/docs/API/10-lang/10-array/10-coalescing.ts +19 -0
  20. package/docs/API/10-lang/10-array/10-concat.ts +34 -0
  21. package/docs/API/10-lang/10-array/10-copyWithin.ts +34 -0
  22. package/docs/API/10-lang/10-array/10-every.ts +25 -0
  23. package/docs/API/10-lang/10-array/10-fill.ts +34 -0
  24. package/docs/API/10-lang/10-array/10-fillAll.ts +34 -0
  25. package/docs/API/10-lang/10-array/10-filter.ts +43 -0
  26. package/docs/API/10-lang/10-array/10-find.ts +33 -0
  27. package/docs/API/10-lang/10-array/10-findAndReplace.ts +35 -0
  28. package/docs/API/10-lang/10-array/10-findAndSpliceDelete.ts +35 -0
  29. package/docs/API/10-lang/10-array/10-findAndSpliceInsert.ts +35 -0
  30. package/docs/API/10-lang/10-array/10-findAndSpliceReplace.ts +24 -0
  31. package/docs/API/10-lang/10-array/10-findDuplicates.ts +19 -0
  32. package/docs/API/10-lang/10-array/10-findIndex.ts +25 -0
  33. package/docs/API/10-lang/10-array/10-findLast.ts +33 -0
  34. package/docs/API/10-lang/10-array/10-findLastIndex.ts +25 -0
  35. package/docs/API/10-lang/10-array/10-first.ts +21 -0
  36. package/docs/API/10-lang/10-array/10-flat.ts +22 -0
  37. package/docs/API/10-lang/10-array/10-flatMap.ts +24 -0
  38. package/docs/API/10-lang/10-array/10-from.ts +25 -0
  39. package/docs/API/10-lang/10-array/10-group.ts +27 -0
  40. package/docs/API/10-lang/10-array/10-groupOutput.ts +30 -0
  41. package/docs/API/10-lang/10-array/10-includes.ts +24 -0
  42. package/docs/API/10-lang/10-array/10-indexOf.ts +24 -0
  43. package/docs/API/10-lang/10-array/10-insert.ts +34 -0
  44. package/docs/API/10-lang/10-array/10-is.ts +15 -0
  45. package/docs/API/10-lang/10-array/10-isLastIndex.ts +24 -0
  46. package/docs/API/10-lang/10-array/10-last.ts +21 -0
  47. package/docs/API/10-lang/10-array/10-lastIndexOf.ts +24 -0
  48. package/docs/API/10-lang/10-array/10-length.ts +28 -0
  49. package/docs/API/10-lang/10-array/10-lengthEqual.ts +39 -0
  50. package/docs/API/10-lang/10-array/10-map.ts +34 -0
  51. package/docs/API/10-lang/10-array/10-maxElements.ts +44 -0
  52. package/docs/API/10-lang/10-array/10-minElements.ts +44 -0
  53. package/docs/API/10-lang/10-array/10-notIncludes.ts +24 -0
  54. package/docs/API/10-lang/10-array/10-pop.ts +23 -0
  55. package/docs/API/10-lang/10-array/10-prepend.ts +34 -0
  56. package/docs/API/10-lang/10-array/10-push.ts +34 -0
  57. package/docs/API/10-lang/10-array/10-reduce.ts +28 -0
  58. package/docs/API/10-lang/10-array/10-reduceFrom.ts +16 -0
  59. package/docs/API/10-lang/10-array/10-reduceRight.ts +28 -0
  60. package/docs/API/10-lang/10-array/10-reverse.ts +25 -0
  61. package/docs/API/10-lang/10-array/10-select.ts +26 -0
  62. package/docs/API/10-lang/10-array/10-set.ts +24 -0
  63. package/docs/API/10-lang/10-array/10-shift.ts +23 -0
  64. package/docs/API/10-lang/10-array/10-slice.ts +24 -0
  65. package/docs/API/10-lang/10-array/10-some.ts +25 -0
  66. package/docs/API/10-lang/10-array/10-sort.ts +34 -0
  67. package/docs/API/10-lang/10-array/10-spliceDelete.ts +34 -0
  68. package/docs/API/10-lang/10-array/10-spliceInsert.ts +34 -0
  69. package/docs/API/10-lang/10-array/10-spliceReplace.ts +24 -0
  70. package/docs/API/10-lang/10-array/10-unshift.ts +34 -0
  71. package/docs/API/10-lang/10-array/index.llms.md +220 -0
  72. package/docs/API/10-lang/10-array/index.md +3 -0
  73. package/docs/API/10-lang/10-chrono/10-addDays.ts +25 -0
  74. package/docs/API/10-lang/10-chrono/10-addHours.ts +25 -0
  75. package/docs/API/10-lang/10-chrono/10-addMilliseconds.ts +25 -0
  76. package/docs/API/10-lang/10-chrono/10-addMinutes.ts +25 -0
  77. package/docs/API/10-lang/10-chrono/10-addMonths.ts +25 -0
  78. package/docs/API/10-lang/10-chrono/10-addSeconds.ts +25 -0
  79. package/docs/API/10-lang/10-chrono/10-addTime.ts +38 -0
  80. package/docs/API/10-lang/10-chrono/10-addWeeks.ts +25 -0
  81. package/docs/API/10-lang/10-chrono/10-addYears.ts +25 -0
  82. package/docs/API/10-lang/10-chrono/10-applyTimezone.ts +29 -0
  83. package/docs/API/10-lang/10-chrono/10-betweenThanDate.ts +27 -0
  84. package/docs/API/10-lang/10-chrono/10-betweenThanOrEqualDate.ts +27 -0
  85. package/docs/API/10-lang/10-chrono/10-betweenThanOrEqualTime.ts +27 -0
  86. package/docs/API/10-lang/10-chrono/10-betweenThanTime.ts +27 -0
  87. package/docs/API/10-lang/10-chrono/10-closestTo.ts +48 -0
  88. package/docs/API/10-lang/10-chrono/10-computeTime.ts +35 -0
  89. package/docs/API/10-lang/10-chrono/10-createDate.ts +122 -0
  90. package/docs/API/10-lang/10-chrono/10-createDateOrThrow.ts +39 -0
  91. package/docs/API/10-lang/10-chrono/10-createTime.ts +86 -0
  92. package/docs/API/10-lang/10-chrono/10-createTimeOrThrow.ts +28 -0
  93. package/docs/API/10-lang/10-chrono/10-eachDate.ts +67 -0
  94. package/docs/API/10-lang/10-chrono/10-equalDate.ts +26 -0
  95. package/docs/API/10-lang/10-chrono/10-equalTime.ts +26 -0
  96. package/docs/API/10-lang/10-chrono/10-formatDate.ts +43 -0
  97. package/docs/API/10-lang/10-chrono/10-formatTime.ts +37 -0
  98. package/docs/API/10-lang/10-chrono/10-getDayOfMonth.ts +37 -0
  99. package/docs/API/10-lang/10-chrono/10-getDayOfWeek.ts +30 -0
  100. package/docs/API/10-lang/10-chrono/10-getDayOfYear.ts +28 -0
  101. package/docs/API/10-lang/10-chrono/10-getDifference.ts +29 -0
  102. package/docs/API/10-lang/10-chrono/10-getFirstDayOfMonth.ts +24 -0
  103. package/docs/API/10-lang/10-chrono/10-getFirstDayOfWeek.ts +24 -0
  104. package/docs/API/10-lang/10-chrono/10-getHour.ts +28 -0
  105. package/docs/API/10-lang/10-chrono/10-getLastDayOfMonth.ts +24 -0
  106. package/docs/API/10-lang/10-chrono/10-getLastDayOfWeek.ts +24 -0
  107. package/docs/API/10-lang/10-chrono/10-getMilliseconds.ts +24 -0
  108. package/docs/API/10-lang/10-chrono/10-getMinute.ts +27 -0
  109. package/docs/API/10-lang/10-chrono/10-getMonth.ts +27 -0
  110. package/docs/API/10-lang/10-chrono/10-getSecond.ts +27 -0
  111. package/docs/API/10-lang/10-chrono/10-getTimezoneOffset.ts +28 -0
  112. package/docs/API/10-lang/10-chrono/10-getWeekOfYear.ts +27 -0
  113. package/docs/API/10-lang/10-chrono/10-getYear.ts +27 -0
  114. package/docs/API/10-lang/10-chrono/10-greaterThanDate.ts +26 -0
  115. package/docs/API/10-lang/10-chrono/10-greaterThanOrEqualDate.ts +26 -0
  116. package/docs/API/10-lang/10-chrono/10-greaterThanOrEqualTime.ts +26 -0
  117. package/docs/API/10-lang/10-chrono/10-greaterThanTime.ts +26 -0
  118. package/docs/API/10-lang/10-chrono/10-isDate.ts +23 -0
  119. package/docs/API/10-lang/10-chrono/10-isSafeTimeValue.ts +19 -0
  120. package/docs/API/10-lang/10-chrono/10-isSafeTimestamp.ts +19 -0
  121. package/docs/API/10-lang/10-chrono/10-isSerializedTheDate.ts +26 -0
  122. package/docs/API/10-lang/10-chrono/10-isSerializedTheTime.ts +26 -0
  123. package/docs/API/10-lang/10-chrono/10-isTime.ts +23 -0
  124. package/docs/API/10-lang/10-chrono/10-lessThanDate.ts +26 -0
  125. package/docs/API/10-lang/10-chrono/10-lessThanOrEqualDate.ts +26 -0
  126. package/docs/API/10-lang/10-chrono/10-lessThanOrEqualTime.ts +26 -0
  127. package/docs/API/10-lang/10-chrono/10-lessThanTime.ts +26 -0
  128. package/docs/API/10-lang/10-chrono/10-makeSafeTimeValue.ts +19 -0
  129. package/docs/API/10-lang/10-chrono/10-makeSafeTimestamp.ts +19 -0
  130. package/docs/API/10-lang/10-chrono/10-maxDate.ts +23 -0
  131. package/docs/API/10-lang/10-chrono/10-maxTime.ts +23 -0
  132. package/docs/API/10-lang/10-chrono/10-minDate.ts +23 -0
  133. package/docs/API/10-lang/10-chrono/10-minTime.ts +23 -0
  134. package/docs/API/10-lang/10-chrono/10-now.ts +13 -0
  135. package/docs/API/10-lang/10-chrono/10-round.ts +41 -0
  136. package/docs/API/10-lang/10-chrono/10-serialize.ts +23 -0
  137. package/docs/API/10-lang/10-chrono/10-sortDates.ts +32 -0
  138. package/docs/API/10-lang/10-chrono/10-sortTimes.ts +31 -0
  139. package/docs/API/10-lang/10-chrono/10-subtractDays.ts +25 -0
  140. package/docs/API/10-lang/10-chrono/10-subtractHours.ts +25 -0
  141. package/docs/API/10-lang/10-chrono/10-subtractMilliseconds.ts +25 -0
  142. package/docs/API/10-lang/10-chrono/10-subtractMinutes.ts +25 -0
  143. package/docs/API/10-lang/10-chrono/10-subtractMonths.ts +25 -0
  144. package/docs/API/10-lang/10-chrono/10-subtractSeconds.ts +25 -0
  145. package/docs/API/10-lang/10-chrono/10-subtractTime.ts +38 -0
  146. package/docs/API/10-lang/10-chrono/10-subtractWeeks.ts +25 -0
  147. package/docs/API/10-lang/10-chrono/10-subtractYears.ts +25 -0
  148. package/docs/API/10-lang/10-chrono/10-toDateISOString.ts +17 -0
  149. package/docs/API/10-lang/10-chrono/10-toNative.ts +25 -0
  150. package/docs/API/10-lang/10-chrono/10-toTimeValue.ts +17 -0
  151. package/docs/API/10-lang/10-chrono/10-toTimestamp.ts +17 -0
  152. package/docs/API/10-lang/10-chrono/10-today.ts +13 -0
  153. package/docs/API/10-lang/10-chrono/10-tomorrow.ts +13 -0
  154. package/docs/API/10-lang/10-chrono/10-yesterday.ts +13 -0
  155. package/docs/API/10-lang/10-chrono/index.llms.md +332 -0
  156. package/docs/API/10-lang/10-chrono/index.md +3 -0
  157. package/docs/API/10-lang/10-common/10-and.ts +45 -0
  158. package/docs/API/10-lang/10-common/10-asserts.ts +13 -0
  159. package/docs/API/10-lang/10-common/10-asyncInnerPipe.ts +23 -0
  160. package/docs/API/10-lang/10-common/10-asyncLoop.ts +25 -0
  161. package/docs/API/10-lang/10-common/10-asyncPipe.ts +21 -0
  162. package/docs/API/10-lang/10-common/10-callThen.ts +22 -0
  163. package/docs/API/10-lang/10-common/10-cast.ts +16 -0
  164. package/docs/API/10-lang/10-common/10-clone.ts +12 -0
  165. package/docs/API/10-lang/10-common/10-createAsyncRetry.ts +34 -0
  166. package/docs/API/10-lang/10-common/10-createBuilder.ts +19 -0
  167. package/docs/API/10-lang/10-common/10-createEnum.ts +25 -0
  168. package/docs/API/10-lang/10-common/10-createExternalPromise.ts +13 -0
  169. package/docs/API/10-lang/10-common/10-createFormData.ts +16 -0
  170. package/docs/API/10-lang/10-common/10-createInterpolation.ts +12 -0
  171. package/docs/API/10-lang/10-common/10-createQueue.ts +16 -0
  172. package/docs/API/10-lang/10-common/10-createTransformer.ts +16 -0
  173. package/docs/API/10-lang/10-common/10-detachObjectMethod.ts +20 -0
  174. package/docs/API/10-lang/10-common/10-equal.ts +31 -0
  175. package/docs/API/10-lang/10-common/10-escapeRegExp.ts +11 -0
  176. package/docs/API/10-lang/10-common/10-falsy.ts +12 -0
  177. package/docs/API/10-lang/10-common/10-forward.ts +11 -0
  178. package/docs/API/10-lang/10-common/10-forwardAsserts.ts +17 -0
  179. package/docs/API/10-lang/10-common/10-forwardLog.ts +11 -0
  180. package/docs/API/10-lang/10-common/10-infer.ts +16 -0
  181. package/docs/API/10-lang/10-common/10-innerPipe.ts +23 -0
  182. package/docs/API/10-lang/10-common/10-instanceOf.ts +23 -0
  183. package/docs/API/10-lang/10-common/10-isType.ts +29 -0
  184. package/docs/API/10-lang/10-common/10-justExec.ts +28 -0
  185. package/docs/API/10-lang/10-common/10-justReturn.ts +19 -0
  186. package/docs/API/10-lang/10-common/10-loop.ts +20 -0
  187. package/docs/API/10-lang/10-common/10-memo.ts +12 -0
  188. package/docs/API/10-lang/10-common/10-memoObject.ts +11 -0
  189. package/docs/API/10-lang/10-common/10-memoPromise.ts +16 -0
  190. package/docs/API/10-lang/10-common/10-or.ts +29 -0
  191. package/docs/API/10-lang/10-common/10-pipe.ts +21 -0
  192. package/docs/API/10-lang/10-common/10-pipeCall.ts +20 -0
  193. package/docs/API/10-lang/10-common/10-prepareAsyncPipe.ts +20 -0
  194. package/docs/API/10-lang/10-common/10-preparePipe.ts +20 -0
  195. package/docs/API/10-lang/10-common/10-promiseAll.ts +16 -0
  196. package/docs/API/10-lang/10-common/10-promiseObject.ts +22 -0
  197. package/docs/API/10-lang/10-common/10-removeConstraint.ts +13 -0
  198. package/docs/API/10-lang/10-common/10-shameOnYou.ts +20 -0
  199. package/docs/API/10-lang/10-common/10-simpleClone.ts +12 -0
  200. package/docs/API/10-lang/10-common/10-stringToBytes.ts +16 -0
  201. package/docs/API/10-lang/10-common/10-stringToMillisecond.ts +17 -0
  202. package/docs/API/10-lang/10-common/10-timeout.ts +11 -0
  203. package/docs/API/10-lang/10-common/10-toCurriedPredicate.ts +28 -0
  204. package/docs/API/10-lang/10-common/10-toJSON.ts +15 -0
  205. package/docs/API/10-lang/10-common/10-toNative.ts +15 -0
  206. package/docs/API/10-lang/10-common/10-toRegExp.ts +17 -0
  207. package/docs/API/10-lang/10-common/10-transformer.ts +21 -0
  208. package/docs/API/10-lang/10-common/10-truthy.ts +12 -0
  209. package/docs/API/10-lang/10-common/10-useAsyncRetry.ts +31 -0
  210. package/docs/API/10-lang/10-common/10-when.ts +27 -0
  211. package/docs/API/10-lang/10-common/10-whenElse.ts +28 -0
  212. package/docs/API/10-lang/10-common/10-whenNot.ts +26 -0
  213. package/docs/API/10-lang/10-common/index.llms.md +228 -0
  214. package/docs/API/10-lang/10-common/index.md +3 -0
  215. package/docs/API/10-lang/10-dataStructure/10-absolutePath.ts +25 -0
  216. package/docs/API/10-lang/10-dataStructure/10-allowedCharacters.ts +25 -0
  217. package/docs/API/10-lang/10-dataStructure/10-array.ts +23 -0
  218. package/docs/API/10-lang/10-dataStructure/10-arrayLengthEqual.ts +25 -0
  219. package/docs/API/10-lang/10-dataStructure/10-betweenThan.ts +25 -0
  220. package/docs/API/10-lang/10-dataStructure/10-betweenThanOrEqual.ts +25 -0
  221. package/docs/API/10-lang/10-dataStructure/10-bigint.ts +22 -0
  222. package/docs/API/10-lang/10-dataStructure/10-boolean.ts +22 -0
  223. package/docs/API/10-lang/10-dataStructure/10-createCodec.ts +45 -0
  224. package/docs/API/10-lang/10-dataStructure/10-createCodecs.ts +134 -0
  225. package/docs/API/10-lang/10-dataStructure/10-createErrorInterpreter.ts +74 -0
  226. package/docs/API/10-lang/10-dataStructure/10-date.ts +23 -0
  227. package/docs/API/10-lang/10-dataStructure/10-email.ts +25 -0
  228. package/docs/API/10-lang/10-dataStructure/10-endsWith.ts +24 -0
  229. package/docs/API/10-lang/10-dataStructure/10-even.ts +25 -0
  230. package/docs/API/10-lang/10-dataStructure/10-extend.ts +27 -0
  231. package/docs/API/10-lang/10-dataStructure/10-greaterThan.ts +25 -0
  232. package/docs/API/10-lang/10-dataStructure/10-greaterThanOrEqual.ts +25 -0
  233. package/docs/API/10-lang/10-dataStructure/10-include.ts +24 -0
  234. package/docs/API/10-lang/10-dataStructure/10-integer.ts +25 -0
  235. package/docs/API/10-lang/10-dataStructure/10-isNullStructure.ts +12 -0
  236. package/docs/API/10-lang/10-dataStructure/10-isNullable.ts +12 -0
  237. package/docs/API/10-lang/10-dataStructure/10-isOptional.ts +12 -0
  238. package/docs/API/10-lang/10-dataStructure/10-isUndefinedStructure.ts +12 -0
  239. package/docs/API/10-lang/10-dataStructure/10-lazy.ts +23 -0
  240. package/docs/API/10-lang/10-dataStructure/10-lessThan.ts +25 -0
  241. package/docs/API/10-lang/10-dataStructure/10-lessThanOrEqual.ts +25 -0
  242. package/docs/API/10-lang/10-dataStructure/10-literal.ts +19 -0
  243. package/docs/API/10-lang/10-dataStructure/10-maxCharacters.ts +25 -0
  244. package/docs/API/10-lang/10-dataStructure/10-maxElements.ts +25 -0
  245. package/docs/API/10-lang/10-dataStructure/10-minCharacters.ts +25 -0
  246. package/docs/API/10-lang/10-dataStructure/10-minElements.ts +25 -0
  247. package/docs/API/10-lang/10-dataStructure/10-multipleOf.ts +25 -0
  248. package/docs/API/10-lang/10-dataStructure/10-negative.ts +25 -0
  249. package/docs/API/10-lang/10-dataStructure/10-notEmpty.ts +25 -0
  250. package/docs/API/10-lang/10-dataStructure/10-notZero.ts +25 -0
  251. package/docs/API/10-lang/10-dataStructure/10-null.ts +22 -0
  252. package/docs/API/10-lang/10-dataStructure/10-nullable.ts +19 -0
  253. package/docs/API/10-lang/10-dataStructure/10-number.ts +22 -0
  254. package/docs/API/10-lang/10-dataStructure/10-numberInString.ts +25 -0
  255. package/docs/API/10-lang/10-dataStructure/10-object.ts +25 -0
  256. package/docs/API/10-lang/10-dataStructure/10-odd.ts +25 -0
  257. package/docs/API/10-lang/10-dataStructure/10-optional.ts +19 -0
  258. package/docs/API/10-lang/10-dataStructure/10-partial.ts +23 -0
  259. package/docs/API/10-lang/10-dataStructure/10-path.ts +25 -0
  260. package/docs/API/10-lang/10-dataStructure/10-positive.ts +25 -0
  261. package/docs/API/10-lang/10-dataStructure/10-record.ts +22 -0
  262. package/docs/API/10-lang/10-dataStructure/10-refine.ts +27 -0
  263. package/docs/API/10-lang/10-dataStructure/10-regex.ts +24 -0
  264. package/docs/API/10-lang/10-dataStructure/10-required.ts +21 -0
  265. package/docs/API/10-lang/10-dataStructure/10-safe.ts +25 -0
  266. package/docs/API/10-lang/10-dataStructure/10-segmentPath.ts +25 -0
  267. package/docs/API/10-lang/10-dataStructure/10-startsWith.ts +24 -0
  268. package/docs/API/10-lang/10-dataStructure/10-strictNegative.ts +25 -0
  269. package/docs/API/10-lang/10-dataStructure/10-strictPositive.ts +25 -0
  270. package/docs/API/10-lang/10-dataStructure/10-string.ts +22 -0
  271. package/docs/API/10-lang/10-dataStructure/10-stringLengthEqual.ts +25 -0
  272. package/docs/API/10-lang/10-dataStructure/10-time.ts +23 -0
  273. package/docs/API/10-lang/10-dataStructure/10-trimmed.ts +25 -0
  274. package/docs/API/10-lang/10-dataStructure/10-typeStructureIdentifier.ts +33 -0
  275. package/docs/API/10-lang/10-dataStructure/10-undefined.ts +22 -0
  276. package/docs/API/10-lang/10-dataStructure/10-union.ts +24 -0
  277. package/docs/API/10-lang/10-dataStructure/10-unwrapLazy.ts +17 -0
  278. package/docs/API/10-lang/10-dataStructure/10-url.ts +25 -0
  279. package/docs/API/10-lang/10-dataStructure/10-uuid.ts +25 -0
  280. package/docs/API/10-lang/10-dataStructure/index.llms.md +264 -0
  281. package/docs/API/10-lang/10-dataStructure/index.md +3 -0
  282. package/docs/API/10-lang/10-either/10-asyncGroup.ts +44 -0
  283. package/docs/API/10-lang/10-either/10-asyncSafeCallback.ts +23 -0
  284. package/docs/API/10-lang/10-either/10-error.ts +12 -0
  285. package/docs/API/10-lang/10-either/10-expect.ts +13 -0
  286. package/docs/API/10-lang/10-either/10-fail.ts +12 -0
  287. package/docs/API/10-lang/10-either/10-forwardAssertsSelection.ts +28 -0
  288. package/docs/API/10-lang/10-either/10-group.ts +58 -0
  289. package/docs/API/10-lang/10-either/10-hasInformation.ts +24 -0
  290. package/docs/API/10-lang/10-either/10-isLeft.ts +16 -0
  291. package/docs/API/10-lang/10-either/10-isRight.ts +16 -0
  292. package/docs/API/10-lang/10-either/10-isSelected.ts +29 -0
  293. package/docs/API/10-lang/10-either/10-keepAsRightByInformation.ts +29 -0
  294. package/docs/API/10-lang/10-either/10-keepAsRightSelection.ts +23 -0
  295. package/docs/API/10-lang/10-either/10-left.ts +13 -0
  296. package/docs/API/10-lang/10-either/10-matchInformation.ts +26 -0
  297. package/docs/API/10-lang/10-either/10-matchInformationOtherwise.ts +27 -0
  298. package/docs/API/10-lang/10-either/10-none.ts +12 -0
  299. package/docs/API/10-lang/10-either/10-ok.ts +12 -0
  300. package/docs/API/10-lang/10-either/10-result.ts +18 -0
  301. package/docs/API/10-lang/10-either/10-rewriteInformation.ts +24 -0
  302. package/docs/API/10-lang/10-either/10-right.ts +13 -0
  303. package/docs/API/10-lang/10-either/10-rightAsyncPipe.ts +69 -0
  304. package/docs/API/10-lang/10-either/10-rightPipe.ts +72 -0
  305. package/docs/API/10-lang/10-either/10-safeCallback.ts +29 -0
  306. package/docs/API/10-lang/10-either/10-some.ts +12 -0
  307. package/docs/API/10-lang/10-either/10-success.ts +12 -0
  308. package/docs/API/10-lang/10-either/10-toMaybe.ts +53 -0
  309. package/docs/API/10-lang/10-either/10-unwrapByInformation.ts +20 -0
  310. package/docs/API/10-lang/10-either/10-unwrapByInformationOrThrow.ts +19 -0
  311. package/docs/API/10-lang/10-either/10-unwrapLeft.ts +14 -0
  312. package/docs/API/10-lang/10-either/10-unwrapLeftOrThrow.ts +17 -0
  313. package/docs/API/10-lang/10-either/10-unwrapOr.ts +17 -0
  314. package/docs/API/10-lang/10-either/10-unwrapOtherwise.ts +20 -0
  315. package/docs/API/10-lang/10-either/10-unwrapRight.ts +14 -0
  316. package/docs/API/10-lang/10-either/10-unwrapRightOrThrow.ts +17 -0
  317. package/docs/API/10-lang/10-either/10-unwrapSelection.ts +26 -0
  318. package/docs/API/10-lang/10-either/10-unwrapSelectionOrThrow.ts +19 -0
  319. package/docs/API/10-lang/10-either/10-whenHasInformation.ts +35 -0
  320. package/docs/API/10-lang/10-either/10-whenHasInformationOtherwise.ts +29 -0
  321. package/docs/API/10-lang/10-either/10-whenIsLeft.ts +20 -0
  322. package/docs/API/10-lang/10-either/10-whenIsLeftOtherwise.ts +27 -0
  323. package/docs/API/10-lang/10-either/10-whenIsRight.ts +20 -0
  324. package/docs/API/10-lang/10-either/10-whenIsRightOtherwise.ts +26 -0
  325. package/docs/API/10-lang/10-either/10-whenIsSelected.ts +33 -0
  326. package/docs/API/10-lang/10-either/10-whenIsSelectedOtherwise.ts +35 -0
  327. package/docs/API/10-lang/10-either/index.llms.md +184 -0
  328. package/docs/API/10-lang/10-either/index.md +3 -0
  329. package/docs/API/10-lang/10-generator/10-asyncChunk.ts +55 -0
  330. package/docs/API/10-lang/10-generator/10-asyncConcat.ts +46 -0
  331. package/docs/API/10-lang/10-generator/10-asyncFilter.ts +41 -0
  332. package/docs/API/10-lang/10-generator/10-asyncFlat.ts +37 -0
  333. package/docs/API/10-lang/10-generator/10-asyncGroup.ts +65 -0
  334. package/docs/API/10-lang/10-generator/10-asyncLoop.ts +59 -0
  335. package/docs/API/10-lang/10-generator/10-asyncMap.ts +48 -0
  336. package/docs/API/10-lang/10-generator/10-asyncReduce.ts +63 -0
  337. package/docs/API/10-lang/10-generator/10-chunk.ts +44 -0
  338. package/docs/API/10-lang/10-generator/10-concat.ts +37 -0
  339. package/docs/API/10-lang/10-generator/10-createExternalAsyncGenerator.ts +29 -0
  340. package/docs/API/10-lang/10-generator/10-execute.ts +44 -0
  341. package/docs/API/10-lang/10-generator/10-filter.ts +35 -0
  342. package/docs/API/10-lang/10-generator/10-flat.ts +25 -0
  343. package/docs/API/10-lang/10-generator/10-group.ts +44 -0
  344. package/docs/API/10-lang/10-generator/10-groupOutput.ts +48 -0
  345. package/docs/API/10-lang/10-generator/10-loop.ts +55 -0
  346. package/docs/API/10-lang/10-generator/10-map.ts +35 -0
  347. package/docs/API/10-lang/10-generator/10-reduce.ts +51 -0
  348. package/docs/API/10-lang/10-generator/10-reduceFrom.ts +30 -0
  349. package/docs/API/10-lang/10-generator/index.llms.md +84 -0
  350. package/docs/API/10-lang/10-generator/index.md +3 -0
  351. package/docs/API/10-lang/index.md +3 -0
  352. package/docs/API/index.md +3 -0
  353. package/docs/API.llms.md +31 -0
  354. package/docs/concepts/01-fundamental/01-constraint/01-use.ts +22 -0
  355. package/docs/concepts/01-fundamental/01-constraint/10-built-in-constraint.ts +37 -0
  356. package/docs/concepts/01-fundamental/01-constraint/20-manipulation.ts +38 -0
  357. package/docs/concepts/01-fundamental/01-constraint/30-cast.ts +62 -0
  358. package/docs/concepts/01-fundamental/01-constraint/40-custom-constraint.ts +45 -0
  359. package/docs/concepts/01-fundamental/01-constraint/index.md +3 -0
  360. package/docs/concepts/01-fundamental/02-currying/01-use.ts +33 -0
  361. package/docs/concepts/01-fundamental/02-currying/10-built-in-function.ts +178 -0
  362. package/docs/concepts/01-fundamental/02-currying/20-inner-pipe.ts +39 -0
  363. package/docs/concepts/01-fundamental/02-currying/30-async-pipe.ts +42 -0
  364. package/docs/concepts/01-fundamental/02-currying/index.md +3 -0
  365. package/docs/concepts/01-fundamental/03-either/01-use.ts +21 -0
  366. package/docs/concepts/01-fundamental/03-either/10-discrimination.ts +79 -0
  367. package/docs/concepts/01-fundamental/03-either/20-exhaustive-handling.ts +73 -0
  368. package/docs/concepts/01-fundamental/03-either/30-composition.ts +72 -0
  369. package/docs/concepts/01-fundamental/03-either/40-result-adaptation.ts +40 -0
  370. package/docs/concepts/01-fundamental/03-either/50-external-results.ts +59 -0
  371. package/docs/concepts/01-fundamental/03-either/60-contextual-state.ts +40 -0
  372. package/docs/concepts/01-fundamental/03-either/index.md +3 -0
  373. package/docs/concepts/01-fundamental/04-data-structure/01-use.ts +22 -0
  374. package/docs/concepts/01-fundamental/04-data-structure/10-structure.ts +193 -0
  375. package/docs/concepts/01-fundamental/04-data-structure/20-constraint.ts +78 -0
  376. package/docs/concepts/01-fundamental/04-data-structure/30-validation.ts +100 -0
  377. package/docs/concepts/01-fundamental/04-data-structure/40-codecs.ts +151 -0
  378. package/docs/concepts/01-fundamental/04-data-structure/50-recursive.ts +48 -0
  379. package/docs/concepts/01-fundamental/04-data-structure/60-interpret-error.ts +123 -0
  380. package/docs/concepts/01-fundamental/04-data-structure/index.md +3 -0
  381. package/docs/concepts/01-fundamental/05-chrono/01-use.ts +14 -0
  382. package/docs/concepts/01-fundamental/05-chrono/10-creation.ts +59 -0
  383. package/docs/concepts/01-fundamental/05-chrono/20-manipulation.ts +94 -0
  384. package/docs/concepts/01-fundamental/05-chrono/30-serialized.ts +73 -0
  385. package/docs/concepts/01-fundamental/05-chrono/40-timezone.ts +81 -0
  386. package/docs/concepts/01-fundamental/05-chrono/index.md +3 -0
  387. package/docs/concepts/01-fundamental/06-modeling/10-new-type.ts +42 -0
  388. package/docs/concepts/01-fundamental/06-modeling/20-entity.ts +204 -0
  389. package/docs/concepts/01-fundamental/06-modeling/30-tagged-object.ts +181 -0
  390. package/docs/concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts +275 -0
  391. package/docs/concepts/01-fundamental/06-modeling/50-evidence.ts +94 -0
  392. package/docs/concepts/01-fundamental/06-modeling/60-signed-function.ts +26 -0
  393. package/docs/concepts/01-fundamental/06-modeling/index.md +3 -0
  394. package/docs/concepts/01-fundamental/07-discrimination/10-entity.ts +104 -0
  395. package/docs/concepts/01-fundamental/07-discrimination/20-fact.ts +142 -0
  396. package/docs/concepts/01-fundamental/07-discrimination/30-tagged-object.ts +105 -0
  397. package/docs/concepts/01-fundamental/07-discrimination/40-error.ts +57 -0
  398. package/docs/concepts/01-fundamental/07-discrimination/50-literal.ts +87 -0
  399. package/docs/concepts/01-fundamental/07-discrimination/60-shape.ts +152 -0
  400. package/docs/concepts/01-fundamental/07-discrimination/70-predicate.ts +89 -0
  401. package/docs/concepts/01-fundamental/07-discrimination/index.md +3 -0
  402. package/docs/concepts/01-fundamental/index.md +1 -0
  403. package/docs/concepts/02-server/10-file/10-manipulation.ts +40 -0
  404. package/docs/concepts/02-server/10-file/20-path.ts +56 -0
  405. package/docs/concepts/02-server/10-file/index.md +3 -0
  406. package/docs/concepts/02-server/20-http/10-init.ts +31 -0
  407. package/docs/concepts/02-server/20-http/20-route.ts +174 -0
  408. package/docs/concepts/02-server/20-http/30-routine.ts +195 -0
  409. package/docs/concepts/02-server/20-http/40-jwt.ts +137 -0
  410. package/docs/concepts/02-server/20-http/50-codegen.ts +29 -0
  411. package/docs/concepts/02-server/20-http/index.md +3 -0
  412. package/docs/concepts/02-server/30-environment/10-platform.ts +38 -0
  413. package/docs/concepts/02-server/30-environment/20-variable.ts +41 -0
  414. package/docs/concepts/02-server/30-environment/index.md +3 -0
  415. package/docs/concepts/02-server/40-command/10-use.ts +112 -0
  416. package/docs/concepts/02-server/40-command/20-sub-command.ts +48 -0
  417. package/docs/concepts/02-server/40-command/index.md +3 -0
  418. package/docs/concepts/02-server/index.md +1 -0
  419. package/docs/concepts/03-client/10-http/10-init.ts +64 -0
  420. package/docs/concepts/03-client/10-http/20-request.ts +244 -0
  421. package/docs/concepts/03-client/10-http/30-hook.ts +139 -0
  422. package/docs/concepts/03-client/10-http/index.md +3 -0
  423. package/docs/concepts/03-client/20-form/10-init.ts +95 -0
  424. package/docs/concepts/03-client/20-form/20-input.ts +96 -0
  425. package/docs/concepts/03-client/20-form/30-layout.ts +160 -0
  426. package/docs/concepts/03-client/20-form/40-template.ts +89 -0
  427. package/docs/concepts/03-client/20-form/index.md +3 -0
  428. package/docs/concepts/03-client/index.md +1 -0
  429. package/docs/concepts/04-tests/01-unit/10-either.ts +136 -0
  430. package/docs/concepts/04-tests/01-unit/20-server-mocking.ts +53 -0
  431. package/docs/concepts/04-tests/01-unit/index.md +3 -0
  432. package/docs/concepts/04-tests/02-e2e/10-init.ts +80 -0
  433. package/docs/concepts/04-tests/02-e2e/20-architecture.ts +76 -0
  434. package/docs/concepts/04-tests/02-e2e/30-testing.ts +90 -0
  435. package/docs/concepts/04-tests/02-e2e/index.md +3 -0
  436. package/docs/concepts/04-tests/index.md +1 -0
  437. package/docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md +41 -0
  438. package/docs/concepts/05-type-driven-design/01-architecture/index.md +3 -0
  439. package/docs/concepts/05-type-driven-design/02-domains/10-entities.md +58 -0
  440. package/docs/concepts/05-type-driven-design/02-domains/20-aggregates.md +49 -0
  441. package/docs/concepts/05-type-driven-design/02-domains/30-repositories.md +41 -0
  442. package/docs/concepts/05-type-driven-design/02-domains/index.md +3 -0
  443. package/docs/concepts/05-type-driven-design/03-applications/10-use-case.md +69 -0
  444. package/docs/concepts/05-type-driven-design/03-applications/index.md +3 -0
  445. package/docs/concepts/05-type-driven-design/04-infrastructure/10-implementation.md +56 -0
  446. package/docs/concepts/05-type-driven-design/04-infrastructure/index.md +3 -0
  447. package/docs/concepts/05-type-driven-design/fixtures/business/applications/index.ts +2 -0
  448. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/book.ts +10 -0
  449. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/client.ts +10 -0
  450. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/email.ts +7 -0
  451. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/index.ts +3 -0
  452. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientGiveBackBook.ts +27 -0
  453. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientRentBook.ts +30 -0
  454. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/createBook.ts +32 -0
  455. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/index.ts +2 -0
  456. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientGiveBackBook.ts +15 -0
  457. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientRentBook.ts +16 -0
  458. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/createBook.ts +21 -0
  459. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/index.ts +3 -0
  460. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/create.ts +34 -0
  461. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/index.ts +3 -0
  462. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/rental.ts +31 -0
  463. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/returnBook.ts +30 -0
  464. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/index.ts +87 -0
  465. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/giveBackBook.ts +33 -0
  466. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/index.ts +2 -0
  467. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/rentBook.ts +32 -0
  468. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/index.ts +82 -0
  469. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/index.ts +2 -0
  470. package/docs/concepts/05-type-driven-design/fixtures/business/domains/index.ts +3 -0
  471. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/book.ts +16 -0
  472. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/client.ts +7 -0
  473. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/email.ts +12 -0
  474. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/index.ts +3 -0
  475. package/docs/concepts/05-type-driven-design/fixtures/business/index.ts +2 -0
  476. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/clientRentBook.ts +62 -0
  477. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/index.ts +11 -0
  478. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/bookExist.ts +19 -0
  479. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/clientExist.ts +19 -0
  480. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/index.ts +2 -0
  481. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/main.ts +19 -0
  482. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientGiveBackBook.ts +37 -0
  483. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientRentBook.ts +50 -0
  484. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/index.ts +2 -0
  485. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/book.ts +25 -0
  486. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/client.ts +7 -0
  487. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/email.ts +10 -0
  488. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/index.ts +3 -0
  489. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/useCases/index.ts +12 -0
  490. package/docs/concepts/05-type-driven-design/index.md +3 -0
  491. package/docs/concepts.llms.md +475 -0
  492. package/instructions/coding-conventions.md +8 -0
  493. package/package.json +96 -3
  494. package/skills/command/SKILL.md +63 -0
  495. package/skills/command/references/examples/cli.ts +22 -0
  496. package/skills/command/references/examples/options-only.ts +27 -0
  497. package/skills/command/references/examples/preview-command.ts +57 -0
  498. package/skills/command/references/execution.md +31 -0
  499. package/skills/command/references/inputs.md +27 -0
  500. package/skills/fundamental/SKILL.md +80 -0
  501. package/skills/fundamental/references/composition.md +35 -0
  502. package/skills/fundamental/references/constraints-and-validation.md +61 -0
  503. package/skills/fundamental/references/examples/async-composition.ts +15 -0
  504. package/skills/fundamental/references/examples/cast.ts +18 -0
  505. package/skills/fundamental/references/examples/composition.ts +40 -0
  506. package/skills/fundamental/references/examples/environment-initialization.ts +19 -0
  507. package/skills/fundamental/references/examples/error-propagation.ts +24 -0
  508. package/skills/fundamental/references/examples/generic-inference.ts +31 -0
  509. package/skills/fundamental/references/examples/guaranteed-array-access.ts +31 -0
  510. package/skills/fundamental/references/examples/independent-inputs.ts +18 -0
  511. package/skills/fundamental/references/examples/infer.ts +21 -0
  512. package/skills/fundamental/references/examples/input-validation.ts +37 -0
  513. package/skills/fundamental/references/examples/safe-declarations.ts +25 -0
  514. package/skills/fundamental/references/results-and-errors.md +59 -0
  515. package/skills/http-client/SKILL.md +50 -0
  516. package/skills/http-client/references/configuration.md +9 -0
  517. package/skills/http-client/references/examples/client-expectations.ts +84 -0
  518. package/skills/http-client/references/examples/client-streams.ts +74 -0
  519. package/skills/http-client/references/examples/external-client.ts +78 -0
  520. package/skills/http-client/references/hooks.md +7 -0
  521. package/skills/http-client/references/responses.md +39 -0
  522. package/skills/http-client/references/streams.md +10 -0
  523. package/skills/http-server/SKILL.md +66 -0
  524. package/skills/http-server/references/code-generation.md +31 -0
  525. package/skills/http-server/references/examples/authentication.ts +42 -0
  526. package/skills/http-server/references/examples/contracts.ts +19 -0
  527. package/skills/http-server/references/examples/generate-sdk.ts +36 -0
  528. package/skills/http-server/references/examples/initialize.ts +29 -0
  529. package/skills/http-server/references/examples/minimal-route.ts +18 -0
  530. package/skills/http-server/references/examples/protected-route.ts +31 -0
  531. package/skills/http-server/references/examples/rename-user-route.ts +54 -0
  532. package/skills/http-server/references/examples/user-checker.ts +26 -0
  533. package/skills/http-server/references/examples/user-route.ts +38 -0
  534. package/skills/http-server/references/initialization.md +33 -0
  535. package/skills/http-server/references/reusable-flows.md +40 -0
  536. package/skills/http-server/references/routes-and-floor.md +38 -0
  537. package/skills/modeling/SKILL.md +76 -0
  538. package/skills/modeling/references/domain.md +33 -0
  539. package/skills/modeling/references/orchestration.md +36 -0
  540. package/skills/server/SKILL.md +55 -0
  541. package/skills/server/references/environment.md +30 -0
  542. package/skills/server/references/examples/environment.ts +41 -0
  543. package/skills/server/references/examples/file-structure.ts +26 -0
  544. package/skills/server/references/examples/files.ts +52 -0
  545. package/skills/server/references/files.md +38 -0
  546. package/skills/server/references/structures.md +15 -0
  547. package/skills/test/SKILL.md +70 -0
  548. package/skills/test/references/examples/results.ts +95 -0
  549. package/skills/test/references/examples/server.ts +59 -0
  550. package/skills/test/references/results.md +21 -0
  551. package/skills/test/references/server.md +17 -0
@@ -0,0 +1,475 @@
1
+ # Fondamentaux.
2
+
3
+ ## Contraintes de typage
4
+
5
+ Garanties sur les valeurs : acquisition, composition, propagation, compatibilité statique et contraintes personnalisées.
6
+
7
+ ### Acquisition des contraintes.
8
+
9
+ Vérification runtime et narrowing vers un type contraint.
10
+
11
+ ```ts
12
+ import * as DNumber from "@duplojs/lang/number";
13
+
14
+ // Une contrainte existe uniquement dans le typage : elle ne modifie ni ne valide la valeur.
15
+ // L’intersection compose ici deux garanties établies par les predicates.
16
+ type Age = number & DNumber.Integer & DNumber.Positive;
17
+
18
+ // @ts-expect-error Le littéral seul ne porte pas les contraintes attendues.
19
+ const age: Age = 12;
20
+
21
+ // Chaque vérification réussie enrichit le type sans changer la valeur runtime.
22
+ const maybeAge = 12;
23
+ if (
24
+ DNumber.isInteger(maybeAge)
25
+ && DNumber.isPositive(maybeAge)
26
+ ) {
27
+ const age: Age = maybeAge;
28
+ }
29
+ ```
30
+
31
+ ### [Composition des contraintes fournies.](concepts/01-fundamental/01-constraint/10-built-in-constraint.ts)
32
+
33
+ Réutilisation et composition des contraintes disponibles dans les domaines.
34
+
35
+ ### [Manipulation des valeurs contraintes.](concepts/01-fundamental/01-constraint/20-manipulation.ts)
36
+
37
+ Exploitation des contraintes par les fonctions DuploJS pour simplifier la manipulation des valeurs.
38
+
39
+ ### [Compatibilité statique des contraintes.](concepts/01-fundamental/01-constraint/30-cast.ts)
40
+
41
+ Cast par implication, valeurs littérales et inférence en contexte générique.
42
+
43
+ ### [Contraintes personnalisées.](concepts/01-fundamental/01-constraint/40-custom-constraint.ts)
44
+
45
+ Déclaration, predicate de validation et extension des règles de cast.
46
+
47
+ ## Currification
48
+
49
+ Composition des transformations de données avec les fonctions DuploJS : pipes, callbacks et traitements asynchrones.
50
+
51
+ ### Currification et composition avec pipe.
52
+
53
+ Configurer les opérations avant de recevoir la donnée et enchaîner ses transformations.
54
+
55
+ ```ts
56
+ import * as DCommon from "@duplojs/lang/common";
57
+ import * as DArray from "@duplojs/lang/array";
58
+ import * as DString from "@duplojs/lang/string";
59
+
60
+ // La forme curifiée reçoit les paramètres, puis la donnée transmise par pipe.
61
+ // Si la fonction retournée ne déclare pas ses propres génériques, ses types sont
62
+ // fixés dès l'appel de configuration, même si la surcharge extérieure est générique.
63
+ // Écrire alors l'appel curifié directement comme étape de pipe ou asyncPipe pour
64
+ // fournir le contexte d'inférence attendu. Passer à un pipe une variable contenant
65
+ // une fonction déjà préparée ne déplace pas sa configuration dans ce contexte.
66
+ // Ne pas forcer cette préparation avec des génériques explicites, annotations ou casts.
67
+ // Formater chaque pipe sur plusieurs lignes, un argument par ligne et la fermeture
68
+ // sur sa propre ligne, même avec seulement une donnée et une étape.
69
+ // Privilégier pipe dès qu’une donnée subit plusieurs transformations,
70
+ // ou si le traitement est susceptible d’en accueillir d’autres.
71
+ // Utiliser en priorité les fonctions fournies par l’écosystème.
72
+ const normalizedTags = DCommon.pipe(
73
+ " TypeScript, DuploJS, Functional " as const,
74
+ // Configure le séparateur ; pipe fournit ensuite la chaîne.
75
+ DString.split(","),
76
+ // Configure la transformation ; pipe fournit le tableau.
77
+ DArray.map(DString.trim),
78
+ DArray.filter(DString.isNotEmpty),
79
+ DArray.map(DString.toLowerCase),
80
+ );
81
+ // Résultat : ["typescript", "duplojs", "functional"].
82
+ // Chaque étape reçoit la sortie précédente ; les types suivent ces transformations.
83
+ // On peut ajouter, retirer ou réordonner les étapes sans restructurer le traitement.
84
+ ```
85
+
86
+ ### [Réutilisation des fonctions de l’écosystème dans les pipes.](concepts/01-fundamental/02-currying/10-built-in-function.ts)
87
+
88
+ Composer les opérations fournies, sous forme curifiée ou directement compatible avec pipe.
89
+
90
+ ### [Composition dans une callback.](concepts/01-fundamental/02-currying/20-inner-pipe.ts)
91
+
92
+ Enchaîner des transformations lorsque la fonction appelante attend une fonction.
93
+
94
+ ### [Composition de traitements asynchrones.](concepts/01-fundamental/02-currying/30-async-pipe.ts)
95
+
96
+ Enchaîner des étapes synchrones et asynchrones dans un pipe ou une callback.
97
+
98
+ ## Either
99
+
100
+ Résultats et états contextualisés : représentation, discrimination, traitement exhaustif, propagation des échecs et adaptation des contrats.
101
+
102
+ ### Représentation des résultats avec Either.
103
+
104
+ Statuts Right et Left, information contextuelle et valeur associée.
105
+
106
+ ```ts
107
+ import * as DEither from "@duplojs/lang/either";
108
+
109
+ // Un résultat porte un statut, une information qui identifie le cas et une valeur.
110
+ const result = DEither.right("user-found", { name: "Alice" });
111
+ const missing = DEither.left("user-not-found");
112
+
113
+ // Les variantes fournies reposent sur Right (Success, Some, Result, Ok) ou Left
114
+ // (Fail, Error, None).
115
+ // Result décrit un état contextualisé sans décider s’il constitue un succès ou un échec.
116
+ // Un contrat exprime les résultats possibles par une union, avec des informations
117
+ // personnalisées ou des variantes fournies.
118
+ // Dès qu'une branche d'une fonction renvoie un Right ou un Left, toutes ses
119
+ // branches renvoient un Either. Envelopper les valeurs de réussite dans un Right,
120
+ // y compris avec ok() pour une réussite sans valeur ; ne pas mélanger des Either
121
+ // et des valeurs brutes dans le contrat de retour.
122
+ type FindUserResult = DEither.Right<"user-found", { name: "Alice" }> | DEither.Left<"user-not-found", undefined>;
123
+ ```
124
+
125
+ ### [Discrimination et extraction des résultats.](concepts/01-fundamental/03-either/10-discrimination.ts)
126
+
127
+ Choisir une branche par statut ou information, extraire sa valeur et traiter les autres cas.
128
+
129
+ ### [Décisions exhaustives sur les résultats.](concepts/01-fundamental/03-either/20-exhaustive-handling.ts)
130
+
131
+ Sélection et traitement de chaque variante pour détecter les évolutions du contrat.
132
+
133
+ ### [Composition avec propagation des échecs.](concepts/01-fundamental/03-either/30-composition.ts)
134
+
135
+ Enchaîner ou regrouper des opérations en arrêtant le traitement au premier Left.
136
+
137
+ ### [Adaptation des résultats au contexte.](concepts/01-fundamental/03-either/40-result-adaptation.ts)
138
+
139
+ Reclasser les statuts et renommer les informations en conservant les valeurs.
140
+
141
+ ### [Conversion des absences et exceptions en résultats.](concepts/01-fundamental/03-either/50-external-results.ts)
142
+
143
+ Distinguer les refus prévisibles des défaillances d'environnement et adapter les absences ou exceptions en résultats.
144
+
145
+ ### [États contextualisés avec Result.](concepts/01-fundamental/03-either/60-contextual-state.ts)
146
+
147
+ Décrire et discriminer des états sans leur attribuer un sens de succès ou d’échec.
148
+
149
+ ## DataStructure
150
+
151
+ Contrats de données partagés entre TypeScript et runtime : composition, validation, contraintes, représentations, récursivité et erreurs.
152
+
153
+ ### Contrats de données avec DataStructure.
154
+
155
+ Décrire les données attendues et obtenir des valeurs typées après validation.
156
+
157
+ ```ts
158
+ import * as DDataStructure from "@duplojs/lang/dataStructure";
159
+ import * as DEither from "@duplojs/lang/either";
160
+
161
+ // Une structure porte le même contrat dans TypeScript et au runtime.
162
+ // L’utiliser aux frontières du logiciel pour vérifier les données encore inconnues.
163
+ const userStructure = DDataStructure.object({
164
+ name: DDataStructure.string(),
165
+ email: DDataStructure.string([DDataStructure.email()]),
166
+ });
167
+ type User = DDataStructure.StructureValue<typeof userStructure>;
168
+
169
+ declare const input: unknown;
170
+ const result = userStructure.check(input);
171
+ if (DEither.isRight(result)) {
172
+ const user: User = DEither.unwrapRight(result);
173
+ }
174
+ // Un Left conserve une erreur structurée lorsque la validation échoue.
175
+ ```
176
+
177
+ ### [Composition des contrats de données.](concepts/01-fundamental/04-data-structure/10-structure.ts)
178
+
179
+ Construire et réutiliser des structures pour décrire des données simples ou composées.
180
+
181
+ ### [Contraintes de validation dans les structures.](concepts/01-fundamental/04-data-structure/20-constraint.ts)
182
+
183
+ Ajouter et cumuler des contraintes compatibles, fournies ou personnalisées.
184
+
185
+ ### [Validation des données entrantes.](concepts/01-fundamental/04-data-structure/30-validation.ts)
186
+
187
+ Vérification, conversion et narrowing aux frontières du logiciel, en synchrone ou asynchrone.
188
+
189
+ ### [Changement de représentation avec des codecs.](concepts/01-fundamental/04-data-structure/40-codecs.ts)
190
+
191
+ Encoder et décoder les données avec un même contrat, selon leur type fondamental.
192
+
193
+ ### [Contrats de données récursifs.](concepts/01-fundamental/04-data-structure/50-recursive.ts)
194
+
195
+ Références différées et cohérence entre un type déclaré et sa structure runtime.
196
+
197
+ ### [Interprétation des erreurs de validation et de conversion.](concepts/01-fundamental/04-data-structure/60-interpret-error.ts)
198
+
199
+ Localiser les données invalides et adapter les messages au contexte ou à la langue.
200
+
201
+ ## Chrono
202
+
203
+ Représentation des instants et durées : création, calculs, comparaison, sérialisation et fuseaux horaires.
204
+
205
+ ### Représentation des instants et des durées.
206
+
207
+ TheDate et TheTime pour modéliser le temps avec des valeurs immuables.
208
+
209
+ ```ts
210
+ import * as DChrono from "@duplojs/lang/chrono";
211
+
212
+ // TheDate représente un instant absolu ; TheTime une durée ou une quantité de temps.
213
+ // Privilégier ces types aux Date et number natifs dans le domaine pour rendre ce sens explicite.
214
+ const instant = DChrono.createDate("2026-09-30");
215
+ const duration = DChrono.createTime(2, "hour");
216
+
217
+ // La transformation produit un nouvel instant ; la valeur initiale reste inchangée.
218
+ const later = DChrono.addTime(instant, duration);
219
+ ```
220
+
221
+ ### [Création des instants et des durées.](concepts/01-fundamental/05-chrono/10-creation.ts)
222
+
223
+ Valeurs connues statiquement ou reçues au runtime, et gestion des entrées invalides.
224
+
225
+ ### [Calculs et comparaisons temporels.](concepts/01-fundamental/05-chrono/20-manipulation.ts)
226
+
227
+ Transformer, comparer et décomposer des instants ou durées avec les fonctions Chrono.
228
+
229
+ ### [Transport et reconstruction des valeurs temporelles.](concepts/01-fundamental/05-chrono/30-serialized.ts)
230
+
231
+ Sérialiser, reconnaître et reconstruire les instants et durées en conservant leur valeur.
232
+
233
+ ### [Interprétation et affichage dans un fuseau horaire.](concepts/01-fundamental/05-chrono/40-timezone.ts)
234
+
235
+ Interpréter une heure locale et lire ou présenter un instant dans le fuseau demandé.
236
+
237
+ ## Modélisation
238
+
239
+ Identités métier, modèles de données, états et transitions, preuves de passage et identité des opérations dans les contrats.
240
+
241
+ ### [Identité et contraintes des types métier.](concepts/01-fundamental/06-modeling/10-new-type.ts)
242
+
243
+ Distinguer des valeurs de même représentation par des NewType propres à leur rôle métier.
244
+
245
+ ### [Entités métier et hydratation.](concepts/01-fundamental/06-modeling/20-entity.ts)
246
+
247
+ Déclarer les propriétés métier, hydrater les données externes et mettre à jour les valeurs typées.
248
+
249
+ ### [Objets taggés et unions discriminées.](concepts/01-fundamental/06-modeling/30-tagged-object.ts)
250
+
251
+ Identité transportable, distinction des formes d’un objet et hydratation des données brutes.
252
+
253
+ ### [Cycle de vie des entités.](concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts)
254
+
255
+ États, préconditions et transitions métier représentés par des Flag et des Fact.
256
+
257
+ ### [Preuves de passage par une opération.](concepts/01-fundamental/06-modeling/50-evidence.ts)
258
+
259
+ Exiger dans les types qu’une valeur soit passée par un traitement préalable.
260
+
261
+ ### [Identité des fonctions dans les dépendances.](concepts/01-fundamental/06-modeling/60-signed-function.ts)
262
+
263
+ Exiger une fonction identifiée au-delà de sa seule signature TypeScript.
264
+
265
+ ## Discrimination
266
+
267
+ Sélection et affinement des types dans les unions : identité, valeurs littérales, forme ou prédicats, traitement exhaustif ou partiel.
268
+
269
+ ### [Discrimination des entités par identité.](concepts/01-fundamental/07-discrimination/10-entity.ts)
270
+
271
+ Sélection exhaustive ou partielle selon le nom métier, avec typage précis des branches.
272
+
273
+ ### [Discrimination selon le fait courant.](concepts/01-fundamental/07-discrimination/20-fact.ts)
274
+
275
+ Choisir une branche selon la Fact portée par une valeur et accéder aux données du fait.
276
+
277
+ ### [Discrimination des objets par tag.](concepts/01-fundamental/07-discrimination/30-tagged-object.ts)
278
+
279
+ Identifier la forme d’un objet par son tag et traiter tout ou partie de l’union.
280
+
281
+ ### [Discrimination des erreurs par identifiant.](concepts/01-fundamental/07-discrimination/40-error.ts)
282
+
283
+ Sélection exhaustive ou partielle des erreurs DuploJS, avec typage précis des branches et des cas restants.
284
+
285
+ ### [Discrimination des valeurs littérales.](concepts/01-fundamental/07-discrimination/50-literal.ts)
286
+
287
+ Traitement exhaustif ou partiel d’une union selon la valeur, avec branches typées.
288
+
289
+ ### [Discrimination par la forme des données.](concepts/01-fundamental/07-discrimination/60-shape.ts)
290
+
291
+ Sélectionner les variantes sans identité explicite par des patterns, y compris imbriqués.
292
+
293
+ ### [Discrimination par prédicats et élimination.](concepts/01-fundamental/07-discrimination/70-predicate.ts)
294
+
295
+ Affiner les branches et réduire les cas restants, avec sélection positive ou inverse.
296
+
297
+ # Serveur
298
+
299
+ ## Manipuler des fichiers
300
+
301
+ Accès cross-platform au système de fichiers : chemins typés avec `Path`, opérations sur fichiers/dossiers/liens et erreurs représentées par `Either`.
302
+
303
+ ### [Manipuler le système de fichiers](concepts/02-server/10-file/10-manipulation.ts)
304
+
305
+ Lecture, écriture et opérations de système de fichiers avec chemins typés et résultats `Either`.
306
+
307
+ ### [Chemins typés](concepts/02-server/10-file/20-path.ts)
308
+
309
+ Contraintes `Path`, `Absolute` et `Segment` pour valider, extraire et résoudre des chemins Unix.
310
+
311
+ ## HTTP
312
+
313
+ Interfaces HTTP côté serveur : réception et validation des requêtes, orchestration des traitements et contrats de réponse typés partageables avec les clients.
314
+
315
+ ### [Créer une application HTTP](concepts/02-server/20-http/10-init.ts)
316
+
317
+ Configuration d'un `Hub`, plugins et enregistrement des routes d'une application HTTP.
318
+
319
+ ### [Créer une route HTTP](concepts/02-server/20-http/20-route.ts)
320
+
321
+ Construction du flux d’une route : entrées validées, contexte de traitement et réponses contextualisées.
322
+
323
+ ### [Faire une routine de vérification](concepts/02-server/20-http/30-routine.ts)
324
+
325
+ Vérifications dans les flux HTTP, réutilisation des traitements et adaptation de leurs résultats au contexte.
326
+
327
+ ### [Définir une politique de gestion de tokens](concepts/02-server/20-http/40-jwt.ts)
328
+
329
+ Déclaration d'une politique unique pour créer et vérifier une famille de tokens.
330
+
331
+ ### [Comment partager des ressources](concepts/02-server/20-http/50-codegen.ts)
332
+
333
+ Génération du typage des routes et des `DataStructure` pour partager un contrat statique.
334
+
335
+ ## Environnement
336
+
337
+ Exploitation des capacités de l’environnement serveur et adaptation aux API des différentes plateformes d’exécution.
338
+
339
+ ### [Capacités de plateforme](concepts/02-server/30-environment/10-platform.ts)
340
+
341
+ Utilisation des abstractions communes et des connecteurs pour garder le code
342
+ applicatif indépendant du runtime.
343
+
344
+ ### [Manipuler les variables d'environnement](concepts/02-server/30-environment/20-variable.ts)
345
+
346
+ Chargement de sources d'environnement, validation par `DataStructure` et
347
+ obtention d'une configuration typée.
348
+
349
+ ## Créer des commandes
350
+
351
+ Création d’interfaces en ligne de commande (CLI) pour les applications serveur.
352
+
353
+ ### [Définir une commande](concepts/02-server/40-command/10-use.ts)
354
+
355
+ Définition des entrées et du traitement d’une commande CLI.
356
+
357
+ ### [Créer des sous-commandes](concepts/02-server/40-command/20-sub-command.ts)
358
+
359
+ Composition de commandes sous forme d'arbre pour router l'exécution vers
360
+ une branche spécialisée.
361
+
362
+ # Client
363
+
364
+ ## Client HTTP
365
+
366
+ Communication typée avec des API HTTP.
367
+
368
+ ### [Initialiser un client HTTP](concepts/03-client/10-http/10-init.ts)
369
+
370
+ Création d'un client à partir du contrat statique des routes, configuration
371
+ globale et conservation du typage des requêtes et réponses exposées par le
372
+ serveur.
373
+
374
+ ### [Effectuer une requête HTTP](concepts/03-client/10-http/20-request.ts)
375
+
376
+ Envoi de données et traitement des réponses typées d’une API HTTP.
377
+
378
+ ### [Utiliser les hooks du client HTTP](concepts/03-client/10-http/30-hook.ts)
379
+
380
+ Comportements transversaux et instrumentation du cycle des échanges HTTP.
381
+
382
+ ## Form
383
+
384
+ Création et gestion de formulaires typés pour les interfaces utilisateur.
385
+
386
+ ### [Créer un formulaire](concepts/03-client/20-form/10-init.ts)
387
+
388
+ Initialisation et cycle de vie d’un formulaire Vue typé.
389
+
390
+ ### [Inputs de formulaire réutilisables](concepts/03-client/20-form/20-input.ts)
391
+
392
+ Création, intégration et validation des champs de saisie d’un formulaire Vue.
393
+
394
+ ### [Composer avec les layouts](concepts/03-client/20-form/30-layout.ts)
395
+
396
+ Composition de la structure des données et des comportements d’un formulaire.
397
+
398
+ ### [Personnaliser les templates](concepts/03-client/20-form/40-template.ts)
399
+
400
+ Personnalisation globale ou locale du rendu Vue des formulaires et de leurs champs.
401
+
402
+ # Tests
403
+
404
+ ## Tests unitaires
405
+
406
+ Vérification du comportement et du typage des unités de code.
407
+
408
+ ### [Tester un résultat Either](concepts/04-tests/01-unit/10-either.ts)
409
+
410
+ Vérification des branches, des valeurs et du typage d’un contrat Either.
411
+
412
+ ### [Remplacer les implémentations serveur](concepts/04-tests/01-unit/20-server-mocking.ts)
413
+
414
+ Contrôle de l'environnement et des fonctions serveur pour isoler les tests.
415
+
416
+ ## Tests E2E
417
+
418
+ Vérification des parcours utilisateur dans une application web.
419
+
420
+ ### [Initialiser le client E2E](concepts/04-tests/02-e2e/10-init.ts)
421
+
422
+ Configuration de l’environnement de test et intégration du site aux fixtures Playwright.
423
+
424
+ ### [Architecturer une suite E2E](concepts/04-tests/02-e2e/20-architecture.ts)
425
+
426
+ Organisation d’une suite E2E selon les pages et les composants du site testé.
427
+
428
+ ### [Ecrire un parcours de test](concepts/04-tests/02-e2e/30-testing.ts)
429
+
430
+ Scénarios utilisateur, interactions et vérifications avec les objets du site.
431
+
432
+ # Type Driven Design
433
+
434
+ Architecture en couches, modélisation du domaine et orchestration applicative pour faire vivre les cycles de vie métier.
435
+
436
+ ## Architecture
437
+
438
+ Responsabilités des couches, sens des dépendances, opérations autorisées aux frontières et exposition des résultats aux consommateurs.
439
+
440
+ ### [Frontières entre domaine, application et infrastructure](concepts/05-type-driven-design/01-architecture/10-boundaries.md)
441
+
442
+ Déterminer les dépendances autorisées, les opérations utilisables depuis chaque couche et le traitement des données et erreurs aux frontières du système.
443
+
444
+ ## Domaines
445
+
446
+ Modélisation du métier et contrats de ses opérations : entités, invariants, transitions, agrégats et repositories.
447
+
448
+ ### [Conception des entités en Type-Driven Design](concepts/05-type-driven-design/02-domains/10-entities.md)
449
+
450
+ Organisation des modèles métier, de leurs invariants, qualifications et transitions dans le domaine.
451
+
452
+ ### [Conception des agrégats en Type-Driven Design](concepts/05-type-driven-design/02-domains/20-aggregates.md)
453
+
454
+ Contrats des transactions métier, préconditions et orchestration de faits réutilisables.
455
+
456
+ ### [Conception des repositories en Type-Driven Design](concepts/05-type-driven-design/02-domains/30-repositories.md)
457
+
458
+ Contrats des opérations nécessaires au métier dont l'implémentation technique reste extérieure au domaine.
459
+
460
+ ## Applications
461
+
462
+ Orchestration des agrégats, ports de capacités, injection des dépendances, effets et persistance.
463
+
464
+ ### [Conception des use cases en Type-Driven Design](concepts/05-type-driven-design/03-applications/10-use-case.md)
465
+
466
+ Orchestration applicative des agrégats, sélection et propagation des résultats Either, ports et injection avec Reader, résolution des effets et persistance.
467
+
468
+ ## Infrastructure
469
+
470
+ Assemblage concret de l'application : implémentation des ports, résolution des use cases et raccordement aux points d'entrée.
471
+
472
+ ### [Assembler l'application dans l'infrastructure](concepts/05-type-driven-design/04-infrastructure/10-implementation.md)
473
+
474
+ Fournir les dépendances concrètes de l'application et raccorder ses capacités aux points d'entrée du système.
475
+
@@ -0,0 +1,8 @@
1
+ ## Développement avec DuploJS
2
+
3
+ - Réutiliser les fonctions DuploJS avant d’écrire un utilitaire ou d’utiliser une API native ou tierce équivalente.
4
+ - Pour une recherche de concept ou un problème de composition, de typage ou d’erreur, consulter le [routeur des concepts]({{packagePath}}/docs/concepts.llms.md), puis uniquement les pages et exemples pertinents.
5
+ - Appliquer les contrats et patterns documentés, notamment pour les contraintes et les résultats `Either`. Ne pas inventer d’API ni contourner le typage pour résoudre un doute.
6
+ - Utiliser les skills DuploJS installés pour les procédures spécialisées liées à la tâche.
7
+
8
+ Le chemin du routeur est relatif au dossier de ce fichier ; résoudre ensuite chaque lien depuis le document qui le contient.
package/package.json CHANGED
@@ -1,6 +1,99 @@
1
1
  {
2
2
  "name": "@duplojs/agents-kit",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.0-beta.3",
4
+ "license": "MIT",
5
+ "author": {
6
+ "name": "DuploJS",
7
+ "url": "https://github.com/duplojs"
8
+ },
9
+ "description": "Shared skills and configuration for DuploJS packages.",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/duplojs/ecosystem.git",
13
+ "directory": "packages/agents-kit"
14
+ },
15
+ "bugs": {
16
+ "url": "https://github.com/duplojs/ecosystem/issues"
17
+ },
18
+ "bin": {
19
+ "duplojs-agents-kit": "./dist/bin/index.mjs"
20
+ },
21
+ "type": "module",
22
+ "types": "./dist/index.d.ts",
23
+ "sideEffects": false,
24
+ "exports": {
25
+ ".": {
26
+ "import": "./dist/index.mjs",
27
+ "require": "./dist/index.cjs",
28
+ "types": "./dist/index.d.ts"
29
+ },
30
+ "./docs/concepts.llms.md": "./docs/concepts.llms.md",
31
+ "./docs/API.llms.md": "./docs/API.llms.md",
32
+ "./docs/API/*/index.llms.md": "./docs/API/*/index.llms.md"
33
+ },
34
+ "dependencies": {
35
+ "@duplojs/lang": "0.1.0-beta.3",
36
+ "@duplojs/server": "0.1.0-beta.3"
37
+ },
38
+ "peerDependencies": {
39
+ "@duplojs/code-config": "0.1.0-beta.3",
40
+ "@duplojs/eslint": "0.1.0-beta.3",
41
+ "@duplojs/form": "0.1.0-beta.3",
42
+ "@duplojs/http": "0.1.0-beta.3",
43
+ "@duplojs/json-web-token": "0.1.0-beta.3",
44
+ "@duplojs/lang": "0.1.0-beta.3",
45
+ "@duplojs/playwright": "0.1.0-beta.3",
46
+ "@duplojs/server": "0.1.0-beta.3",
47
+ "@duplojs/tools": "0.1.0-beta.3"
48
+ },
49
+ "peerDependenciesMeta": {
50
+ "@duplojs/code-config": {
51
+ "optional": true
52
+ },
53
+ "@duplojs/eslint": {
54
+ "optional": true
55
+ },
56
+ "@duplojs/form": {
57
+ "optional": true
58
+ },
59
+ "@duplojs/http": {
60
+ "optional": true
61
+ },
62
+ "@duplojs/json-web-token": {
63
+ "optional": true
64
+ },
65
+ "@duplojs/playwright": {
66
+ "optional": true
67
+ },
68
+ "@duplojs/tools": {
69
+ "optional": true
70
+ }
71
+ },
72
+ "devDependencies": {
73
+ "@duplojs/code-config": "0.1.0-beta.3",
74
+ "@types/node": "24.13.3",
75
+ "@types/web": "0.0.358"
76
+ },
77
+ "files": [
78
+ "dist",
79
+ "docs",
80
+ "skills",
81
+ "instructions",
82
+ "README.md"
83
+ ],
84
+ "keywords": [
85
+ "duplojs",
86
+ "skills"
87
+ ],
88
+ "engines": {
89
+ "node": ">=24.18.0"
90
+ },
91
+ "scripts": {
92
+ "build": "./.commands/build.sh",
93
+ "llms": "tsx bin/index.ts",
94
+ "test:types": "./.commands/test-types.sh",
95
+ "test:types:target": "./.commands/test-types-target.sh",
96
+ "test:lint": "./.commands/test-lint.sh",
97
+ "test:lint:fix": "./.commands/test-lint.sh --fix"
98
+ }
6
99
  }
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: duplojs-command
3
+ description: "Créer, modifier ou corriger une interface en ligne de commande avec @duplojs/server/command : arguments et options typés, sous-commandes, aide et point d'entrée exécutable."
4
+ ---
5
+
6
+ # Commandes DuploJS
7
+
8
+ ## Trouver les concepts
9
+
10
+ Appliquer la démarche du skill et lire les ressources indiquées lorsque leur condition est rencontrée. Pour rechercher un concept ou un mécanisme non couvert, consulter `docs/concepts.llms.md` du package `@duplojs/agents-kit`.
11
+
12
+ Le setup indique ce chemin dans `AGENTS.md` ou `CLAUDE.md`, relativement à leur dossier. Les chemins `docs/` partent du package installé, même avec `--copy`. Les références du skill partent de son dossier ; les liens d'un document se résolvent depuis ce document.
13
+
14
+ Si le chemin du routeur manque, le retrouver depuis le projet consommateur :
15
+
16
+ ```sh
17
+ node --input-type=module -e 'import { fileURLToPath } from "node:url"; console.log(fileURLToPath(import.meta.resolve("@duplojs/agents-kit/docs/concepts.llms.md")))'
18
+ ```
19
+
20
+ ## Choisir la forme de la commande
21
+
22
+ Importer le domaine sous le namespace `DSCommand` depuis `@duplojs/server/command`, et les schémas sous `DDataStructure` depuis `@duplojs/lang/dataStructure`.
23
+
24
+ | Besoin | Construction |
25
+ | --- | --- |
26
+ | Exécuter une commande racine avec ses entrées | `DSCommand.exec` lit les arguments du processus et appelle le callback après validation. |
27
+ | Assembler plusieurs actions nommées | `DSCommand.create` définit les sous-commandes, placées dans les `subjects` du parent exécuté avec `exec`. |
28
+ | Lire uniquement les options d'un script | `DSCommand.execOptions` retourne le résultat du parsing ; le script décide ensuite de lancer le traitement. |
29
+
30
+ Identifier les entrées et leurs contraintes, déclarer leur contrat, puis écrire le callback avec les `args` et `options` inférés. Exécuter la racine une seule fois au point d'entrée. Pour une racine simple, lire la première déclaration de `docs/concepts/02-server/40-command/10-use.ts` ; pour un script sans arguments positionnels, suivre l'[exemple à options seules](references/examples/options-only.ts).
31
+
32
+ ## Déclarer les entrées
33
+
34
+ Les entrées du terminal sont externes : les faire décoder et valider par les data structures intégrées aux déclarations. Décrire les contraintes utiles, comme un entier borné ou un choix de littéraux ; ne pas remplacer cette validation par un cast ou une conversion manuelle dans le callback.
35
+
36
+ | Entrée | Déclaration et garantie |
37
+ | --- | --- |
38
+ | Valeur positionnelle | `createArgument` dans `subjects`, obligatoire par défaut. Placer les arguments `optional: true` après les obligatoires. |
39
+ | Option à valeur | `createOption` dans `options`, facultative par défaut : absence en `undefined`. `required: true` la rend obligatoire ; une présence sans valeur reste invalide. |
40
+ | Flag de présence | `createBooleanOption`, `false` si absent et `true` si présent ; ne reçoit pas de valeur. |
41
+ | Liste | `createArrayOption`, facultative par défaut ; son schéma décrit un élément. Les bornes ne rendent pas la liste obligatoire. |
42
+
43
+ Les noms doivent être uniques dans chaque ensemble d'options ou de sujets. Choisir aussi des alias sans collision et conserver `help` / `h` pour l'aide intégrée.
44
+
45
+ Pour créer ou modifier une entrée, lire [Entrées et garanties](references/inputs.md) avant de choisir sa syntaxe et son schéma. L'[exemple complet](references/examples/preview-command.ts) combine arguments, options, flag et liste bornée ; reprendre les constructions nécessaires au contrat de la commande.
46
+
47
+ ## Assembler et exécuter
48
+
49
+ Un même `subjects` contient soit des arguments, soit des sous-commandes. Le premier argument sélectionne la sous-commande ; le callback du parent ne s'exécute pas comme une étape préalable. Déclarer les options nécessaires sur chaque commande qui les consomme ; celles du parent ne sont pas héritées.
50
+
51
+ Décrire les commandes et leurs entrées pour alimenter l'aide intégrée `--help` / `-h`. Choisir `displayName` sur la racine pour identifier le programme dans l'aide et les diagnostics.
52
+
53
+ Si la tâche ajoute un arbre, modifie l'exécution ou expose un binaire, lire [Arbre, aide et résultat d'exécution](references/execution.md). L'[exemple avec sous-commande](references/examples/cli.ts) montre l'assemblage et le code de sortie sur erreur de validation.
54
+
55
+ ## Raccorder l'application et vérifier
56
+
57
+ Le callback est un point d'entrée d'infrastructure : il adapte les données validées, appelle l'application et interprète ses résultats pour le terminal. Il retourne `void` ou une promesse de `void` ; lui retourner un `Either` métier ne propage pas cet échec à `exec`. Garder l'orchestration métier dans l'application et choisir le diagnostic et la conséquence finale dans le callback.
58
+
59
+ Une erreur de validation empêche l'appel du callback ; `exec` retourne cette erreur après son affichage, sans fixer à lui seul un code de sortie d'échec. Avec `execOptions`, sélectionner l'information `success` avant de lancer le travail : l'aide est aussi un `Right`, sous `log-help`.
60
+
61
+ Pour les opérations sur les fichiers, la configuration d'environnement et les capacités du processus appelées depuis une commande, consulter le skill `duplojs-server`.
62
+
63
+ Vérifier le typage du projet, puis exercer l'aide, un appel valide, une entrée invalide et l'absence d'une entrée obligatoire. Pour un arbre, vérifier aussi le chemin complet vers la sous-commande. Utiliser des opérations sans effet ou des dépendances de test lorsque la commande agit sur l'environnement ; vérifier le code de sortie attendu en cas d'échec.
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+
3
+ import * as DSCommand from "@duplojs/server/command";
4
+ import * as DSCommon from "@duplojs/server/common";
5
+ import * as DEither from "@duplojs/lang/either";
6
+ import { previewCommand } from "./preview-command";
7
+
8
+ const result = await DSCommand.exec(
9
+ {
10
+ displayName: "my-cli",
11
+ description: "Preview application operations",
12
+ subjects: [previewCommand],
13
+ },
14
+ () => {
15
+ console.log("Use my-cli preview --help to inspect export parameters.");
16
+ },
17
+ );
18
+
19
+ // Les diagnostics de validation ont déjà été affichés par exec.
20
+ if (DEither.isLeft(result)) {
21
+ DSCommon.exitProcess(1);
22
+ }