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

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 (929) hide show
  1. package/README.md +81 -2
  2. package/dist/bin/index.d.ts +2 -0
  3. package/dist/bin/index.mjs +7 -0
  4. package/dist/bin/packagePath.d.ts +2 -0
  5. package/dist/bin/packagePath.mjs +12 -0
  6. package/dist/bin/setup/index.d.ts +12 -0
  7. package/dist/bin/setup/index.mjs +33 -0
  8. package/dist/bin/setup/instructions.d.ts +8 -0
  9. package/dist/bin/setup/instructions.mjs +27 -0
  10. package/dist/bin/skills/index.d.ts +5 -0
  11. package/dist/bin/skills/index.mjs +11 -0
  12. package/dist/bin/skills/install.d.ts +2 -0
  13. package/dist/bin/skills/install.mjs +25 -0
  14. package/dist/bin/skills/skill.d.ts +35 -0
  15. package/dist/bin/skills/skill.mjs +60 -0
  16. package/dist/bin/skills/update.d.ts +2 -0
  17. package/dist/bin/skills/update.mjs +19 -0
  18. package/dist/index.cjs +1 -0
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.mjs +0 -0
  21. package/docs/API/10-lang/10-array/10-at.ts +65 -0
  22. package/docs/API/10-lang/10-array/10-chunk.ts +42 -0
  23. package/docs/API/10-lang/10-array/10-coalescing.ts +20 -0
  24. package/docs/API/10-lang/10-array/10-concat.ts +34 -0
  25. package/docs/API/10-lang/10-array/10-copyWithin.ts +34 -0
  26. package/docs/API/10-lang/10-array/10-every.ts +25 -0
  27. package/docs/API/10-lang/10-array/10-fill.ts +34 -0
  28. package/docs/API/10-lang/10-array/10-fillAll.ts +34 -0
  29. package/docs/API/10-lang/10-array/10-filter.ts +43 -0
  30. package/docs/API/10-lang/10-array/10-find.ts +33 -0
  31. package/docs/API/10-lang/10-array/10-findAndReplace.ts +35 -0
  32. package/docs/API/10-lang/10-array/10-findAndSpliceDelete.ts +35 -0
  33. package/docs/API/10-lang/10-array/10-findAndSpliceInsert.ts +35 -0
  34. package/docs/API/10-lang/10-array/10-findAndSpliceReplace.ts +24 -0
  35. package/docs/API/10-lang/10-array/10-findDuplicates.ts +19 -0
  36. package/docs/API/10-lang/10-array/10-findIndex.ts +25 -0
  37. package/docs/API/10-lang/10-array/10-findLast.ts +33 -0
  38. package/docs/API/10-lang/10-array/10-findLastIndex.ts +25 -0
  39. package/docs/API/10-lang/10-array/10-first.ts +21 -0
  40. package/docs/API/10-lang/10-array/10-flat.ts +22 -0
  41. package/docs/API/10-lang/10-array/10-flatMap.ts +24 -0
  42. package/docs/API/10-lang/10-array/10-from.ts +25 -0
  43. package/docs/API/10-lang/10-array/10-group.ts +27 -0
  44. package/docs/API/10-lang/10-array/10-groupOutput.ts +30 -0
  45. package/docs/API/10-lang/10-array/10-includes.ts +24 -0
  46. package/docs/API/10-lang/10-array/10-indexOf.ts +24 -0
  47. package/docs/API/10-lang/10-array/10-insert.ts +34 -0
  48. package/docs/API/10-lang/10-array/10-is.ts +29 -0
  49. package/docs/API/10-lang/10-array/10-isLastIndex.ts +24 -0
  50. package/docs/API/10-lang/10-array/10-last.ts +21 -0
  51. package/docs/API/10-lang/10-array/10-lastIndexOf.ts +24 -0
  52. package/docs/API/10-lang/10-array/10-length.ts +28 -0
  53. package/docs/API/10-lang/10-array/10-lengthEqual.ts +39 -0
  54. package/docs/API/10-lang/10-array/10-map.ts +34 -0
  55. package/docs/API/10-lang/10-array/10-maxElements.ts +44 -0
  56. package/docs/API/10-lang/10-array/10-minElements.ts +44 -0
  57. package/docs/API/10-lang/10-array/10-notIncludes.ts +24 -0
  58. package/docs/API/10-lang/10-array/10-pop.ts +23 -0
  59. package/docs/API/10-lang/10-array/10-prepend.ts +34 -0
  60. package/docs/API/10-lang/10-array/10-push.ts +34 -0
  61. package/docs/API/10-lang/10-array/10-reduce.ts +28 -0
  62. package/docs/API/10-lang/10-array/10-reduceFrom.ts +16 -0
  63. package/docs/API/10-lang/10-array/10-reduceRight.ts +28 -0
  64. package/docs/API/10-lang/10-array/10-reverse.ts +25 -0
  65. package/docs/API/10-lang/10-array/10-select.ts +26 -0
  66. package/docs/API/10-lang/10-array/10-set.ts +24 -0
  67. package/docs/API/10-lang/10-array/10-shift.ts +23 -0
  68. package/docs/API/10-lang/10-array/10-slice.ts +24 -0
  69. package/docs/API/10-lang/10-array/10-some.ts +25 -0
  70. package/docs/API/10-lang/10-array/10-sort.ts +34 -0
  71. package/docs/API/10-lang/10-array/10-spliceDelete.ts +34 -0
  72. package/docs/API/10-lang/10-array/10-spliceInsert.ts +34 -0
  73. package/docs/API/10-lang/10-array/10-spliceReplace.ts +24 -0
  74. package/docs/API/10-lang/10-array/10-unshift.ts +34 -0
  75. package/docs/API/10-lang/10-array/index.llms.md +220 -0
  76. package/docs/API/10-lang/10-array/index.md +3 -0
  77. package/docs/API/10-lang/10-chrono/10-addDays.ts +25 -0
  78. package/docs/API/10-lang/10-chrono/10-addHours.ts +25 -0
  79. package/docs/API/10-lang/10-chrono/10-addMilliseconds.ts +25 -0
  80. package/docs/API/10-lang/10-chrono/10-addMinutes.ts +25 -0
  81. package/docs/API/10-lang/10-chrono/10-addMonths.ts +25 -0
  82. package/docs/API/10-lang/10-chrono/10-addSeconds.ts +25 -0
  83. package/docs/API/10-lang/10-chrono/10-addTime.ts +38 -0
  84. package/docs/API/10-lang/10-chrono/10-addWeeks.ts +25 -0
  85. package/docs/API/10-lang/10-chrono/10-addYears.ts +25 -0
  86. package/docs/API/10-lang/10-chrono/10-applyTimezone.ts +29 -0
  87. package/docs/API/10-lang/10-chrono/10-betweenThanDate.ts +27 -0
  88. package/docs/API/10-lang/10-chrono/10-betweenThanOrEqualDate.ts +27 -0
  89. package/docs/API/10-lang/10-chrono/10-betweenThanOrEqualTime.ts +27 -0
  90. package/docs/API/10-lang/10-chrono/10-betweenThanTime.ts +27 -0
  91. package/docs/API/10-lang/10-chrono/10-closestTo.ts +45 -0
  92. package/docs/API/10-lang/10-chrono/10-computeTime.ts +35 -0
  93. package/docs/API/10-lang/10-chrono/10-createDate.ts +122 -0
  94. package/docs/API/10-lang/10-chrono/10-createDateOrThrow.ts +39 -0
  95. package/docs/API/10-lang/10-chrono/10-createTime.ts +86 -0
  96. package/docs/API/10-lang/10-chrono/10-createTimeOrThrow.ts +28 -0
  97. package/docs/API/10-lang/10-chrono/10-eachDate.ts +67 -0
  98. package/docs/API/10-lang/10-chrono/10-equalDate.ts +26 -0
  99. package/docs/API/10-lang/10-chrono/10-equalTime.ts +26 -0
  100. package/docs/API/10-lang/10-chrono/10-formatDate.ts +43 -0
  101. package/docs/API/10-lang/10-chrono/10-formatTime.ts +37 -0
  102. package/docs/API/10-lang/10-chrono/10-getDayOfMonth.ts +37 -0
  103. package/docs/API/10-lang/10-chrono/10-getDayOfWeek.ts +30 -0
  104. package/docs/API/10-lang/10-chrono/10-getDayOfYear.ts +28 -0
  105. package/docs/API/10-lang/10-chrono/10-getDifference.ts +29 -0
  106. package/docs/API/10-lang/10-chrono/10-getFirstDayOfMonth.ts +24 -0
  107. package/docs/API/10-lang/10-chrono/10-getFirstDayOfWeek.ts +24 -0
  108. package/docs/API/10-lang/10-chrono/10-getHour.ts +28 -0
  109. package/docs/API/10-lang/10-chrono/10-getLastDayOfMonth.ts +24 -0
  110. package/docs/API/10-lang/10-chrono/10-getLastDayOfWeek.ts +24 -0
  111. package/docs/API/10-lang/10-chrono/10-getMilliseconds.ts +24 -0
  112. package/docs/API/10-lang/10-chrono/10-getMinute.ts +27 -0
  113. package/docs/API/10-lang/10-chrono/10-getMonth.ts +27 -0
  114. package/docs/API/10-lang/10-chrono/10-getSecond.ts +27 -0
  115. package/docs/API/10-lang/10-chrono/10-getTimezoneOffset.ts +28 -0
  116. package/docs/API/10-lang/10-chrono/10-getWeekOfYear.ts +27 -0
  117. package/docs/API/10-lang/10-chrono/10-getYear.ts +27 -0
  118. package/docs/API/10-lang/10-chrono/10-greaterThanDate.ts +26 -0
  119. package/docs/API/10-lang/10-chrono/10-greaterThanOrEqualDate.ts +26 -0
  120. package/docs/API/10-lang/10-chrono/10-greaterThanOrEqualTime.ts +26 -0
  121. package/docs/API/10-lang/10-chrono/10-greaterThanTime.ts +26 -0
  122. package/docs/API/10-lang/10-chrono/10-isDate.ts +36 -0
  123. package/docs/API/10-lang/10-chrono/10-isSafeTimeValue.ts +19 -0
  124. package/docs/API/10-lang/10-chrono/10-isSafeTimestamp.ts +19 -0
  125. package/docs/API/10-lang/10-chrono/10-isSerializedTheDate.ts +41 -0
  126. package/docs/API/10-lang/10-chrono/10-isSerializedTheTime.ts +41 -0
  127. package/docs/API/10-lang/10-chrono/10-isTime.ts +36 -0
  128. package/docs/API/10-lang/10-chrono/10-lessThanDate.ts +26 -0
  129. package/docs/API/10-lang/10-chrono/10-lessThanOrEqualDate.ts +26 -0
  130. package/docs/API/10-lang/10-chrono/10-lessThanOrEqualTime.ts +26 -0
  131. package/docs/API/10-lang/10-chrono/10-lessThanTime.ts +26 -0
  132. package/docs/API/10-lang/10-chrono/10-makeSafeTimeValue.ts +19 -0
  133. package/docs/API/10-lang/10-chrono/10-makeSafeTimestamp.ts +19 -0
  134. package/docs/API/10-lang/10-chrono/10-maxDate.ts +19 -0
  135. package/docs/API/10-lang/10-chrono/10-maxTime.ts +19 -0
  136. package/docs/API/10-lang/10-chrono/10-minDate.ts +19 -0
  137. package/docs/API/10-lang/10-chrono/10-minTime.ts +19 -0
  138. package/docs/API/10-lang/10-chrono/10-now.ts +13 -0
  139. package/docs/API/10-lang/10-chrono/10-round.ts +41 -0
  140. package/docs/API/10-lang/10-chrono/10-serialize.ts +23 -0
  141. package/docs/API/10-lang/10-chrono/10-sortDates.ts +30 -0
  142. package/docs/API/10-lang/10-chrono/10-sortTimes.ts +29 -0
  143. package/docs/API/10-lang/10-chrono/10-subtractDays.ts +25 -0
  144. package/docs/API/10-lang/10-chrono/10-subtractHours.ts +25 -0
  145. package/docs/API/10-lang/10-chrono/10-subtractMilliseconds.ts +25 -0
  146. package/docs/API/10-lang/10-chrono/10-subtractMinutes.ts +25 -0
  147. package/docs/API/10-lang/10-chrono/10-subtractMonths.ts +25 -0
  148. package/docs/API/10-lang/10-chrono/10-subtractSeconds.ts +25 -0
  149. package/docs/API/10-lang/10-chrono/10-subtractTime.ts +38 -0
  150. package/docs/API/10-lang/10-chrono/10-subtractWeeks.ts +25 -0
  151. package/docs/API/10-lang/10-chrono/10-subtractYears.ts +25 -0
  152. package/docs/API/10-lang/10-chrono/10-toDateISOString.ts +17 -0
  153. package/docs/API/10-lang/10-chrono/10-toNative.ts +25 -0
  154. package/docs/API/10-lang/10-chrono/10-toTimeValue.ts +17 -0
  155. package/docs/API/10-lang/10-chrono/10-toTimestamp.ts +17 -0
  156. package/docs/API/10-lang/10-chrono/10-today.ts +13 -0
  157. package/docs/API/10-lang/10-chrono/10-tomorrow.ts +13 -0
  158. package/docs/API/10-lang/10-chrono/10-yesterday.ts +13 -0
  159. package/docs/API/10-lang/10-chrono/index.llms.md +332 -0
  160. package/docs/API/10-lang/10-chrono/index.md +3 -0
  161. package/docs/API/10-lang/10-common/10-and.ts +51 -0
  162. package/docs/API/10-lang/10-common/10-asserts.ts +13 -0
  163. package/docs/API/10-lang/10-common/10-asyncInnerPipe.ts +23 -0
  164. package/docs/API/10-lang/10-common/10-asyncLoop.ts +23 -0
  165. package/docs/API/10-lang/10-common/10-asyncLoopAccumulator.ts +40 -0
  166. package/docs/API/10-lang/10-common/10-asyncPipe.ts +21 -0
  167. package/docs/API/10-lang/10-common/10-callThen.ts +22 -0
  168. package/docs/API/10-lang/10-common/10-cast.ts +16 -0
  169. package/docs/API/10-lang/10-common/10-clone.ts +12 -0
  170. package/docs/API/10-lang/10-common/10-createAsyncRetry.ts +34 -0
  171. package/docs/API/10-lang/10-common/10-createBuilder.ts +19 -0
  172. package/docs/API/10-lang/10-common/10-createEnum.ts +25 -0
  173. package/docs/API/10-lang/10-common/10-createExternalPromise.ts +13 -0
  174. package/docs/API/10-lang/10-common/10-createFormData.ts +16 -0
  175. package/docs/API/10-lang/10-common/10-createInterpolation.ts +12 -0
  176. package/docs/API/10-lang/10-common/10-createQueue.ts +17 -0
  177. package/docs/API/10-lang/10-common/10-createTransformer.ts +16 -0
  178. package/docs/API/10-lang/10-common/10-detachObjectMethod.ts +20 -0
  179. package/docs/API/10-lang/10-common/10-equal.ts +37 -0
  180. package/docs/API/10-lang/10-common/10-escapeRegExp.ts +11 -0
  181. package/docs/API/10-lang/10-common/10-falsy.ts +31 -0
  182. package/docs/API/10-lang/10-common/10-forward.ts +11 -0
  183. package/docs/API/10-lang/10-common/10-forwardAsserts.ts +17 -0
  184. package/docs/API/10-lang/10-common/10-forwardLog.ts +11 -0
  185. package/docs/API/10-lang/10-common/10-infer.ts +16 -0
  186. package/docs/API/10-lang/10-common/10-innerPipe.ts +23 -0
  187. package/docs/API/10-lang/10-common/10-instanceOf.ts +34 -0
  188. package/docs/API/10-lang/10-common/10-isType.ts +35 -0
  189. package/docs/API/10-lang/10-common/10-justExec.ts +28 -0
  190. package/docs/API/10-lang/10-common/10-justReturn.ts +19 -0
  191. package/docs/API/10-lang/10-common/10-loop.ts +18 -0
  192. package/docs/API/10-lang/10-common/10-loopAccumulator.ts +35 -0
  193. package/docs/API/10-lang/10-common/10-loopAccumulatorFrom.ts +29 -0
  194. package/docs/API/10-lang/10-common/10-memo.ts +12 -0
  195. package/docs/API/10-lang/10-common/10-memoObject.ts +11 -0
  196. package/docs/API/10-lang/10-common/10-memoPromise.ts +16 -0
  197. package/docs/API/10-lang/10-common/10-or.ts +43 -0
  198. package/docs/API/10-lang/10-common/10-pipe.ts +21 -0
  199. package/docs/API/10-lang/10-common/10-pipeCall.ts +20 -0
  200. package/docs/API/10-lang/10-common/10-prepareAsyncPipe.ts +20 -0
  201. package/docs/API/10-lang/10-common/10-preparePipe.ts +20 -0
  202. package/docs/API/10-lang/10-common/10-promiseAll.ts +16 -0
  203. package/docs/API/10-lang/10-common/10-promiseObject.ts +22 -0
  204. package/docs/API/10-lang/10-common/10-removeConstraint.ts +13 -0
  205. package/docs/API/10-lang/10-common/10-shameOnYou.ts +20 -0
  206. package/docs/API/10-lang/10-common/10-simpleClone.ts +12 -0
  207. package/docs/API/10-lang/10-common/10-stringToBytes.ts +16 -0
  208. package/docs/API/10-lang/10-common/10-stringToMillisecond.ts +17 -0
  209. package/docs/API/10-lang/10-common/10-tap.ts +28 -0
  210. package/docs/API/10-lang/10-common/10-timeout.ts +11 -0
  211. package/docs/API/10-lang/10-common/10-toCurriedPredicate.ts +28 -0
  212. package/docs/API/10-lang/10-common/10-toJSON.ts +15 -0
  213. package/docs/API/10-lang/10-common/10-toNative.ts +15 -0
  214. package/docs/API/10-lang/10-common/10-toRegExp.ts +17 -0
  215. package/docs/API/10-lang/10-common/10-transformer.ts +21 -0
  216. package/docs/API/10-lang/10-common/10-truthy.ts +31 -0
  217. package/docs/API/10-lang/10-common/10-useAsyncRetry.ts +31 -0
  218. package/docs/API/10-lang/10-common/10-when.ts +27 -0
  219. package/docs/API/10-lang/10-common/10-whenElse.ts +28 -0
  220. package/docs/API/10-lang/10-common/10-whenNot.ts +57 -0
  221. package/docs/API/10-lang/10-common/index.llms.md +244 -0
  222. package/docs/API/10-lang/10-common/index.md +3 -0
  223. package/docs/API/10-lang/10-dataStructure/10-absolutePath.ts +25 -0
  224. package/docs/API/10-lang/10-dataStructure/10-allowedCharacters.ts +25 -0
  225. package/docs/API/10-lang/10-dataStructure/10-array.ts +23 -0
  226. package/docs/API/10-lang/10-dataStructure/10-arrayLengthEqual.ts +25 -0
  227. package/docs/API/10-lang/10-dataStructure/10-betweenThan.ts +25 -0
  228. package/docs/API/10-lang/10-dataStructure/10-betweenThanOrEqual.ts +25 -0
  229. package/docs/API/10-lang/10-dataStructure/10-bigint.ts +22 -0
  230. package/docs/API/10-lang/10-dataStructure/10-boolean.ts +22 -0
  231. package/docs/API/10-lang/10-dataStructure/10-createCodec.ts +45 -0
  232. package/docs/API/10-lang/10-dataStructure/10-createCodecs.ts +134 -0
  233. package/docs/API/10-lang/10-dataStructure/10-createErrorInterpreter.ts +74 -0
  234. package/docs/API/10-lang/10-dataStructure/10-date.ts +23 -0
  235. package/docs/API/10-lang/10-dataStructure/10-email.ts +25 -0
  236. package/docs/API/10-lang/10-dataStructure/10-endsWith.ts +24 -0
  237. package/docs/API/10-lang/10-dataStructure/10-even.ts +25 -0
  238. package/docs/API/10-lang/10-dataStructure/10-extend.ts +27 -0
  239. package/docs/API/10-lang/10-dataStructure/10-greaterThan.ts +25 -0
  240. package/docs/API/10-lang/10-dataStructure/10-greaterThanOrEqual.ts +25 -0
  241. package/docs/API/10-lang/10-dataStructure/10-include.ts +24 -0
  242. package/docs/API/10-lang/10-dataStructure/10-integer.ts +25 -0
  243. package/docs/API/10-lang/10-dataStructure/10-isNullStructure.ts +12 -0
  244. package/docs/API/10-lang/10-dataStructure/10-isNullable.ts +12 -0
  245. package/docs/API/10-lang/10-dataStructure/10-isOptional.ts +12 -0
  246. package/docs/API/10-lang/10-dataStructure/10-isUndefinedStructure.ts +12 -0
  247. package/docs/API/10-lang/10-dataStructure/10-lazy.ts +23 -0
  248. package/docs/API/10-lang/10-dataStructure/10-lessThan.ts +25 -0
  249. package/docs/API/10-lang/10-dataStructure/10-lessThanOrEqual.ts +25 -0
  250. package/docs/API/10-lang/10-dataStructure/10-literal.ts +19 -0
  251. package/docs/API/10-lang/10-dataStructure/10-maxCharacters.ts +25 -0
  252. package/docs/API/10-lang/10-dataStructure/10-maxElements.ts +25 -0
  253. package/docs/API/10-lang/10-dataStructure/10-minCharacters.ts +25 -0
  254. package/docs/API/10-lang/10-dataStructure/10-minElements.ts +25 -0
  255. package/docs/API/10-lang/10-dataStructure/10-multipleOf.ts +25 -0
  256. package/docs/API/10-lang/10-dataStructure/10-negative.ts +25 -0
  257. package/docs/API/10-lang/10-dataStructure/10-notEmpty.ts +25 -0
  258. package/docs/API/10-lang/10-dataStructure/10-notZero.ts +25 -0
  259. package/docs/API/10-lang/10-dataStructure/10-null.ts +22 -0
  260. package/docs/API/10-lang/10-dataStructure/10-nullable.ts +19 -0
  261. package/docs/API/10-lang/10-dataStructure/10-number.ts +22 -0
  262. package/docs/API/10-lang/10-dataStructure/10-numberInString.ts +25 -0
  263. package/docs/API/10-lang/10-dataStructure/10-object.ts +25 -0
  264. package/docs/API/10-lang/10-dataStructure/10-odd.ts +25 -0
  265. package/docs/API/10-lang/10-dataStructure/10-optional.ts +19 -0
  266. package/docs/API/10-lang/10-dataStructure/10-partial.ts +23 -0
  267. package/docs/API/10-lang/10-dataStructure/10-path.ts +25 -0
  268. package/docs/API/10-lang/10-dataStructure/10-positive.ts +25 -0
  269. package/docs/API/10-lang/10-dataStructure/10-record.ts +22 -0
  270. package/docs/API/10-lang/10-dataStructure/10-refine.ts +27 -0
  271. package/docs/API/10-lang/10-dataStructure/10-regex.ts +24 -0
  272. package/docs/API/10-lang/10-dataStructure/10-required.ts +21 -0
  273. package/docs/API/10-lang/10-dataStructure/10-safe.ts +25 -0
  274. package/docs/API/10-lang/10-dataStructure/10-segmentPath.ts +25 -0
  275. package/docs/API/10-lang/10-dataStructure/10-startsWith.ts +24 -0
  276. package/docs/API/10-lang/10-dataStructure/10-strictNegative.ts +25 -0
  277. package/docs/API/10-lang/10-dataStructure/10-strictPositive.ts +25 -0
  278. package/docs/API/10-lang/10-dataStructure/10-string.ts +22 -0
  279. package/docs/API/10-lang/10-dataStructure/10-stringLengthEqual.ts +25 -0
  280. package/docs/API/10-lang/10-dataStructure/10-time.ts +23 -0
  281. package/docs/API/10-lang/10-dataStructure/10-trimmed.ts +25 -0
  282. package/docs/API/10-lang/10-dataStructure/10-typeStructureIdentifier.ts +33 -0
  283. package/docs/API/10-lang/10-dataStructure/10-undefined.ts +22 -0
  284. package/docs/API/10-lang/10-dataStructure/10-union.ts +24 -0
  285. package/docs/API/10-lang/10-dataStructure/10-unwrapLazy.ts +17 -0
  286. package/docs/API/10-lang/10-dataStructure/10-url.ts +25 -0
  287. package/docs/API/10-lang/10-dataStructure/10-uuid.ts +25 -0
  288. package/docs/API/10-lang/10-dataStructure/index.llms.md +264 -0
  289. package/docs/API/10-lang/10-dataStructure/index.md +3 -0
  290. package/docs/API/10-lang/10-either/10-asyncGroup.ts +44 -0
  291. package/docs/API/10-lang/10-either/10-asyncSafeCallback.ts +25 -0
  292. package/docs/API/10-lang/10-either/10-error.ts +12 -0
  293. package/docs/API/10-lang/10-either/10-expect.ts +13 -0
  294. package/docs/API/10-lang/10-either/10-extractErrorInLeft.ts +45 -0
  295. package/docs/API/10-lang/10-either/10-fail.ts +12 -0
  296. package/docs/API/10-lang/10-either/10-forwardAssertsSelection.ts +28 -0
  297. package/docs/API/10-lang/10-either/10-group.ts +58 -0
  298. package/docs/API/10-lang/10-either/10-hasInformation.ts +30 -0
  299. package/docs/API/10-lang/10-either/10-isLeft.ts +25 -0
  300. package/docs/API/10-lang/10-either/10-isRight.ts +25 -0
  301. package/docs/API/10-lang/10-either/10-isSelected.ts +41 -0
  302. package/docs/API/10-lang/10-either/10-keepAsRightByInformation.ts +29 -0
  303. package/docs/API/10-lang/10-either/10-keepAsRightSelection.ts +23 -0
  304. package/docs/API/10-lang/10-either/10-left.ts +13 -0
  305. package/docs/API/10-lang/10-either/10-matchInformation.ts +28 -0
  306. package/docs/API/10-lang/10-either/10-matchInformationCombination.ts +61 -0
  307. package/docs/API/10-lang/10-either/10-matchInformationCombinationOtherwise.ts +62 -0
  308. package/docs/API/10-lang/10-either/10-matchInformationOtherwise.ts +29 -0
  309. package/docs/API/10-lang/10-either/10-none.ts +12 -0
  310. package/docs/API/10-lang/10-either/10-ok.ts +12 -0
  311. package/docs/API/10-lang/10-either/10-result.ts +18 -0
  312. package/docs/API/10-lang/10-either/10-rewriteInformation.ts +24 -0
  313. package/docs/API/10-lang/10-either/10-right.ts +13 -0
  314. package/docs/API/10-lang/10-either/10-rightAsyncPipe.ts +70 -0
  315. package/docs/API/10-lang/10-either/10-rightPipe.ts +72 -0
  316. package/docs/API/10-lang/10-either/10-safeCallback.ts +29 -0
  317. package/docs/API/10-lang/10-either/10-some.ts +12 -0
  318. package/docs/API/10-lang/10-either/10-success.ts +12 -0
  319. package/docs/API/10-lang/10-either/10-toMaybe.ts +53 -0
  320. package/docs/API/10-lang/10-either/10-unwrapByInformation.ts +20 -0
  321. package/docs/API/10-lang/10-either/10-unwrapByInformationOrThrow.ts +19 -0
  322. package/docs/API/10-lang/10-either/10-unwrapLeft.ts +14 -0
  323. package/docs/API/10-lang/10-either/10-unwrapLeftOrThrow.ts +17 -0
  324. package/docs/API/10-lang/10-either/10-unwrapOr.ts +17 -0
  325. package/docs/API/10-lang/10-either/10-unwrapOtherwise.ts +20 -0
  326. package/docs/API/10-lang/10-either/10-unwrapRight.ts +14 -0
  327. package/docs/API/10-lang/10-either/10-unwrapRightOrThrow.ts +17 -0
  328. package/docs/API/10-lang/10-either/10-unwrapSelection.ts +26 -0
  329. package/docs/API/10-lang/10-either/10-unwrapSelectionOrThrow.ts +19 -0
  330. package/docs/API/10-lang/10-either/10-whenHasInformation.ts +36 -0
  331. package/docs/API/10-lang/10-either/10-whenHasInformationOtherwise.ts +29 -0
  332. package/docs/API/10-lang/10-either/10-whenIsLeft.ts +20 -0
  333. package/docs/API/10-lang/10-either/10-whenIsLeftOtherwise.ts +27 -0
  334. package/docs/API/10-lang/10-either/10-whenIsRight.ts +20 -0
  335. package/docs/API/10-lang/10-either/10-whenIsRightOtherwise.ts +26 -0
  336. package/docs/API/10-lang/10-either/10-whenIsSelected.ts +33 -0
  337. package/docs/API/10-lang/10-either/10-whenIsSelectedOtherwise.ts +35 -0
  338. package/docs/API/10-lang/10-either/index.llms.md +196 -0
  339. package/docs/API/10-lang/10-either/index.md +3 -0
  340. package/docs/API/10-lang/10-generator/10-asyncChunk.ts +55 -0
  341. package/docs/API/10-lang/10-generator/10-asyncConcat.ts +43 -0
  342. package/docs/API/10-lang/10-generator/10-asyncFilter.ts +41 -0
  343. package/docs/API/10-lang/10-generator/10-asyncFlat.ts +37 -0
  344. package/docs/API/10-lang/10-generator/10-asyncGroup.ts +65 -0
  345. package/docs/API/10-lang/10-generator/10-asyncLoop.ts +50 -0
  346. package/docs/API/10-lang/10-generator/10-asyncLoopAccumulator.ts +40 -0
  347. package/docs/API/10-lang/10-generator/10-asyncMap.ts +48 -0
  348. package/docs/API/10-lang/10-generator/10-asyncReduce.ts +63 -0
  349. package/docs/API/10-lang/10-generator/10-chunk.ts +44 -0
  350. package/docs/API/10-lang/10-generator/10-concat.ts +37 -0
  351. package/docs/API/10-lang/10-generator/10-createExternalAsyncGenerator.ts +29 -0
  352. package/docs/API/10-lang/10-generator/10-execute.ts +44 -0
  353. package/docs/API/10-lang/10-generator/10-filter.ts +35 -0
  354. package/docs/API/10-lang/10-generator/10-flat.ts +25 -0
  355. package/docs/API/10-lang/10-generator/10-group.ts +44 -0
  356. package/docs/API/10-lang/10-generator/10-groupOutput.ts +48 -0
  357. package/docs/API/10-lang/10-generator/10-loop.ts +46 -0
  358. package/docs/API/10-lang/10-generator/10-loopAccumulator.ts +33 -0
  359. package/docs/API/10-lang/10-generator/10-loopAccumulatorFrom.ts +30 -0
  360. package/docs/API/10-lang/10-generator/10-map.ts +35 -0
  361. package/docs/API/10-lang/10-generator/10-reduce.ts +51 -0
  362. package/docs/API/10-lang/10-generator/10-reduceFrom.ts +30 -0
  363. package/docs/API/10-lang/10-generator/index.llms.md +96 -0
  364. package/docs/API/10-lang/10-generator/index.md +3 -0
  365. package/docs/API/10-lang/10-number/10-betweenThan.ts +43 -0
  366. package/docs/API/10-lang/10-number/10-betweenThanOrEqual.ts +43 -0
  367. package/docs/API/10-lang/10-number/10-greaterThan.ts +35 -0
  368. package/docs/API/10-lang/10-number/10-greaterThanOrEqual.ts +35 -0
  369. package/docs/API/10-lang/10-number/10-isEven.ts +33 -0
  370. package/docs/API/10-lang/10-number/10-isInteger.ts +33 -0
  371. package/docs/API/10-lang/10-number/10-isMultipleOf.ts +35 -0
  372. package/docs/API/10-lang/10-number/10-isNegative.ts +33 -0
  373. package/docs/API/10-lang/10-number/10-isNotZero.ts +33 -0
  374. package/docs/API/10-lang/10-number/10-isOdd.ts +33 -0
  375. package/docs/API/10-lang/10-number/10-isPositive.ts +33 -0
  376. package/docs/API/10-lang/10-number/10-isSafe.ts +33 -0
  377. package/docs/API/10-lang/10-number/10-isStrictNegative.ts +34 -0
  378. package/docs/API/10-lang/10-number/10-isStrictPositive.ts +33 -0
  379. package/docs/API/10-lang/10-number/10-lessThan.ts +35 -0
  380. package/docs/API/10-lang/10-number/10-lessThanOrEqual.ts +35 -0
  381. package/docs/API/10-lang/10-number/10-max.ts +19 -0
  382. package/docs/API/10-lang/10-number/10-maxOf.ts +19 -0
  383. package/docs/API/10-lang/10-number/10-min.ts +19 -0
  384. package/docs/API/10-lang/10-number/10-minOf.ts +19 -0
  385. package/docs/API/10-lang/10-number/10-sort.ts +19 -0
  386. package/docs/API/10-lang/10-number/10-sum.ts +19 -0
  387. package/docs/API/10-lang/10-number/index.llms.md +92 -0
  388. package/docs/API/10-lang/10-number/index.md +3 -0
  389. package/docs/API/10-lang/10-object/10-assign.ts +41 -0
  390. package/docs/API/10-lang/10-object/10-countKeys.ts +15 -0
  391. package/docs/API/10-lang/10-object/10-deepOverride.ts +35 -0
  392. package/docs/API/10-lang/10-object/10-discriminate.ts +102 -0
  393. package/docs/API/10-lang/10-object/10-discriminateEntryKey.ts +43 -0
  394. package/docs/API/10-lang/10-object/10-discriminateEntryValue.ts +44 -0
  395. package/docs/API/10-lang/10-object/10-entries.ts +19 -0
  396. package/docs/API/10-lang/10-object/10-entry.ts +17 -0
  397. package/docs/API/10-lang/10-object/10-fromEntries.ts +23 -0
  398. package/docs/API/10-lang/10-object/10-getDeepProperty.ts +26 -0
  399. package/docs/API/10-lang/10-object/10-getProperty.ts +24 -0
  400. package/docs/API/10-lang/10-object/10-hasKeys.ts +43 -0
  401. package/docs/API/10-lang/10-object/10-isSimple.ts +38 -0
  402. package/docs/API/10-lang/10-object/10-keys.ts +19 -0
  403. package/docs/API/10-lang/10-object/10-omit.ts +39 -0
  404. package/docs/API/10-lang/10-object/10-override.ts +24 -0
  405. package/docs/API/10-lang/10-object/10-pick.ts +41 -0
  406. package/docs/API/10-lang/10-object/10-to.ts +40 -0
  407. package/docs/API/10-lang/10-object/10-transformProperties.ts +43 -0
  408. package/docs/API/10-lang/10-object/10-transformProperty.ts +39 -0
  409. package/docs/API/10-lang/10-object/10-values.ts +19 -0
  410. package/docs/API/10-lang/10-object/index.llms.md +88 -0
  411. package/docs/API/10-lang/10-object/index.md +3 -0
  412. package/docs/API/10-lang/10-path/10-computeRelative.ts +19 -0
  413. package/docs/API/10-lang/10-path/10-concatSegment.ts +28 -0
  414. package/docs/API/10-lang/10-path/10-create.ts +21 -0
  415. package/docs/API/10-lang/10-path/10-createAbsolute.ts +21 -0
  416. package/docs/API/10-lang/10-path/10-createAbsoluteOrThrow.ts +16 -0
  417. package/docs/API/10-lang/10-path/10-createMatcher.ts +50 -0
  418. package/docs/API/10-lang/10-path/10-createOrThrow.ts +16 -0
  419. package/docs/API/10-lang/10-path/10-createSegment.ts +26 -0
  420. package/docs/API/10-lang/10-path/10-createSegmentOrThrow.ts +16 -0
  421. package/docs/API/10-lang/10-path/10-declareAbsolutePath.ts +15 -0
  422. package/docs/API/10-lang/10-path/10-declarePath.ts +15 -0
  423. package/docs/API/10-lang/10-path/10-declareSegment.ts +15 -0
  424. package/docs/API/10-lang/10-path/10-getBaseName.ts +22 -0
  425. package/docs/API/10-lang/10-path/10-getExtensionName.ts +22 -0
  426. package/docs/API/10-lang/10-path/10-getParentFolderPath.ts +25 -0
  427. package/docs/API/10-lang/10-path/10-is.ts +46 -0
  428. package/docs/API/10-lang/10-path/10-isAbsolute.ts +46 -0
  429. package/docs/API/10-lang/10-path/10-isSegment.ts +42 -0
  430. package/docs/API/10-lang/10-path/10-normalize.ts +26 -0
  431. package/docs/API/10-lang/10-path/10-resolveFrom.ts +37 -0
  432. package/docs/API/10-lang/10-path/10-resolveRelative.ts +23 -0
  433. package/docs/API/10-lang/10-path/index.llms.md +88 -0
  434. package/docs/API/10-lang/10-path/index.md +3 -0
  435. package/docs/API/10-lang/10-pattern/10-exhaustive.ts +26 -0
  436. package/docs/API/10-lang/10-pattern/10-isMatch.ts +72 -0
  437. package/docs/API/10-lang/10-pattern/10-match.ts +133 -0
  438. package/docs/API/10-lang/10-pattern/10-matchWithEntity.ts +49 -0
  439. package/docs/API/10-lang/10-pattern/10-matchWithEntityOtherwise.ts +55 -0
  440. package/docs/API/10-lang/10-pattern/10-matchWithError.ts +45 -0
  441. package/docs/API/10-lang/10-pattern/10-matchWithErrorOtherwise.ts +48 -0
  442. package/docs/API/10-lang/10-pattern/10-matchWithFact.ts +49 -0
  443. package/docs/API/10-lang/10-pattern/10-matchWithFactOtherwise.ts +49 -0
  444. package/docs/API/10-lang/10-pattern/10-matchWithNumber.ts +33 -0
  445. package/docs/API/10-lang/10-pattern/10-matchWithNumberOtherwise.ts +37 -0
  446. package/docs/API/10-lang/10-pattern/10-matchWithString.ts +34 -0
  447. package/docs/API/10-lang/10-pattern/10-matchWithStringOtherwise.ts +35 -0
  448. package/docs/API/10-lang/10-pattern/10-matchWithTaggedObject.ts +43 -0
  449. package/docs/API/10-lang/10-pattern/10-matchWithTaggedObjectOtherwise.ts +49 -0
  450. package/docs/API/10-lang/10-pattern/10-otherwise.ts +28 -0
  451. package/docs/API/10-lang/10-pattern/10-union.ts +47 -0
  452. package/docs/API/10-lang/10-pattern/10-when.ts +46 -0
  453. package/docs/API/10-lang/10-pattern/10-whenNot.ts +123 -0
  454. package/docs/API/10-lang/10-pattern/index.llms.md +80 -0
  455. package/docs/API/10-lang/10-pattern/index.md +3 -0
  456. package/docs/API/10-lang/10-printer/10-bold.ts +12 -0
  457. package/docs/API/10-lang/10-printer/10-colorized.ts +18 -0
  458. package/docs/API/10-lang/10-printer/10-colorizedBold.ts +18 -0
  459. package/docs/API/10-lang/10-printer/10-primitives.md +19 -0
  460. package/docs/API/10-lang/10-printer/10-renderLine.ts +36 -0
  461. package/docs/API/10-lang/10-printer/10-renderParagraph.ts +37 -0
  462. package/docs/API/10-lang/10-printer/index.llms.md +29 -0
  463. package/docs/API/10-lang/10-printer/index.md +3 -0
  464. package/docs/API/10-lang/10-string/10-at.ts +18 -0
  465. package/docs/API/10-lang/10-string/10-capitalize.ts +18 -0
  466. package/docs/API/10-lang/10-string/10-charAt.ts +18 -0
  467. package/docs/API/10-lang/10-string/10-concat.ts +18 -0
  468. package/docs/API/10-lang/10-string/10-endsWith.ts +33 -0
  469. package/docs/API/10-lang/10-string/10-extract.ts +18 -0
  470. package/docs/API/10-lang/10-string/10-extractAll.ts +18 -0
  471. package/docs/API/10-lang/10-string/10-first.ts +17 -0
  472. package/docs/API/10-lang/10-string/10-includes.ts +33 -0
  473. package/docs/API/10-lang/10-string/10-indexOf.ts +17 -0
  474. package/docs/API/10-lang/10-string/10-isComposedOf.ts +33 -0
  475. package/docs/API/10-lang/10-string/10-isEmail.ts +56 -0
  476. package/docs/API/10-lang/10-string/10-isIn.ts +34 -0
  477. package/docs/API/10-lang/10-string/10-isKeyof.ts +37 -0
  478. package/docs/API/10-lang/10-string/10-isNotEmpty.ts +32 -0
  479. package/docs/API/10-lang/10-string/10-isNumber.ts +32 -0
  480. package/docs/API/10-lang/10-string/10-isTrimmed.ts +33 -0
  481. package/docs/API/10-lang/10-string/10-isUrl.ts +31 -0
  482. package/docs/API/10-lang/10-string/10-isUuid.ts +31 -0
  483. package/docs/API/10-lang/10-string/10-join.ts +18 -0
  484. package/docs/API/10-lang/10-string/10-last.ts +17 -0
  485. package/docs/API/10-lang/10-string/10-lastIndexOf.ts +17 -0
  486. package/docs/API/10-lang/10-string/10-length.ts +18 -0
  487. package/docs/API/10-lang/10-string/10-lengthEqual.ts +33 -0
  488. package/docs/API/10-lang/10-string/10-maxCharacters.ts +33 -0
  489. package/docs/API/10-lang/10-string/10-minCharacters.ts +33 -0
  490. package/docs/API/10-lang/10-string/10-normalize.ts +17 -0
  491. package/docs/API/10-lang/10-string/10-padEnd.ts +17 -0
  492. package/docs/API/10-lang/10-string/10-padStart.ts +17 -0
  493. package/docs/API/10-lang/10-string/10-pop.ts +17 -0
  494. package/docs/API/10-lang/10-string/10-prepend.ts +17 -0
  495. package/docs/API/10-lang/10-string/10-repeat.ts +17 -0
  496. package/docs/API/10-lang/10-string/10-replace.ts +18 -0
  497. package/docs/API/10-lang/10-string/10-replaceAll.ts +17 -0
  498. package/docs/API/10-lang/10-string/10-search.ts +17 -0
  499. package/docs/API/10-lang/10-string/10-shift.ts +17 -0
  500. package/docs/API/10-lang/10-string/10-slice.ts +17 -0
  501. package/docs/API/10-lang/10-string/10-sort.ts +19 -0
  502. package/docs/API/10-lang/10-string/10-sortCompare.ts +17 -0
  503. package/docs/API/10-lang/10-string/10-split.ts +34 -0
  504. package/docs/API/10-lang/10-string/10-startsWith.ts +33 -0
  505. package/docs/API/10-lang/10-string/10-stringify.ts +11 -0
  506. package/docs/API/10-lang/10-string/10-substring.ts +17 -0
  507. package/docs/API/10-lang/10-string/10-test.ts +17 -0
  508. package/docs/API/10-lang/10-string/10-to.ts +11 -0
  509. package/docs/API/10-lang/10-string/10-toLowerCase.ts +17 -0
  510. package/docs/API/10-lang/10-string/10-toUpperCase.ts +17 -0
  511. package/docs/API/10-lang/10-string/10-trim.ts +17 -0
  512. package/docs/API/10-lang/10-string/10-trimEnd.ts +17 -0
  513. package/docs/API/10-lang/10-string/10-trimStart.ts +17 -0
  514. package/docs/API/10-lang/10-string/10-uncapitalize.ts +17 -0
  515. package/docs/API/10-lang/10-string/index.llms.md +208 -0
  516. package/docs/API/10-lang/10-string/index.md +3 -0
  517. package/docs/API/10-lang/10-tuple/10-from.ts +50 -0
  518. package/docs/API/10-lang/10-tuple/10-map.ts +37 -0
  519. package/docs/API/10-lang/10-tuple/index.llms.md +12 -0
  520. package/docs/API/10-lang/10-tuple/index.md +3 -0
  521. package/docs/API/10-lang/index.md +3 -0
  522. package/docs/API/20-server/10-file/10-appendFile.ts +50 -0
  523. package/docs/API/20-server/10-file/10-appendTextFile.ts +49 -0
  524. package/docs/API/20-server/10-file/10-copy.ts +50 -0
  525. package/docs/API/20-server/10-file/10-createEntryInterface.ts +13 -0
  526. package/docs/API/20-server/10-file/10-createFileInterface.ts +22 -0
  527. package/docs/API/20-server/10-file/10-createFolderInterface.ts +20 -0
  528. package/docs/API/20-server/10-file/10-createUnknownEntryInterface.ts +13 -0
  529. package/docs/API/20-server/10-file/10-ensureDirectory.ts +39 -0
  530. package/docs/API/20-server/10-file/10-ensureFile.ts +40 -0
  531. package/docs/API/20-server/10-file/10-exists.ts +36 -0
  532. package/docs/API/20-server/10-file/10-link.ts +51 -0
  533. package/docs/API/20-server/10-file/10-linkStat.ts +37 -0
  534. package/docs/API/20-server/10-file/10-makeDirectory.ts +41 -0
  535. package/docs/API/20-server/10-file/10-makeTemporaryDirectory.ts +35 -0
  536. package/docs/API/20-server/10-file/10-makeTemporaryFile.ts +40 -0
  537. package/docs/API/20-server/10-file/10-move.ts +51 -0
  538. package/docs/API/20-server/10-file/10-readDirectory.ts +52 -0
  539. package/docs/API/20-server/10-file/10-readFile.ts +38 -0
  540. package/docs/API/20-server/10-file/10-readJsonFile.ts +38 -0
  541. package/docs/API/20-server/10-file/10-readLink.ts +37 -0
  542. package/docs/API/20-server/10-file/10-readTextFile.ts +38 -0
  543. package/docs/API/20-server/10-file/10-realPath.ts +36 -0
  544. package/docs/API/20-server/10-file/10-relocate.ts +51 -0
  545. package/docs/API/20-server/10-file/10-remove.ts +40 -0
  546. package/docs/API/20-server/10-file/10-rename.ts +43 -0
  547. package/docs/API/20-server/10-file/10-setMode.ts +37 -0
  548. package/docs/API/20-server/10-file/10-setOwner.ts +38 -0
  549. package/docs/API/20-server/10-file/10-setTime.ts +42 -0
  550. package/docs/API/20-server/10-file/10-stat.ts +37 -0
  551. package/docs/API/20-server/10-file/10-symlink.ts +49 -0
  552. package/docs/API/20-server/10-file/10-truncate.ts +41 -0
  553. package/docs/API/20-server/10-file/10-walkDirectory.ts +75 -0
  554. package/docs/API/20-server/10-file/10-writeFile.ts +50 -0
  555. package/docs/API/20-server/10-file/10-writeJsonFile.ts +41 -0
  556. package/docs/API/20-server/10-file/10-writeTextFile.ts +49 -0
  557. package/docs/API/20-server/10-file/index.llms.md +144 -0
  558. package/docs/API/20-server/10-file/index.md +3 -0
  559. package/docs/API/20-server/20-common/10-environmentVariable.ts +57 -0
  560. package/docs/API/20-server/20-common/10-environmentVariableOrThrow.ts +21 -0
  561. package/docs/API/20-server/20-common/10-exitProcess.ts +9 -0
  562. package/docs/API/20-server/20-common/10-getCurrentDirectoryName.ts +10 -0
  563. package/docs/API/20-server/20-common/10-getCurrentWorkDirectory.ts +10 -0
  564. package/docs/API/20-server/20-common/10-getCurrentWorkDirectoryOrThrow.ts +10 -0
  565. package/docs/API/20-server/20-common/10-getProcessArguments.ts +10 -0
  566. package/docs/API/20-server/20-common/10-setCurrentWorkingDirectory.ts +14 -0
  567. package/docs/API/20-server/20-common/10-setCurrentWorkingDirectoryOrThrow.ts +12 -0
  568. package/docs/API/20-server/20-common/index.llms.md +40 -0
  569. package/docs/API/20-server/20-common/index.md +3 -0
  570. package/docs/API/20-server/30-dataStructure/10-file.ts +14 -0
  571. package/docs/API/20-server/30-dataStructure/10-fileExist.ts +27 -0
  572. package/docs/API/20-server/30-dataStructure/10-folder.ts +14 -0
  573. package/docs/API/20-server/30-dataStructure/10-folderExist.ts +14 -0
  574. package/docs/API/20-server/30-dataStructure/10-mimeType.ts +14 -0
  575. package/docs/API/20-server/30-dataStructure/10-size.ts +32 -0
  576. package/docs/API/20-server/30-dataStructure/index.llms.md +28 -0
  577. package/docs/API/20-server/30-dataStructure/index.md +3 -0
  578. package/docs/API/20-server/40-command/10-create.ts +39 -0
  579. package/docs/API/20-server/40-command/10-createArgument.ts +39 -0
  580. package/docs/API/20-server/40-command/10-createArrayOption.ts +36 -0
  581. package/docs/API/20-server/40-command/10-createBooleanOption.ts +28 -0
  582. package/docs/API/20-server/40-command/10-createOption.ts +46 -0
  583. package/docs/API/20-server/40-command/10-exec.ts +51 -0
  584. package/docs/API/20-server/40-command/10-execOptions.ts +30 -0
  585. package/docs/API/20-server/40-command/index.llms.md +32 -0
  586. package/docs/API/20-server/40-command/index.md +3 -0
  587. package/docs/API/20-server/index.md +3 -0
  588. package/docs/API/40-json-web-token/10-tokenHandler/10-createTokenHandler.ts +160 -0
  589. package/docs/API/40-json-web-token/10-tokenHandler/index.llms.md +8 -0
  590. package/docs/API/40-json-web-token/10-tokenHandler/index.md +3 -0
  591. package/docs/API/40-json-web-token/20-signer/10-createHS256.ts +24 -0
  592. package/docs/API/40-json-web-token/20-signer/10-createHS512.ts +24 -0
  593. package/docs/API/40-json-web-token/20-signer/10-createRS256.ts +28 -0
  594. package/docs/API/40-json-web-token/20-signer/10-createRS512.ts +28 -0
  595. package/docs/API/40-json-web-token/20-signer/10-factory.ts +29 -0
  596. package/docs/API/40-json-web-token/20-signer/index.llms.md +24 -0
  597. package/docs/API/40-json-web-token/20-signer/index.md +3 -0
  598. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP.ts +26 -0
  599. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP256.ts +26 -0
  600. package/docs/API/40-json-web-token/30-cipher/10-factory.ts +29 -0
  601. package/docs/API/40-json-web-token/30-cipher/index.llms.md +16 -0
  602. package/docs/API/40-json-web-token/30-cipher/index.md +3 -0
  603. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.decrypt.ts +17 -0
  604. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.encrypt.ts +11 -0
  605. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.generateInitializationVector.ts +9 -0
  606. package/docs/API/40-json-web-token/40-utils/10-HMAC.sign.ts +13 -0
  607. package/docs/API/40-json-web-token/40-utils/10-HMAC.verify.ts +11 -0
  608. package/docs/API/40-json-web-token/40-utils/10-RSA.sign.ts +14 -0
  609. package/docs/API/40-json-web-token/40-utils/10-RSA.verify.ts +13 -0
  610. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.decrypt.ts +13 -0
  611. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.encrypt.ts +10 -0
  612. package/docs/API/40-json-web-token/40-utils/10-decodeBase64.ts +9 -0
  613. package/docs/API/40-json-web-token/40-utils/10-decodeBase64Url.ts +9 -0
  614. package/docs/API/40-json-web-token/40-utils/10-decodeText.ts +9 -0
  615. package/docs/API/40-json-web-token/40-utils/10-encodeBase64.ts +9 -0
  616. package/docs/API/40-json-web-token/40-utils/10-encodeBase64Url.ts +9 -0
  617. package/docs/API/40-json-web-token/40-utils/10-encodeText.ts +9 -0
  618. package/docs/API/40-json-web-token/40-utils/10-isBase64Url.ts +11 -0
  619. package/docs/API/40-json-web-token/40-utils/10-jsonParse.ts +11 -0
  620. package/docs/API/40-json-web-token/40-utils/10-pemToBinary.ts +11 -0
  621. package/docs/API/40-json-web-token/40-utils/index.llms.md +76 -0
  622. package/docs/API/40-json-web-token/40-utils/index.md +3 -0
  623. package/docs/API/40-json-web-token/index.md +3 -0
  624. package/docs/API/50-form/10-vue/10-construction/10-createForm.ts +48 -0
  625. package/docs/API/50-form/10-vue/10-construction/10-createFormField.ts +66 -0
  626. package/docs/API/50-form/10-vue/10-construction/10-createGridTemplates.ts +39 -0
  627. package/docs/API/50-form/10-vue/10-construction/10-createInput.ts +46 -0
  628. package/docs/API/50-form/10-vue/10-construction/10-createTemplate.ts +36 -0
  629. package/docs/API/50-form/10-vue/10-construction/fixtures/AddressInput.vue +19 -0
  630. package/docs/API/50-form/10-vue/10-construction/index.llms.md +24 -0
  631. package/docs/API/50-form/10-vue/10-construction/index.md +3 -0
  632. package/docs/API/50-form/10-vue/20-layouts/10-useCheckLayout.ts +40 -0
  633. package/docs/API/50-form/10-vue/20-layouts/10-useDisabledLayout.ts +34 -0
  634. package/docs/API/50-form/10-vue/20-layouts/10-useMultiLayout.ts +32 -0
  635. package/docs/API/50-form/10-vue/20-layouts/10-useRepeatLayout.ts +34 -0
  636. package/docs/API/50-form/10-vue/20-layouts/10-useSectionLayout.ts +20 -0
  637. package/docs/API/50-form/10-vue/20-layouts/10-useSlotLayout.ts +37 -0
  638. package/docs/API/50-form/10-vue/20-layouts/10-useStepLayout.ts +31 -0
  639. package/docs/API/50-form/10-vue/20-layouts/10-useUnionLayout.ts +48 -0
  640. package/docs/API/50-form/10-vue/20-layouts/index.llms.md +36 -0
  641. package/docs/API/50-form/10-vue/20-layouts/index.md +3 -0
  642. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckbox.ts +13 -0
  643. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckboxPolicy.ts +18 -0
  644. package/docs/API/50-form/10-vue/30-designSystem/10-useDateInput.ts +20 -0
  645. package/docs/API/50-form/10-vue/30-designSystem/10-useDualRangeInput.ts +27 -0
  646. package/docs/API/50-form/10-vue/30-designSystem/10-useFileInput.ts +23 -0
  647. package/docs/API/50-form/10-vue/30-designSystem/10-useNumberInput.ts +18 -0
  648. package/docs/API/50-form/10-vue/30-designSystem/10-useRadioGroup.ts +31 -0
  649. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeDateInput.ts +23 -0
  650. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeInput.ts +18 -0
  651. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeTimeInput.ts +23 -0
  652. package/docs/API/50-form/10-vue/30-designSystem/10-useSelectInput.ts +31 -0
  653. package/docs/API/50-form/10-vue/30-designSystem/10-useTextInput.ts +14 -0
  654. package/docs/API/50-form/10-vue/30-designSystem/10-useTextareaInput.ts +14 -0
  655. package/docs/API/50-form/10-vue/30-designSystem/10-useTimeInput.ts +20 -0
  656. package/docs/API/50-form/10-vue/30-designSystem/20-components.md +11 -0
  657. package/docs/API/50-form/10-vue/30-designSystem/index.llms.md +65 -0
  658. package/docs/API/50-form/10-vue/30-designSystem/index.md +3 -0
  659. package/docs/API/50-form/10-vue/fixtures/templates.ts +20 -0
  660. package/docs/API/50-form/10-vue/index.md +3 -0
  661. package/docs/API/50-form/index.md +3 -0
  662. package/docs/API/60-playwright/10-construction/10-createComponent.ts +47 -0
  663. package/docs/API/60-playwright/10-construction/10-createComponentInteraction.ts +28 -0
  664. package/docs/API/60-playwright/10-construction/10-createPage.ts +34 -0
  665. package/docs/API/60-playwright/10-construction/10-createStepWrapper.ts +23 -0
  666. package/docs/API/60-playwright/10-construction/10-createWebsite.ts +57 -0
  667. package/docs/API/60-playwright/10-construction/10-initClient.ts +38 -0
  668. package/docs/API/60-playwright/10-construction/index.llms.md +28 -0
  669. package/docs/API/60-playwright/10-construction/index.md +3 -0
  670. package/docs/API/60-playwright/20-actions/10-check.ts +9 -0
  671. package/docs/API/60-playwright/20-actions/10-clear.ts +9 -0
  672. package/docs/API/60-playwright/20-actions/10-click.ts +9 -0
  673. package/docs/API/60-playwright/20-actions/10-dragTo.ts +10 -0
  674. package/docs/API/60-playwright/20-actions/10-extractContent.ts +10 -0
  675. package/docs/API/60-playwright/20-actions/10-fill.ts +9 -0
  676. package/docs/API/60-playwright/20-actions/10-focus.ts +9 -0
  677. package/docs/API/60-playwright/20-actions/10-forceClick.ts +10 -0
  678. package/docs/API/60-playwright/20-actions/10-hover.ts +9 -0
  679. package/docs/API/60-playwright/20-actions/10-press.ts +9 -0
  680. package/docs/API/60-playwright/20-actions/10-selectOption.ts +10 -0
  681. package/docs/API/60-playwright/20-actions/10-type.ts +10 -0
  682. package/docs/API/60-playwright/20-actions/10-uncheck.ts +9 -0
  683. package/docs/API/60-playwright/20-actions/10-withStep.ts +10 -0
  684. package/docs/API/60-playwright/20-actions/index.llms.md +60 -0
  685. package/docs/API/60-playwright/20-actions/index.md +3 -0
  686. package/docs/API/60-playwright/30-assertions/10-toBeBusy.ts +10 -0
  687. package/docs/API/60-playwright/30-assertions/10-toBeChecked.ts +9 -0
  688. package/docs/API/60-playwright/30-assertions/10-toBeDisabled.ts +9 -0
  689. package/docs/API/60-playwright/30-assertions/10-toBeEnabled.ts +9 -0
  690. package/docs/API/60-playwright/30-assertions/10-toBeHidden.ts +9 -0
  691. package/docs/API/60-playwright/30-assertions/10-toBeNotBusy.ts +10 -0
  692. package/docs/API/60-playwright/30-assertions/10-toBeVisible.ts +10 -0
  693. package/docs/API/60-playwright/30-assertions/10-toContainText.ts +9 -0
  694. package/docs/API/60-playwright/30-assertions/10-toHaveAttribute.ts +12 -0
  695. package/docs/API/60-playwright/30-assertions/10-toHaveClass.ts +9 -0
  696. package/docs/API/60-playwright/30-assertions/10-toHaveNoText.ts +10 -0
  697. package/docs/API/60-playwright/30-assertions/10-toHaveQuantity.ts +20 -0
  698. package/docs/API/60-playwright/30-assertions/10-toHaveText.ts +9 -0
  699. package/docs/API/60-playwright/30-assertions/10-toHaveValue.ts +9 -0
  700. package/docs/API/60-playwright/30-assertions/10-withStep.ts +10 -0
  701. package/docs/API/60-playwright/30-assertions/index.llms.md +64 -0
  702. package/docs/API/60-playwright/30-assertions/index.md +3 -0
  703. package/docs/API/60-playwright/fixtures/component.ts +44 -0
  704. package/docs/API/60-playwright/index.md +3 -0
  705. package/docs/API/index.md +3 -0
  706. package/docs/API.llms.md +135 -0
  707. package/docs/concepts/01-fundamental/01-constraint/01-use.ts +22 -0
  708. package/docs/concepts/01-fundamental/01-constraint/10-built-in-constraint.ts +37 -0
  709. package/docs/concepts/01-fundamental/01-constraint/20-manipulation.ts +41 -0
  710. package/docs/concepts/01-fundamental/01-constraint/30-cast.ts +66 -0
  711. package/docs/concepts/01-fundamental/01-constraint/40-custom-constraint.ts +45 -0
  712. package/docs/concepts/01-fundamental/01-constraint/index.md +3 -0
  713. package/docs/concepts/01-fundamental/02-currying/01-use.ts +38 -0
  714. package/docs/concepts/01-fundamental/02-currying/10-built-in-function.ts +190 -0
  715. package/docs/concepts/01-fundamental/02-currying/20-inner-pipe.ts +48 -0
  716. package/docs/concepts/01-fundamental/02-currying/30-async-pipe.ts +51 -0
  717. package/docs/concepts/01-fundamental/02-currying/index.md +3 -0
  718. package/docs/concepts/01-fundamental/03-either/01-use.ts +21 -0
  719. package/docs/concepts/01-fundamental/03-either/10-discrimination.ts +90 -0
  720. package/docs/concepts/01-fundamental/03-either/20-exhaustive-handling.ts +90 -0
  721. package/docs/concepts/01-fundamental/03-either/30-composition.ts +80 -0
  722. package/docs/concepts/01-fundamental/03-either/40-result-adaptation.ts +46 -0
  723. package/docs/concepts/01-fundamental/03-either/50-external-results.ts +72 -0
  724. package/docs/concepts/01-fundamental/03-either/60-contextual-state.ts +40 -0
  725. package/docs/concepts/01-fundamental/03-either/index.md +3 -0
  726. package/docs/concepts/01-fundamental/04-data-structure/01-use.ts +22 -0
  727. package/docs/concepts/01-fundamental/04-data-structure/10-structure.ts +244 -0
  728. package/docs/concepts/01-fundamental/04-data-structure/20-constraint.ts +86 -0
  729. package/docs/concepts/01-fundamental/04-data-structure/30-validation.ts +104 -0
  730. package/docs/concepts/01-fundamental/04-data-structure/40-codecs.ts +162 -0
  731. package/docs/concepts/01-fundamental/04-data-structure/50-recursive.ts +57 -0
  732. package/docs/concepts/01-fundamental/04-data-structure/60-interpret-error.ts +123 -0
  733. package/docs/concepts/01-fundamental/04-data-structure/index.md +3 -0
  734. package/docs/concepts/01-fundamental/05-chrono/01-use.ts +14 -0
  735. package/docs/concepts/01-fundamental/05-chrono/10-creation.ts +85 -0
  736. package/docs/concepts/01-fundamental/05-chrono/20-manipulation.ts +110 -0
  737. package/docs/concepts/01-fundamental/05-chrono/30-serialized.ts +89 -0
  738. package/docs/concepts/01-fundamental/05-chrono/40-timezone.ts +85 -0
  739. package/docs/concepts/01-fundamental/05-chrono/index.md +3 -0
  740. package/docs/concepts/01-fundamental/06-modeling/10-new-type.ts +42 -0
  741. package/docs/concepts/01-fundamental/06-modeling/20-entity.ts +191 -0
  742. package/docs/concepts/01-fundamental/06-modeling/30-tagged-object.ts +204 -0
  743. package/docs/concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts +272 -0
  744. package/docs/concepts/01-fundamental/06-modeling/50-evidence.ts +94 -0
  745. package/docs/concepts/01-fundamental/06-modeling/60-signed-function.ts +26 -0
  746. package/docs/concepts/01-fundamental/06-modeling/index.md +3 -0
  747. package/docs/concepts/01-fundamental/07-discrimination/10-entity.ts +136 -0
  748. package/docs/concepts/01-fundamental/07-discrimination/20-fact.ts +158 -0
  749. package/docs/concepts/01-fundamental/07-discrimination/30-tagged-object.ts +137 -0
  750. package/docs/concepts/01-fundamental/07-discrimination/40-error.ts +73 -0
  751. package/docs/concepts/01-fundamental/07-discrimination/50-literal.ts +106 -0
  752. package/docs/concepts/01-fundamental/07-discrimination/60-shape.ts +160 -0
  753. package/docs/concepts/01-fundamental/07-discrimination/70-predicate.ts +101 -0
  754. package/docs/concepts/01-fundamental/07-discrimination/index.md +3 -0
  755. package/docs/concepts/01-fundamental/08-kind/01-identity.md +7 -0
  756. package/docs/concepts/01-fundamental/08-kind/20-metadata.md +11 -0
  757. package/docs/concepts/01-fundamental/08-kind/30-transport.md +11 -0
  758. package/docs/concepts/01-fundamental/08-kind/index.md +3 -0
  759. package/docs/concepts/01-fundamental/index.md +1 -0
  760. package/docs/concepts/02-server/10-file/10-manipulation.ts +52 -0
  761. package/docs/concepts/02-server/10-file/20-path.ts +72 -0
  762. package/docs/concepts/02-server/10-file/index.md +3 -0
  763. package/docs/concepts/02-server/20-http/10-init.ts +23 -0
  764. package/docs/concepts/02-server/20-http/20-route.ts +182 -0
  765. package/docs/concepts/02-server/20-http/30-routine.ts +188 -0
  766. package/docs/concepts/02-server/20-http/40-jwt.ts +149 -0
  767. package/docs/concepts/02-server/20-http/50-open-api.ts +44 -0
  768. package/docs/concepts/02-server/20-http/index.md +3 -0
  769. package/docs/concepts/02-server/30-environment/10-platform.ts +47 -0
  770. package/docs/concepts/02-server/30-environment/20-variable.ts +47 -0
  771. package/docs/concepts/02-server/30-environment/index.md +3 -0
  772. package/docs/concepts/02-server/40-command/10-use.ts +112 -0
  773. package/docs/concepts/02-server/40-command/20-sub-command.ts +48 -0
  774. package/docs/concepts/02-server/40-command/index.md +3 -0
  775. package/docs/concepts/02-server/index.md +1 -0
  776. package/docs/concepts/03-client/10-http/10-init.ts +52 -0
  777. package/docs/concepts/03-client/10-http/20-request.ts +254 -0
  778. package/docs/concepts/03-client/10-http/30-hook.ts +139 -0
  779. package/docs/concepts/03-client/10-http/index.md +3 -0
  780. package/docs/concepts/03-client/20-form/10-init.ts +98 -0
  781. package/docs/concepts/03-client/20-form/20-input.ts +103 -0
  782. package/docs/concepts/03-client/20-form/30-layout.ts +155 -0
  783. package/docs/concepts/03-client/20-form/40-template.ts +94 -0
  784. package/docs/concepts/03-client/20-form/50-integration.md +11 -0
  785. package/docs/concepts/03-client/20-form/examples/postModeration/ThePage.vue +32 -0
  786. package/docs/concepts/03-client/20-form/examples/postModeration/usePostModeration.ts +80 -0
  787. package/docs/concepts/03-client/20-form/index.md +3 -0
  788. package/docs/concepts/03-client/index.md +1 -0
  789. package/docs/concepts/04-tests/01-unit/10-either.ts +136 -0
  790. package/docs/concepts/04-tests/01-unit/20-server-mocking.ts +53 -0
  791. package/docs/concepts/04-tests/01-unit/index.md +3 -0
  792. package/docs/concepts/04-tests/02-e2e/10-init.ts +80 -0
  793. package/docs/concepts/04-tests/02-e2e/20-architecture.ts +76 -0
  794. package/docs/concepts/04-tests/02-e2e/30-testing.ts +90 -0
  795. package/docs/concepts/04-tests/02-e2e/index.md +3 -0
  796. package/docs/concepts/04-tests/index.md +1 -0
  797. package/docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md +44 -0
  798. package/docs/concepts/05-type-driven-design/01-architecture/index.md +3 -0
  799. package/docs/concepts/05-type-driven-design/02-domains/10-entities.md +50 -0
  800. package/docs/concepts/05-type-driven-design/02-domains/20-aggregates.md +65 -0
  801. package/docs/concepts/05-type-driven-design/02-domains/30-repositories.md +35 -0
  802. package/docs/concepts/05-type-driven-design/02-domains/40-refinements.md +30 -0
  803. package/docs/concepts/05-type-driven-design/02-domains/index.md +3 -0
  804. package/docs/concepts/05-type-driven-design/03-applications/10-use-case.md +62 -0
  805. package/docs/concepts/05-type-driven-design/03-applications/20-ports.md +49 -0
  806. package/docs/concepts/05-type-driven-design/03-applications/index.md +3 -0
  807. package/docs/concepts/05-type-driven-design/04-infrastructure/10-implementation.md +47 -0
  808. package/docs/concepts/05-type-driven-design/04-infrastructure/index.md +3 -0
  809. package/docs/concepts/05-type-driven-design/fixtures/business/applications/index.ts +2 -0
  810. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/book.ts +10 -0
  811. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/client.ts +10 -0
  812. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/email.ts +7 -0
  813. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/index.ts +4 -0
  814. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/waitingListEntry.ts +17 -0
  815. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientGiveBackBook.ts +45 -0
  816. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientRentBook.ts +31 -0
  817. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/createBook.ts +32 -0
  818. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/index.ts +4 -0
  819. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/withdrawBook.ts +32 -0
  820. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientGiveBackBook.ts +74 -0
  821. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientRentBook.ts +42 -0
  822. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/createBook.ts +33 -0
  823. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/index.ts +4 -0
  824. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/withdrawBook.ts +37 -0
  825. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/create.ts +33 -0
  826. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/index.ts +5 -0
  827. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/rental.ts +31 -0
  828. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/reserve.ts +37 -0
  829. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/returnBook.ts +32 -0
  830. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/withdraw.ts +21 -0
  831. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/index.ts +118 -0
  832. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/giveBackBook.ts +35 -0
  833. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/index.ts +2 -0
  834. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/rentBook.ts +32 -0
  835. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/index.ts +59 -0
  836. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/index.ts +3 -0
  837. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/cancel.ts +26 -0
  838. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/create.ts +33 -0
  839. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/index.ts +3 -0
  840. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/prepare.ts +23 -0
  841. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/index.ts +79 -0
  842. package/docs/concepts/05-type-driven-design/fixtures/business/domains/index.ts +4 -0
  843. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/index.ts +1 -0
  844. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/refineLinkBetweenClientAndBorrowedBook.ts +34 -0
  845. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/book.ts +16 -0
  846. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/client.ts +7 -0
  847. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/email.ts +12 -0
  848. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/index.ts +4 -0
  849. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/waitingListEntry.ts +19 -0
  850. package/docs/concepts/05-type-driven-design/fixtures/business/index.ts +2 -0
  851. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/clientRentBook.ts +62 -0
  852. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/index.ts +11 -0
  853. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/bookExist.ts +19 -0
  854. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/clientExist.ts +19 -0
  855. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/index.ts +2 -0
  856. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/main.ts +19 -0
  857. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientGiveBackBook.ts +46 -0
  858. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientRentBook.ts +45 -0
  859. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/index.ts +2 -0
  860. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/book.ts +25 -0
  861. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/client.ts +7 -0
  862. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/email.ts +10 -0
  863. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/index.ts +4 -0
  864. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/waitingListEntry.ts +17 -0
  865. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/useCases/index.ts +13 -0
  866. package/docs/concepts/05-type-driven-design/index.md +3 -0
  867. package/docs/concepts.llms.md +521 -0
  868. package/instructions/coding-conventions.md +8 -0
  869. package/package.json +99 -3
  870. package/skills/command/SKILL.md +63 -0
  871. package/skills/command/references/examples/cli.ts +22 -0
  872. package/skills/command/references/examples/options-only.ts +27 -0
  873. package/skills/command/references/examples/preview-command.ts +57 -0
  874. package/skills/command/references/execution.md +31 -0
  875. package/skills/command/references/inputs.md +27 -0
  876. package/skills/fundamental/SKILL.md +80 -0
  877. package/skills/fundamental/references/composition.md +19 -0
  878. package/skills/fundamental/references/constraints-and-validation.md +24 -0
  879. package/skills/fundamental/references/examples/async-composition.ts +15 -0
  880. package/skills/fundamental/references/examples/cast.ts +18 -0
  881. package/skills/fundamental/references/examples/composition.ts +40 -0
  882. package/skills/fundamental/references/examples/environment-initialization.ts +19 -0
  883. package/skills/fundamental/references/examples/error-propagation.ts +24 -0
  884. package/skills/fundamental/references/examples/generic-inference.ts +31 -0
  885. package/skills/fundamental/references/examples/guaranteed-array-access.ts +31 -0
  886. package/skills/fundamental/references/examples/independent-inputs.ts +18 -0
  887. package/skills/fundamental/references/examples/infer.ts +21 -0
  888. package/skills/fundamental/references/examples/input-validation.ts +37 -0
  889. package/skills/fundamental/references/examples/iterations.ts +112 -0
  890. package/skills/fundamental/references/examples/result-selection.ts +65 -0
  891. package/skills/fundamental/references/examples/safe-declarations.ts +25 -0
  892. package/skills/fundamental/references/iterations.md +24 -0
  893. package/skills/fundamental/references/results-and-errors.md +34 -0
  894. package/skills/http-client/SKILL.md +50 -0
  895. package/skills/http-client/references/configuration.md +11 -0
  896. package/skills/http-client/references/examples/client-expectations.ts +85 -0
  897. package/skills/http-client/references/examples/client-streams.ts +74 -0
  898. package/skills/http-client/references/examples/external-client.ts +78 -0
  899. package/skills/http-client/references/hooks.md +7 -0
  900. package/skills/http-client/references/responses.md +39 -0
  901. package/skills/http-client/references/streams.md +10 -0
  902. package/skills/http-server/SKILL.md +61 -0
  903. package/skills/http-server/references/examples/authentication.ts +42 -0
  904. package/skills/http-server/references/examples/contracts.ts +19 -0
  905. package/skills/http-server/references/examples/inferred-client.ts +54 -0
  906. package/skills/http-server/references/examples/initialize.ts +29 -0
  907. package/skills/http-server/references/examples/minimal-route.ts +17 -0
  908. package/skills/http-server/references/examples/protected-route.ts +29 -0
  909. package/skills/http-server/references/examples/rename-user-route.ts +52 -0
  910. package/skills/http-server/references/examples/user-checker.ts +26 -0
  911. package/skills/http-server/references/examples/user-route.ts +45 -0
  912. package/skills/http-server/references/initialization.md +33 -0
  913. package/skills/http-server/references/reusable-flows.md +40 -0
  914. package/skills/http-server/references/routes-and-floor.md +46 -0
  915. package/skills/modeling/SKILL.md +76 -0
  916. package/skills/modeling/references/domain.md +33 -0
  917. package/skills/modeling/references/orchestration.md +36 -0
  918. package/skills/server/SKILL.md +55 -0
  919. package/skills/server/references/environment.md +30 -0
  920. package/skills/server/references/examples/environment.ts +41 -0
  921. package/skills/server/references/examples/file-structure.ts +26 -0
  922. package/skills/server/references/examples/files.ts +52 -0
  923. package/skills/server/references/files.md +38 -0
  924. package/skills/server/references/structures.md +15 -0
  925. package/skills/test/SKILL.md +70 -0
  926. package/skills/test/references/examples/results.ts +95 -0
  927. package/skills/test/references/examples/server.ts +59 -0
  928. package/skills/test/references/results.md +21 -0
  929. package/skills/test/references/server.md +17 -0
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: duplojs-http-server
3
+ description: "Créer ou modifier une API HTTP DuploJS : routes, validation des requêtes, vérifications réutilisables et configuration du serveur."
4
+ ---
5
+
6
+ # Serveur HTTP 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
+ ## Construire le flux d'une route
21
+
22
+ Partir de la route concernée, de ses entrées et de ses réponses attendues. Reprendre le builder de sa famille dans le projet : il peut déjà porter des préconditions communes. Pour une route sans politique commune, utiliser `useRouteBuilder`.
23
+
24
+ Une route enchaîne des étapes qui enrichissent un contexte typé, le **floor**. Chaque étape reçoit les données garanties par les précédentes. Une réponse termine le flux ; dans un `cut`, `output(...)` enrichit le floor et permet de continuer.
25
+
26
+ 1. Déclarer les entrées avec `.extract` et les data structures du contrat. L'extraction les valide avant de poursuivre.
27
+ 2. Préparer les préconditions et traiter les refus dans les étapes précédant le handler. Un `.cut` convient à une adaptation propre au scénario courant ; reprendre les traitements réutilisables existants lorsqu'ils portent la même responsabilité.
28
+ 3. Terminer avec `.handler`. Son callback retourne la réponse HTTP avec l'outil `response` disponible dans son second argument.
29
+
30
+ Pour créer une route ou modifier ses extractions et étapes, lire [Routes et floor](references/routes-and-floor.md). La [route minimale](references/examples/minimal-route.ts) montre validation et réponse sans dépendance applicative ; la [route de modification](references/examples/rename-user-route.ts) adapte un résultat applicatif en amont du handler.
31
+
32
+ ## Raccorder l'application
33
+
34
+ La route est un point d'entrée d'infrastructure : elle adapte les données validées aux capacités de l'application, appelle les traitements prévus et traduit leurs résultats vers HTTP. Elle peut établir une précondition avec une qualification du domaine. L'orchestration métier et les transitions restent dans leurs couches ; ne pas les réimplémenter dans les steps.
35
+
36
+ Traduire les résultats attendus en réponses HTTP avec les outils `Either`. Les fonctions réutilisables conservent leurs échecs typés ; la route choisit la réponse à envoyer au client.
37
+
38
+ Si la tâche raccorde un domaine existant ou modifie une responsabilité métier, appliquer le skill `duplojs-modeling` lorsqu'il est installé, ou lire `docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md`.
39
+
40
+ ## Réutiliser au niveau approprié
41
+
42
+ | Ce qui doit être réutilisé | Mécanisme |
43
+ | --- | --- |
44
+ | Une opération avec plusieurs résultats, interprétés différemment selon la route | Checker créé par `useCheckerBuilder`, appelé avec `.check`. |
45
+ | La sélection d'un résultat de checker et sa réponse HTTP d'échec | Preset créé par `createPresetChecker`, appelé avec `.presetCheck`. |
46
+ | Une séquence d'étapes et les données qu'elle garantit | Process créé par `useProcessBuilder`, appelé avec `.exec`. |
47
+ | Des processus appliqués avant chaque route d'une famille | `usePreflightBuilder`, puis sa fonction `useRouteBuilder`. |
48
+
49
+ Quand l'un de ces besoins apparaît, lire [Checkers, processus et builders communs](references/reusable-flows.md) avant de l'assembler. Éviter de recopier des `cut` portant la même opération et la même réponse. L'[exemple de preflight](references/examples/authentication.ts) et la [route protégée](references/examples/protected-route.ts) montrent comment transmettre les garanties d'une séquence commune.
50
+
51
+ ## Assembler et démarrer le serveur
52
+
53
+ Le `Hub` rassemble les routes, les plugins et leur cycle de vie indépendamment du runtime. Créer le Hub avec `createHub`, ajouter les plugins avec `.plug` et les routes avec `.register`, puis appeler le connecteur de l'environnement. Sur Node, utiliser `createHttpServer` depuis `@duplojs/http/node`.
54
+
55
+ Au démarrage, valider la configuration avec `DSCommon.environmentVariableOrThrow` depuis `@duplojs/server/common`, puis fournir les valeurs au Hub et au connecteur. Pour les sources d'environnement et les interactions système, consulter `duplojs-server` ou les concepts serveur du routeur.
56
+
57
+ Si la tâche touche le démarrage ou l'enregistrement des routes, lire [Initialisation et enregistrement](references/initialization.md) et l'[exemple minimal](references/examples/initialize.ts). Avec `routeStore.getAll()`, importer d'abord les modules de routes : le store collecte les déclarations finalisées par `.handler`, sans découvrir ni importer leurs fichiers.
58
+
59
+ ## Vérifier le flux exposé
60
+
61
+ Exécuter le typage et les vérifications du projet. Vérifier que la route est effectivement enregistrée, qu'une entrée invalide est refusée et que chaque issue concernée produit le statut, l'information et le body attendus. Vérifier aussi qu'un refus arrête les étapes dépendantes.
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @title Équiper une famille de routes d'un processus commun.
3
+ *
4
+ * Le preflight exporte une fonction qui crée des routes avec authentification.
5
+ */
6
+ import { useCheckerBuilder, usePreflightBuilder, useProcessBuilder } from "@duplojs/http";
7
+ import * as DDataStructure from "@duplojs/lang/dataStructure";
8
+ import * as DEither from "@duplojs/lang/either";
9
+ import { type User } from "./contracts";
10
+
11
+ // La politique de vérification est fournie par l'application.
12
+ declare function authenticateToken(token: string): Promise<DEither.Success<User> | DEither.Fail>;
13
+
14
+ const tokenChecker = useCheckerBuilder()
15
+ .handler(async(token: string, { output }) => {
16
+ const result = await authenticateToken(token);
17
+
18
+ return DEither.whenIsRightOtherwise(
19
+ result,
20
+ (user) => output("token.valid", user),
21
+ () => output("token.invalid", null),
22
+ );
23
+ });
24
+
25
+ export const authenticationProcess = useProcessBuilder()
26
+ .extract({
27
+ headers: {
28
+ authorization: DDataStructure.string(),
29
+ },
30
+ })
31
+ .check(tokenChecker, {
32
+ input: ({ authorization }) => authorization,
33
+ result: "token.valid",
34
+ otherwise: ({ response }) => response.unauthorized("authentication.invalid"),
35
+ indexing: "user",
36
+ })
37
+ // authorization reste interne au process ; seul user est exposé.
38
+ .exports(["user"]);
39
+
40
+ export const useAuthenticatedRouteBuilder = usePreflightBuilder()
41
+ .exec(authenticationProcess, { imports: ["user"] })
42
+ .useRouteBuilder;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @title Définir les contrats partagés des exemples HTTP.
3
+ *
4
+ * Les routes partagent leurs schémas sans dépendre d'une génération de SDK.
5
+ */
6
+ import * as DDataStructure from "@duplojs/lang/dataStructure";
7
+
8
+ export const userStructure = DDataStructure.object({
9
+ id: DDataStructure.string([DDataStructure.uuid()]),
10
+ name: DDataStructure.string([DDataStructure.minCharacters(3)]),
11
+ });
12
+
13
+ export type User = DDataStructure.StructureValue<typeof userStructure>;
14
+
15
+ export const renameUserBody = DDataStructure.object({
16
+ name: DDataStructure.string([DDataStructure.minCharacters(3)]),
17
+ });
18
+
19
+ export type RenameUserBody = DDataStructure.StructureValue<typeof renameUserBody>;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @title Partager les types d'une route avec un client HTTP.
3
+ *
4
+ * Créer un client dont les requêtes et les réponses suivent la définition des routes serveur.
5
+ */
6
+ import { type RouteDeclarationToContract } from "@duplojs/http";
7
+ import { createHttpClient } from "@duplojs/http/client";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+ import { type renameUserRoute } from "./rename-user-route";
10
+ import { type RenameUserBody, type User } from "./contracts";
11
+
12
+ // Ces imports de type n'exécutent pas les modules du serveur.
13
+ type Routes = RouteDeclarationToContract<typeof renameUserRoute>;
14
+
15
+ type _CheckResponses = DCommon.ExpectType<
16
+ Routes["responses"],
17
+ | {
18
+ readonly code: "422";
19
+ readonly information: "extract-error";
20
+ readonly body: string;
21
+ }
22
+ | {
23
+ readonly code: "404";
24
+ readonly information: "user.notFound";
25
+ readonly body: undefined;
26
+ }
27
+ | {
28
+ readonly code: "409";
29
+ readonly information: "user.renameDenied";
30
+ readonly body: undefined;
31
+ }
32
+ | {
33
+ readonly code: "200";
34
+ readonly information: "user.renamed";
35
+ readonly body: User;
36
+ },
37
+ "strict"
38
+ >;
39
+
40
+ const client = createHttpClient<Routes>({
41
+ baseUrl: "https://duplo-api.example.com",
42
+ });
43
+
44
+ export function renameUserRemotely(userId: User["id"], body: RenameUserBody) {
45
+ return client.patch("/users/{userId}", {
46
+ params: { userId },
47
+ body,
48
+ }).toEitherByInformation({
49
+ "extract-error": false,
50
+ "user.notFound": false,
51
+ "user.renameDenied": false,
52
+ "user.renamed": true,
53
+ });
54
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @title Assembler le Hub et le connecteur de l'environnement.
3
+ *
4
+ * Exécuter les déclarations de routes avant de consommer le store global.
5
+ */
6
+ import "./minimal-route";
7
+ import { createHub, routeStore } from "@duplojs/http";
8
+ import { createHttpServer } from "@duplojs/http/node";
9
+ import * as DSCommon from "@duplojs/server/common";
10
+ import * as DDataStructure from "@duplojs/lang/dataStructure";
11
+
12
+ // Une configuration invalide arrête l'initialisation avant l'écoute HTTP.
13
+ const environment = await DSCommon.environmentVariableOrThrow({
14
+ ENVIRONMENT: DDataStructure.literal(["DEV", "PROD"]),
15
+ HOST: DDataStructure.literal(["localhost", "127.0.0.1", "0.0.0.0"]),
16
+ PORT: DDataStructure.number([
17
+ DDataStructure.integer(),
18
+ DDataStructure.greaterThanOrEqual(1),
19
+ DDataStructure.lessThanOrEqual(65535),
20
+ ]),
21
+ });
22
+
23
+ const hub = createHub({ environment: environment.ENVIRONMENT })
24
+ .register(routeStore.getAll());
25
+
26
+ await createHttpServer(hub, {
27
+ host: environment.HOST,
28
+ port: environment.PORT,
29
+ });
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @title Valider une entrée et répondre sans dépendance applicative.
3
+ *
4
+ * Cette route autonome sert au démarrage minimal du serveur.
5
+ */
6
+ import { useRouteBuilder } from "@duplojs/http";
7
+ import * as DDataStructure from "@duplojs/lang/dataStructure";
8
+
9
+ export const helloRoute = useRouteBuilder("GET", "/hello")
10
+ .extract({
11
+ query: {
12
+ name: DDataStructure.string([DDataStructure.minCharacters(1)]),
13
+ },
14
+ })
15
+ .handler(
16
+ ({ name }, { response }) => response.ok("hello.received", name),
17
+ );
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @title Consommer les garanties d'un processus d'authentification.
3
+ *
4
+ * Comparer son application commune par preflight et son exécution locale.
5
+ */
6
+ import { useRouteBuilder } from "@duplojs/http";
7
+ import type * as DCommon from "@duplojs/lang/common";
8
+ import { authenticationProcess, useAuthenticatedRouteBuilder } from "./authentication";
9
+ import { type User } from "./contracts";
10
+
11
+ export const profileRoute = useAuthenticatedRouteBuilder("GET", "/profile")
12
+ .handler(
13
+ (floor, { response }) => {
14
+ type _CheckFloor = DCommon.ExpectType<
15
+ typeof floor,
16
+ { user: User },
17
+ "strict"
18
+ >;
19
+
20
+ return response.ok("profile.read", floor.user);
21
+ },
22
+ );
23
+
24
+ // Alternative lorsque le processus est propre à cette route.
25
+ export const explicitAuthenticationRoute = useRouteBuilder("GET", "/session")
26
+ .exec(authenticationProcess, { imports: ["user"] })
27
+ .handler(
28
+ ({ user }, { response }) => response.ok("session.read", user),
29
+ );
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @title Adapter les résultats d'un scénario applicatif.
3
+ *
4
+ * Un preset résout la ressource ; un cut traite l'issue propre à la modification.
5
+ */
6
+ import { useRouteBuilder } from "@duplojs/http";
7
+ import * as DDataStructure from "@duplojs/lang/dataStructure";
8
+ import * as DEither from "@duplojs/lang/either";
9
+ import type * as DCommon from "@duplojs/lang/common";
10
+ import { renameUserBody, type RenameUserBody, type User } from "./contracts";
11
+ import { iWantUserExist } from "./user-checker";
12
+
13
+ // Use case résolu dans l'infrastructure ; il porte la règle de modification.
14
+ declare function renameUser(user: User, body: RenameUserBody): Promise<
15
+ DEither.Right<"user-renamed", User> | DEither.Left<"rename-denied", undefined>
16
+ >;
17
+
18
+ export const renameUserRoute = useRouteBuilder("PATCH", "/users/{userId}")
19
+ .extract({
20
+ params: {
21
+ userId: DDataStructure.string([DDataStructure.uuid()]),
22
+ },
23
+ // Une structure sur la source conserve floor.body.
24
+ body: renameUserBody,
25
+ })
26
+ .presetCheck(iWantUserExist.indexing("user"), ({ userId }) => userId)
27
+ .cut(
28
+ async({ user, body }, { response, output }) => {
29
+ const result = await renameUser(user, body);
30
+
31
+ return DEither.matchInformation(result, {
32
+ "user-renamed": (updatedUser) => output({ updatedUser }),
33
+ "rename-denied": () => response.conflict("user.renameDenied"),
34
+ });
35
+ },
36
+ )
37
+ .handler(
38
+ (floor, { response }) => {
39
+ type _CheckFloor = DCommon.ExpectType<
40
+ typeof floor,
41
+ {
42
+ userId: User["id"];
43
+ body: RenameUserBody;
44
+ user: User;
45
+ updatedUser: User;
46
+ },
47
+ "strict"
48
+ >;
49
+
50
+ return response.ok("user.renamed", floor.updatedUser);
51
+ },
52
+ );
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @title Séparer une recherche réutilisable et son interprétation HTTP.
3
+ *
4
+ * Un preset fixe le résultat attendu et la réponse d'absence du checker.
5
+ */
6
+ import { createPresetChecker, useCheckerBuilder } from "@duplojs/http";
7
+ import * as DEither from "@duplojs/lang/either";
8
+ import { type User } from "./contracts";
9
+
10
+ // Capacité fournie par l'application ; son absence reste un résultat typé.
11
+ declare function findUser(id: User["id"]): Promise<DEither.Maybe<User>>;
12
+
13
+ export const userExist = useCheckerBuilder()
14
+ .handler(async(id: User["id"], { output }) => {
15
+ const result = await findUser(id);
16
+
17
+ return DEither.matchInformation(result, {
18
+ some: (user) => output("user.found", user),
19
+ none: () => output("user.notFound", null),
20
+ });
21
+ });
22
+
23
+ export const iWantUserExist = createPresetChecker(userExist, {
24
+ result: "user.found",
25
+ otherwise: ({ response }) => response.notFound("user.notFound"),
26
+ });
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @title Valider une entrée puis interpréter un checker dans une route.
3
+ *
4
+ * L'extraction et l'indexation du résultat enrichissent le floor du handler.
5
+ */
6
+ import { useRouteBuilder } from "@duplojs/http";
7
+ import * as DDataStructure from "@duplojs/lang/dataStructure";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+ import { type User } from "./contracts";
10
+ import { userExist } from "./user-checker";
11
+
12
+ export const userRoute = useRouteBuilder("GET", "/users/{userId}")
13
+ .extract({
14
+ params: {
15
+ userId: DDataStructure.string([DDataStructure.uuid()]),
16
+ },
17
+ })
18
+ .check(userExist, {
19
+ input: ({ userId }) => userId,
20
+ result: "user.found",
21
+ otherwise: ({ response, result }) => {
22
+ type _CheckRejectedResult = DCommon.ExpectType<
23
+ typeof result.information,
24
+ "user.notFound",
25
+ "strict"
26
+ >;
27
+
28
+ return response.notFound("user.notFound");
29
+ },
30
+ indexing: "user",
31
+ })
32
+ .handler(
33
+ (floor, { response }) => {
34
+ type _CheckFloor = DCommon.ExpectType<
35
+ typeof floor,
36
+ {
37
+ userId: User["id"];
38
+ user: User;
39
+ },
40
+ "strict"
41
+ >;
42
+
43
+ return response.ok("user.read", floor.user);
44
+ },
45
+ );
@@ -0,0 +1,33 @@
1
+ # Initialiser et enregistrer les routes
2
+
3
+ ## Hub et connecteur
4
+
5
+ Le `Hub` décrit l'application HTTP sans dépendre de son serveur natif. Il rassemble les routes et les capacités ajoutées par les plugins. `.plug(...)` ajoute un plugin ; `.register(...)` enregistre une route, un ensemble itérable ou un objet de routes.
6
+
7
+ Le connecteur fournit l'exécution propre au runtime et lance le cycle de vie du Hub. Choisir celui adapté à l'environnement et vérifier son export public dans la documentation. L'[exemple d'initialisation sur Node](examples/initialize.ts) utilise `createHttpServer` depuis `@duplojs/http/node`.
8
+
9
+ Il charge uniquement une [route autonome](examples/minimal-route.ts) : `GET /hello?name=Alice` valide le nom et le renvoie dans la réponse. Après configuration de l'environnement, cet exemple peut s'exécuter sans capacité applicative à implémenter. Ajouter ensuite les modules du projet selon le besoin.
10
+
11
+ Conserver cette initialisation au point d'entrée. Les modules de routes déclarent les flux et les traitements ; ils ne démarrent pas chacun un serveur.
12
+
13
+ ## Charger la configuration d'environnement
14
+
15
+ Récupérer et valider les variables d'environnement au démarrage avec `DSCommon.environmentVariableOrThrow`, depuis `@duplojs/server/common`. Décrire leur contrat avec les data structures, puis transmettre les valeurs typées au Hub et au connecteur.
16
+
17
+ L'[exemple d'initialisation](examples/initialize.ts) utilise ainsi `ENVIRONMENT` pour configurer le Hub, puis `HOST` et `PORT` pour démarrer le serveur. Une variable absente ou invalide interrompt l'initialisation avant l'écoute HTTP : cette utilisation de `OrThrow` concerne la configuration au démarrage. Pour charger aussi des fichiers d'environnement, consulter les options de cette fonction dans la documentation conceptuelle.
18
+
19
+ ## Utiliser le route store
20
+
21
+ Une déclaration achevée par `.handler(...)` construit une route et l'ajoute au store global. Importer les modules qui exécutent ces déclarations, puis enregistrer `routeStore.getAll()` sur le Hub.
22
+
23
+ L'ordre est essentiel : `.register` consomme les routes présentes à ce moment-là. Le store ne parcourt aucun dossier et n'enregistre pas automatiquement les routes qui seraient déclarées plus tard dans le Hub déjà construit. Un import de type n'exécute pas le module.
24
+
25
+ Un builder inachevé n'est pas une route enregistrée. Une route marquée `IgnoreByRouteStoreMetadata` est volontairement exclue de cette collecte ; elle peut être enregistrée explicitement si nécessaire.
26
+
27
+ Le store est global : lorsqu'une application contient plusieurs Hubs qui doivent avoir des ensembles distincts de routes, préférer un enregistrement explicite de ces ensembles plutôt qu'une collecte globale indifférenciée.
28
+
29
+ ## Ajouter un plugin
30
+
31
+ Brancher le plugin sur le Hub avant d'appeler le connecteur. Les paramètres et les effets relèvent du plugin choisi ; les rechercher depuis `docs/concepts.llms.md`.
32
+
33
+ Pour approfondir, rechercher l'initialisation HTTP dans le routeur conceptuel du package AgentKit.
@@ -0,0 +1,40 @@
1
+ # Checkers, processus et builders communs
2
+
3
+ ## Checker : réutiliser l'opération
4
+
5
+ Un checker encapsule une opération avec un input et des résultats nommés. Le créer avec `useCheckerBuilder().handler(...)` et retourner les résultats avec `output(information, value)`. Il peut adapter les `Either` d'un repository ou d'une capacité applicative ; il ne choisit pas leur statut HTTP.
6
+
7
+ Voir [le checker de recherche d'utilisateur](examples/user-checker.ts). Sa capacité de recherche est déclarée avec `declare function` et doit être raccordée à l'application avant exécution. Pour l'utiliser avec `.check(...)`, fournir :
8
+
9
+ - `input` : calcul de l'argument depuis le floor courant ;
10
+ - `result` : information du résultat permettant de continuer ;
11
+ - `otherwise` : callback retournant la réponse si le résultat attendu n'est pas obtenu ; il reçoit `response`, le `floor` courant et le `result` excluant les issues sélectionnées ;
12
+ - `indexing` : clé sous laquelle ajouter la valeur retenue au floor, si elle doit être réutilisée.
13
+
14
+ L'[exemple de lecture](examples/user-route.ts) interprète ainsi un checker pour une route. Le résultat sélectionné est garanti aux étapes suivantes ; l'autre résultat termine le flux avec la réponse retournée par `otherwise`.
15
+
16
+ ## Preset : réutiliser l'interprétation HTTP
17
+
18
+ Quand une opération attend toujours le même résultat et produit la même réponse sinon, nommer cette politique avec `createPresetChecker`. Le checker reste réutilisable avec d'autres interprétations ; le preset fixe son usage récurrent. Son callback `otherwise` reçoit `response` et le `result` non retenu, sans floor appelant.
19
+
20
+ Appliquer ensuite `.presetCheck(...)`, fournir l'input depuis le floor et choisir une indexation locale avec `.indexing(...)`. L'[exemple de modification](examples/rename-user-route.ts) réutilise le preset défini dans [le module du checker](examples/user-checker.ts).
21
+
22
+ Ne pas répéter des `cut` pour rechercher la même ressource et renvoyer la même réponse d'absence. Utiliser un checker pour l'opération et un preset pour cette politique commune.
23
+
24
+ ## Process : réutiliser une séquence
25
+
26
+ Créer un process avec `useProcessBuilder()`, enchaîner ses étapes, puis le finaliser avec `.exports(...)`. Son floor est local : les données de la route appelante ne deviennent pas implicitement son contexte, et toutes ses données internes ne deviennent pas le floor de la route.
27
+
28
+ Déclarer les clés exposées avec `.exports([ ... ])`. Au point d'appel, `.exec(process, { imports: [ ... ] })` récupère les clés nécessaires parmi ces exports. Utiliser les options du process si son comportement doit être paramétré ; consulter les signatures pour leur passage depuis le floor appelant.
29
+
30
+ Voir [le process d'authentification](examples/authentication.ts) et son [exécution explicite dans une route](examples/protected-route.ts). La vérification du token est un contrat déclaré à implémenter selon la politique de sécurité du projet. Le process peut lui-même produire une réponse qui arrête le traitement. Son export décrit uniquement ce que la suite peut récupérer après réussite.
31
+
32
+ ## Preflight : préparer une famille de routes
33
+
34
+ Pour appliquer systématiquement un ou plusieurs processus avant les étapes propres à chaque route, partir de `usePreflightBuilder()`. Ajouter les processus avec `.exec(...)`, en précisant les imports, puis exposer sa fonction `.useRouteBuilder` sous un nom reflétant la politique commune.
35
+
36
+ L'[exemple d'authentification](examples/authentication.ts) expose `useAuthenticatedRouteBuilder`. Cette fonction crée une route équipée du preflight ; chaque route construite avec elle dispose de l'utilisateur garanti dans son floor. Les vérifications du process passent avant ses propres extractions et traitements.
37
+
38
+ Utiliser ce builder pour toutes les routes de la famille concernée. Voir [une route protégée](examples/protected-route.ts). Une route qui appelle directement le builder de base ne reçoit pas automatiquement la politique du builder personnalisé.
39
+
40
+ Pour approfondir, rechercher les routines HTTP dans `docs/concepts.llms.md`. Consulter les ressources de sécurité du projet pour l'implémentation de vérification des tokens ; le builder assemble cette vérification et ne définit pas lui-même sa politique cryptographique.
@@ -0,0 +1,46 @@
1
+ # Construire une route et suivre son floor
2
+
3
+ ## Décrire les entrées
4
+
5
+ Commencer avec le builder de la famille de routes concernée. Pour une route sans préfixe commun, utiliser `useRouteBuilder`. `.extract(...)` décrit les sources attendues avec les data structures et leurs contraintes. Réutiliser les structures partagées du projet lorsqu'elles portent le même contrat.
6
+
7
+ L'extraction vérifie la donnée avant de poursuivre. Une entrée invalide appelle le callback d'échec du Hub, qui retourne par défaut `422 / extract-error` avec l'erreur en body. Pour adapter ce refus à une étape, passer un callback en second argument de `.extract` : il reçoit `response`, le `floor` courant et `dataStructureError`. Ne pas ajouter de parsing manuel ou de variante `OrThrow` dans les étapes suivantes.
8
+
9
+ Le placement dans le floor dépend de la forme déclarée :
10
+
11
+ - Une source décrite directement par une structure conserve sa clé de source : une structure sur `body` produit `floor.body`.
12
+ - Une source décrite par un objet de structures ajoute chaque propriété au floor : un objet sous `params` contenant `userId` produit `floor.userId`.
13
+
14
+ Voir [la route autonome](examples/minimal-route.ts) pour une extraction par propriété. Les exemples de [récupération](examples/user-route.ts) et de [modification d'une ressource](examples/rename-user-route.ts) montrent ensuite le raccordement applicatif et un body conservé sous sa clé. Leurs capacités déclarées avec `declare function` sont des contrats à remplacer par les implémentations du projet avant exécution.
15
+
16
+ ## Enrichir le floor
17
+
18
+ Chaque étape reçoit le floor courant en premier argument. Les vérifications réussies peuvent y ajouter leur résultat sous la clé `indexing` ; un `cut` ajoute ou remplace les clés fournies à `output`. Le typage de l'étape suivante reflète ces garanties. Choisir les clés intentionnellement pour éviter d'écraser une donnée encore nécessaire.
19
+
20
+ Ne pas accéder manuellement à la requête brute pour récupérer une valeur que l'extraction ou une étape précédente garantit déjà. Ne pas ajouter de garde pour une absence exclue du type.
21
+
22
+ ## Adapter un scénario avec `cut`
23
+
24
+ Utiliser `cut` pour une opération spécifique au flux courant : qualification métier nécessaire à ce scénario, appel applicatif avec adaptation de ses résultats ou préparation particulière.
25
+
26
+ Le callback de `.cut` reçoit le floor et les outils `response` et `output`. Retourner une réponse, par exemple `response.conflict(information)`, pour arrêter la route, ou `output(...)` pour enrichir le floor et poursuivre. Ne pas retourner une valeur brute en espérant enrichir le floor.
27
+
28
+ L'[exemple de modification](examples/rename-user-route.ts) adapte un résultat applicatif : l'échec attendu devient une réponse de conflit ; la réussite fournit la donnée à la suite. Les règles de modification restent dans le traitement applicatif. Si la même vérification et son interprétation se répètent, utiliser un checker et son preset comme décrit dans [les flux réutilisables](reusable-flows.md).
29
+
30
+ ## Terminer avec le handler
31
+
32
+ Le handler termine la route et retourne la réponse positive lorsque les étapes précédentes ont réussi. Préparer les préconditions et traiter les échecs attendus en amont. Il peut appeler le traitement applicatif à cet endroit si ses préconditions garantissent le résultat attendu.
33
+
34
+ Le callback de `.handler` reçoit le floor et l'outil `response`. Retourner `response.ok(information, body)` pour envoyer le résultat, ou `response.noContent(information)` pour une réussite sans body. Choisir l'information pour identifier le résultat de l'opération : elle distingue les issues de l'API, y compris lorsqu'elles partagent le même statut HTTP.
35
+
36
+ Le type de chaque réponse est déduit de son statut, de son information et de son body. Les helpers ne valident ni ne filtrent le body au runtime ; préparer les données à exposer avant de les leur transmettre. Le handler dispose de tous les helpers de réponse. Dans les `cut` et les callbacks `otherwise`, seuls les helpers de refus sont disponibles : `4xx` et `internalServerError`.
37
+
38
+ Ne pas transformer le handler en orchestrateur métier. Dans une application organisée en couches, consommer les use cases résolus et les qualifications prévues par le domaine. Pour comprendre ces responsabilités, rechercher les frontières du Type-Driven Design et les fixtures d'infrastructure dans `docs/concepts.llms.md`.
39
+
40
+ Pour une représentation de body particulière, un flux ou un autre besoin HTTP, rechercher le mécanisme adapté dans le routeur conceptuel avant de modifier la réception ou l'envoi natifs.
41
+
42
+ ## Partager les types avec un client
43
+
44
+ Pour créer un client à partir des routes du serveur, utiliser `RouteDeclarationToContract<typeof route>`. Ce type reprend les entrées et toutes les réponses de la route, y compris les refus des extractions et des vérifications exécutées dans les processus ou le preflight. Une union de types de routes permet de couvrir plusieurs endpoints. L'[exemple de client](examples/inferred-client.ts) montre comment partager ces types et sélectionner la réponse attendue, sans charger les modules serveur au runtime.
45
+
46
+ Pour générer une documentation OpenAPI, consulter `docs/concepts/02-server/20-http/50-open-api.ts` depuis le package installé. Cette ressource explique comment fournir les schémas de réponse au générateur.
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: duplojs-modeling
3
+ description: "Comprendre, concevoir ou faire évoluer un système métier DuploJS en Type-Driven Design : domaine, cycles de vie, agrégats, preuves, use cases et raccordement à l'infrastructure. S'applique aussi à l'implémentation d'une couche autour d'un domaine existant."
4
+ ---
5
+
6
+ # Modélisation métier 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
+ ## Délimiter l'intervention
21
+
22
+ Ici, TDD signifie **Type-Driven Design**. Le domaine exprime le métier et impose ses garanties par ses types. Partir de l'opération concernée et choisir la lecture selon la responsabilité modifiée :
23
+
24
+ | Intervention | Contrats à examiner et référence à lire |
25
+ | --- | --- |
26
+ | Concevoir ou modifier un modèle, une qualification ou une transition | Invariants, faits et agrégats concernés : [Modèles et transitions](references/domain.md). |
27
+ | Modifier un use case | Préconditions de l'agrégat, ports, refus, effets et persistance : [Des preuves aux points d'entrée](references/orchestration.md). |
28
+ | Raccorder un point d'entrée ou implémenter un port existant | Contrat consommé, préparation des entrées et garanties produites : [Des preuves aux points d'entrée](references/orchestration.md). |
29
+
30
+ ## Comprendre le contrat et les faits concernés
31
+
32
+ Lire les entrées, garanties, sorties et refus du contrat actuel. Lorsqu'un agrégat intervient, lire son implémentation et les faits qu'il appelle : leurs préconditions, leurs cibles et leur ordre expliquent les transitions et l'intention de l'opération. Lire aussi les qualifications ou opérations qui établissent les garanties requises ; une signature seule ne prouve pas leur réalisation.
33
+
34
+ Étendre la lecture si une précondition, une provenance, un effet ou une responsabilité nécessaire reste inexpliqué. Arrêter l'exploration lorsque les contrats et les faits concernés permettent de réaliser et vérifier la modification ; les autres parcours du domaine restent hors de cette lecture.
35
+
36
+ Pour raccorder un domaine fourni, conserver ses contrats : une difficulté technique ne justifie pas de retirer une précondition ou de déplacer une règle. Si une décision métier nécessaire manque ou se contredit, isoler la question et avancer sur les parties indépendantes.
37
+
38
+ ## Respecter les couches
39
+
40
+ | Couche | Dépendances et responsabilités |
41
+ | --- | --- |
42
+ | Domaine | N'importe ni application ni infrastructure. Définit les modèles, qualifications, faits, agrégats et contrats des repositories. Les agrégats restent purs. |
43
+ | Application | Importe le domaine. Définit ses ports, appelle les repositories, prépare les preuves, appelle les agrégats, résout les effets et persiste les résultats. N'importe pas l'infrastructure. |
44
+ | Infrastructure | Importe domaine et application. Implémente les ports, hydrate les données, résout les Readers et adapte les points d'entrée aux contrats. |
45
+
46
+ L'entrée habituelle d'une opération métier dans le domaine est un **agrégat appelé par un use case**. Le domaine orchestre les règles et les faits ; l'application orchestre leurs besoins techniques. Un repository est un contrat de capacité extérieure au domaine, pas nécessairement un accès à une base de données.
47
+
48
+ L'infrastructure peut appeler directement une opération de lecture de repository, comme `findById` ou `findMany`, et une qualification du domaine pour préparer une entrée. Ne pas imposer un use case de simple relais. Dès qu'il faut conduire une opération métier, ses transitions ou ses effets, passer par l'orchestration applicative. Ne pas appeler directement un fait ou un agrégat depuis un point d'entrée.
49
+
50
+ Lorsqu'une tâche crée une couche ou modifie ses responsabilités, lire `docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md`. Pour un raccordement existant, appliquer ces frontières aux contrats concernés.
51
+
52
+ ## Choisir les garanties du modèle
53
+
54
+ | Besoin | Choix |
55
+ | --- | --- |
56
+ | Vérifier une donnée et ses contraintes au runtime | `DataStructure` ; réutiliser les structures du domaine aux frontières. |
57
+ | Distinguer deux valeurs de même représentation mais de sens différent | `NewType`. |
58
+ | Porter une identité et une shape métier stable | `Entity`. |
59
+ | Faire varier la forme d'une propriété selon son cas | Union de `TaggedObject` dans la shape commune. |
60
+ | Prouver une condition actuelle de l'entité | `Flag`, établi par une qualification ou par le fait qui produit cette condition. Plusieurs flags compatibles peuvent coexister. |
61
+ | Créer une entité ou modifier ses propriétés métier | `Fact` ciblant une seule entité, même si le changement ne modifie pas son état nommé. |
62
+ | Exiger un passage, un résultat ou une provenance | `Evidence` et `GetEvidenceResult` dans le contrat qui porte cette exigence. |
63
+ | Exiger une opération identifiée, au-delà de sa signature d'appel | `SignedFunction`. |
64
+ | Déclarer des effets à exécuter autour des résultats métier | `Resolver` retourné par l'agrégat, exécuté par l'application. |
65
+
66
+ Si le contrat exige une `Evidence` ou `GetEvidenceResult`, lire `docs/concepts/01-fundamental/06-modeling/50-evidence.ts` avant de préparer l'entrée. S'il exige une `SignedFunction`, lire `docs/concepts/01-fundamental/06-modeling/60-signed-function.ts`. Ces mécanismes portent des exigences distinctes : conserver l'opération réelle qui établit la garantie.
67
+
68
+ ## Implémenter et vérifier l'opération
69
+
70
+ Adapter les appelants du contrat modifié. Pour une opération métier, remonter les exigences de l'agrégat vers le use case et son point d'entrée ; pour une lecture ou une qualification isolée, partir directement de son contrat. Décider qui reçoit les valeurs déjà qualifiées et qui les obtient par ses ports. Conserver les types métier jusque dans la validation externe ; un cast ne produit aucune garantie.
71
+
72
+ Si la tâche assemble des ports ou des Readers, lire `docs/concepts/05-type-driven-design/03-applications/10-use-case.md` pour leur déclaration et leur résolution. Reader injecte les dépendances du use case ; Resolver exécute les effets déclarés par l'agrégat. Lire le contenu des ressources sélectionnées, pas seulement leurs titres.
73
+
74
+ Vérifier que chaque preuve est établie par une opération réelle, que seules les branches autorisées atteignent l'agrégat et que l'enchaînement utilise les nouvelles entités retournées. Vérifier aussi le sens des imports et l'ordre entre effets et persistance. Un `Left` attendu doit empêcher les étapes qui nécessitent le résultat positif.
75
+
76
+ Exécuter le typage et les vérifications du projet. Pour les garanties ajoutées, vérifier les entrées acceptées et refusées par les types ; pour le comportement, couvrir les transitions et les branches de refus concernées, ainsi que l'absence d'effets après un refus. Ne pas transformer un échec de typage en cast ni apposer une preuve à la place de l'opération requise.
@@ -0,0 +1,33 @@
1
+ # Modèles et transitions
2
+
3
+ Les chemins `docs/` ci-dessous se résolvent depuis la racine du package `@duplojs/agents-kit` installé, retrouvée selon le `SKILL.md`.
4
+
5
+ ## Dessiner le cycle de vie utile
6
+
7
+ Pour une nouvelle opération, identifier les invariants permanents, les conditions d'entrée, les changements et les garanties de sortie. Une petite entité peut suffire : ajouter des états ou des preuves lorsqu'ils expriment une distinction métier requise, sans inventer un cycle de vie plus détaillé que le besoin.
8
+
9
+ Regrouper le modèle dans le namespace de l'entité : NewType, structures, définition commune, variantes de propriétés, flags et union des faits. La shape principale reste stable ; si certaines propriétés n'existent que dans un cas, les placer dans une variante de TaggedObject plutôt que rendre toutes les propriétés facultatives.
10
+
11
+ Un état nommé n'épuise pas les conditions possibles. Une entité peut être disponible, éligible à une action et liée à une autre entité selon plusieurs qualifications compatibles. Ne pas transformer chaque combinaison de flags en un nouvel état exclusif. Une qualification lit l'entité, vérifie sa condition et retourne un résultat qui porte le flag associé ; elle ne change aucune propriété métier.
12
+
13
+ Pour modifier cette organisation, lire `docs/concepts/05-type-driven-design/02-domains/10-entities.md`. Consulter ensuite les exemples de `docs/concepts/01-fundamental/06-modeling/` correspondant aux primitives utilisées : `10-new-type.ts`, `20-entity.ts`, `30-tagged-object.ts` ou `40-entity-lifecycle.ts`. La page sur les entités relie les fixtures de qualification et de transition.
14
+
15
+ ## Donner une cible à chaque fait
16
+
17
+ Chaque création ou modification métier passe par un fait. Un fait peut lire plusieurs entités, mais il n'en modifie qu'une. Pour deux cibles, définir deux faits et les coordonner dans l'agrégat. Pour plusieurs changements successifs d'une même cible, transmettre la valeur retournée par le fait précédent.
18
+
19
+ `Entity.update` appartient aux faits ; `Flag.append` appartient aux qualifications et aux faits qui établissent réellement la condition. Une hydratation avec `map` ou `decodeMap` reconstitue une donnée existante et ne remplace pas un événement de création.
20
+
21
+ Après une mise à jour, repartir de la nouvelle entité, reconstruire les flags dont les conditions sont établies et appliquer le nouveau fait. Les anciens flags et l'ancien fait courant ne sont pas conservés par `Entity.update`. Ne pas réintroduire les preuves d'une valeur antérieure par un spread ou un cast. Le fait courant porté par l'entité ne constitue pas un historique persistant.
22
+
23
+ Les valeurs passées à `update` doivent déjà satisfaire leurs structures : `update` ne les valide pas. Vérifier les préconditions, la payload et les preuves de sortie dans les faits du projet avant d'ajouter une transition.
24
+
25
+ ## Placer l'exigence à la bonne granularité
26
+
27
+ Une contrainte commune à toutes les exécutions d'une transition appartient au fait. Une exigence propre à un parcours métier appartient à son agrégat ou à l'étape qui en est responsable.
28
+
29
+ Comparer les parcours qui consomment le fait : conserver ses préconditions communes et placer les exigences supplémentaires dans le contrat du parcours qui les impose. Si le métier distingue les événements eux-mêmes, créer des faits distincts. Ne pas déplacer systématiquement toutes les évidences sur les faits, ni sur les seuls agrégats.
30
+
31
+ L'agrégat n'appelle pas le repository pour obtenir la preuve : il l'exige en entrée. Il n'exécute pas non plus une callback impure reçue de l'extérieur. S'il demande un effet, il déclare la dépendance dans un Resolver ; sans effet à déclarer, il peut retourner directement sa valeur ou son Either.
32
+
33
+ Pour un contrat d'agrégat, lire `docs/concepts/05-type-driven-design/02-domains/20-aggregates.md` ; son exemple `createBook` illustre les exigences propres à une transaction. Pour une capacité extérieure, lire `docs/concepts/05-type-driven-design/02-domains/30-repositories.md`. Si le contrat exige une provenance, consulter `docs/concepts/01-fundamental/06-modeling/50-evidence.ts` ; si c'est l'identité d'une dépendance qui compte, consulter `docs/concepts/01-fundamental/06-modeling/60-signed-function.ts`.