@tailor-platform/erp-kit 0.2.1 → 0.2.2

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 (618) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -23
  3. package/dist/cli.mjs +1613 -0
  4. package/package.json +14 -13
  5. package/schemas/app-compose/story.yml +12 -0
  6. package/schemas/module/command.yml +9 -0
  7. package/schemas/module/module.yml +4 -0
  8. package/schemas/module/query.yml +9 -0
  9. package/skills/erp-kit-app-1-requirements/SKILL.md +4 -4
  10. package/skills/erp-kit-app-2-requirements-review/SKILL.md +102 -0
  11. package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +66 -0
  12. package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +69 -0
  13. package/skills/erp-kit-app-2-requirements-review/references/requirements-report-format.md +25 -0
  14. package/skills/erp-kit-app-3-plan/SKILL.md +157 -0
  15. package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +107 -0
  16. package/skills/erp-kit-app-3-plan/references/screen-extraction.md +74 -0
  17. package/skills/erp-kit-app-3-plan/references/story-extraction.md +86 -0
  18. package/skills/erp-kit-app-4-plan-review/SKILL.md +177 -0
  19. package/skills/erp-kit-app-4-plan-review/references/actor-flow-parity.md +73 -0
  20. package/skills/erp-kit-app-4-plan-review/references/business-flow-story-parity.md +86 -0
  21. package/skills/erp-kit-app-4-plan-review/references/orphan-detection.md +69 -0
  22. package/skills/erp-kit-app-4-plan-review/references/parity-report-format.md +52 -0
  23. package/skills/erp-kit-app-4-plan-review/references/story-resolver-parity.md +83 -0
  24. package/skills/erp-kit-app-4-plan-review/references/story-screen-parity.md +73 -0
  25. package/skills/{erp-kit-app-5-implementation → erp-kit-app-5-impl-backend}/SKILL.md +24 -68
  26. package/skills/erp-kit-app-5-impl-backend/references/app-config.md +38 -0
  27. package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +48 -0
  28. package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +68 -0
  29. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +74 -0
  30. package/skills/{erp-kit-app-5-implementation/references/frontend.md → erp-kit-app-6-impl-frontend/references/pages.md} +8 -90
  31. package/skills/erp-kit-app-7-impl-review/SKILL.md +176 -0
  32. package/skills/erp-kit-app-7-impl-review/references/impl-parity-report-format.md +52 -0
  33. package/skills/erp-kit-app-7-impl-review/references/module-wiring-parity.md +84 -0
  34. package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +86 -0
  35. package/skills/erp-kit-app-7-impl-review/references/screen-doc-code-parity.md +86 -0
  36. package/skills/erp-kit-module-1-requirements/SKILL.md +126 -0
  37. package/skills/erp-kit-module-1-requirements/references/boundary-analysis.md +51 -0
  38. package/skills/erp-kit-module-1-requirements/references/erp-research.md +57 -0
  39. package/skills/erp-kit-module-1-requirements/references/feature-doc.md +61 -0
  40. package/skills/erp-kit-module-2-requirements-review/SKILL.md +112 -0
  41. package/skills/erp-kit-module-2-requirements-review/references/best-practices-check.md +79 -0
  42. package/skills/erp-kit-module-2-requirements-review/references/boundary-consistency-check.md +70 -0
  43. package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +25 -0
  44. package/skills/erp-kit-module-3-plan/SKILL.md +107 -0
  45. package/skills/erp-kit-module-3-plan/references/command-extraction.md +87 -0
  46. package/skills/erp-kit-module-3-plan/references/model-extraction.md +72 -0
  47. package/skills/erp-kit-module-3-plan/references/query-extraction.md +59 -0
  48. package/skills/erp-kit-module-4-plan-review/SKILL.md +158 -0
  49. package/skills/erp-kit-module-4-plan-review/references/command-model-consistency.md +46 -0
  50. package/skills/erp-kit-module-4-plan-review/references/feature-command-parity.md +97 -0
  51. package/skills/erp-kit-module-4-plan-review/references/feature-model-parity.md +47 -0
  52. package/skills/erp-kit-module-4-plan-review/references/feature-query-parity.md +70 -0
  53. package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +52 -0
  54. package/skills/erp-kit-module-5-impl/SKILL.md +118 -0
  55. package/skills/erp-kit-module-5-impl/references/command-impl.md +68 -0
  56. package/skills/erp-kit-module-5-impl/references/exports.md +10 -0
  57. package/skills/erp-kit-module-5-impl/references/model-impl.md +45 -0
  58. package/skills/erp-kit-module-5-impl/references/query-impl.md +53 -0
  59. package/skills/erp-kit-module-6-impl-review/SKILL.md +187 -0
  60. package/skills/erp-kit-module-6-impl-review/references/command-doc-code-parity.md +92 -0
  61. package/skills/erp-kit-module-6-impl-review/references/command-doc-test-parity.md +93 -0
  62. package/skills/erp-kit-module-6-impl-review/references/error-implementation-parity.md +95 -0
  63. package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/errors.md +1 -1
  64. package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +52 -0
  65. package/skills/erp-kit-module-6-impl-review/references/model-doc-code-parity.md +80 -0
  66. package/skills/erp-kit-module-shared/SKILL.md +1 -1
  67. package/skills/erp-kit-module-shared/references/commands.md +1 -1
  68. package/skills/erp-kit-module-shared/references/errors.md +12 -9
  69. package/skills/erp-kit-module-shared/references/queries.md +109 -36
  70. package/skills/erp-kit-module-shared/references/testing.md +10 -0
  71. package/skills/erp-kit-update/SKILL.md +2 -2
  72. package/src/app.ts +1 -1
  73. package/src/commands/check.ts +1 -1
  74. package/src/commands/index.ts +16 -5
  75. package/src/commands/init.test.ts +22 -69
  76. package/src/commands/init.ts +28 -115
  77. package/src/commands/lib/distribute.test.ts +126 -0
  78. package/src/commands/lib/distribute.ts +129 -0
  79. package/src/commands/parse-doc-test-cases.ts +55 -0
  80. package/src/commands/scaffold.test.ts +74 -33
  81. package/src/commands/scaffold.ts +54 -18
  82. package/src/commands/sync-check.test.ts +173 -0
  83. package/src/commands/sync-check.ts +103 -2
  84. package/src/commands/update.test.ts +87 -0
  85. package/src/commands/update.ts +41 -0
  86. package/src/generator/generate-code.test.ts +23 -12
  87. package/src/generator/generate-code.ts +22 -16
  88. package/src/integration.test.ts +1 -1
  89. package/src/module.ts +14 -97
  90. package/src/modules/item-management/README.md +8 -0
  91. package/src/modules/item-management/command/activateItem.generated.ts +1 -1
  92. package/src/modules/item-management/command/activateItem.test.ts +12 -18
  93. package/src/modules/item-management/command/activateItem.ts +9 -5
  94. package/src/modules/item-management/command/assignItemToTaxonomy.generated.ts +1 -1
  95. package/src/modules/item-management/command/assignItemToTaxonomy.test.ts +10 -24
  96. package/src/modules/item-management/command/assignItemToTaxonomy.ts +19 -16
  97. package/src/modules/item-management/command/createItem.generated.ts +1 -1
  98. package/src/modules/item-management/command/createItem.test.ts +11 -11
  99. package/src/modules/item-management/command/createItem.ts +16 -7
  100. package/src/modules/item-management/command/createTaxonomyNode.generated.ts +1 -1
  101. package/src/modules/item-management/command/createTaxonomyNode.test.ts +9 -9
  102. package/src/modules/item-management/command/createTaxonomyNode.ts +33 -14
  103. package/src/modules/item-management/command/deactivateItem.generated.ts +1 -1
  104. package/src/modules/item-management/command/deactivateItem.test.ts +12 -18
  105. package/src/modules/item-management/command/deactivateItem.ts +9 -5
  106. package/src/modules/item-management/command/deleteItem.generated.ts +1 -1
  107. package/src/modules/item-management/command/deleteItem.test.ts +10 -16
  108. package/src/modules/item-management/command/deleteItem.ts +9 -5
  109. package/src/modules/item-management/command/deleteTaxonomyNode.generated.ts +1 -1
  110. package/src/modules/item-management/command/deleteTaxonomyNode.test.ts +10 -16
  111. package/src/modules/item-management/command/deleteTaxonomyNode.ts +22 -12
  112. package/src/modules/item-management/command/moveTaxonomyNode.generated.ts +1 -1
  113. package/src/modules/item-management/command/moveTaxonomyNode.test.ts +10 -10
  114. package/src/modules/item-management/command/moveTaxonomyNode.ts +63 -19
  115. package/src/modules/item-management/command/reactivateItem.generated.ts +1 -1
  116. package/src/modules/item-management/command/reactivateItem.test.ts +12 -18
  117. package/src/modules/item-management/command/reactivateItem.ts +9 -5
  118. package/src/modules/item-management/command/removeItemFromTaxonomy.generated.ts +1 -1
  119. package/src/modules/item-management/command/removeItemFromTaxonomy.test.ts +9 -16
  120. package/src/modules/item-management/command/removeItemFromTaxonomy.ts +11 -6
  121. package/src/modules/item-management/command/updateItem.generated.ts +1 -1
  122. package/src/modules/item-management/command/updateItem.test.ts +16 -16
  123. package/src/modules/item-management/command/updateItem.ts +11 -6
  124. package/src/modules/item-management/command/updateTaxonomyNode.generated.ts +1 -1
  125. package/src/modules/item-management/command/updateTaxonomyNode.test.ts +14 -20
  126. package/src/modules/item-management/command/updateTaxonomyNode.ts +9 -6
  127. package/src/modules/item-management/docs/commands/ActivateItem.md +8 -0
  128. package/src/modules/item-management/docs/commands/AssignItemToTaxonomy.md +7 -0
  129. package/src/modules/item-management/docs/commands/CreateItem.md +10 -0
  130. package/src/modules/item-management/docs/commands/CreateTaxonomyNode.md +9 -0
  131. package/src/modules/item-management/docs/commands/DeactivateItem.md +8 -0
  132. package/src/modules/item-management/docs/commands/DeleteItem.md +7 -0
  133. package/src/modules/item-management/docs/commands/DeleteTaxonomyNode.md +7 -0
  134. package/src/modules/item-management/docs/commands/MoveTaxonomyNode.md +10 -0
  135. package/src/modules/item-management/docs/commands/ReactivateItem.md +8 -0
  136. package/src/modules/item-management/docs/commands/RemoveItemFromTaxonomy.md +5 -0
  137. package/src/modules/item-management/docs/commands/UpdateItem.md +15 -0
  138. package/src/modules/item-management/docs/commands/UpdateTaxonomyNode.md +9 -0
  139. package/src/modules/item-management/docs/queries/CalculateNodeDepth.md +8 -0
  140. package/src/modules/item-management/docs/queries/CalculateSubtreeDepth.md +7 -0
  141. package/src/modules/item-management/docs/queries/DetectCircularReference.md +9 -0
  142. package/src/modules/item-management/docs/queries/GetItem.md +9 -0
  143. package/src/modules/item-management/docs/queries/GetItemTaxonomyAssignment.md +5 -0
  144. package/src/modules/item-management/docs/queries/GetTaxonomyNode.md +7 -0
  145. package/src/modules/item-management/docs/queries/GetTaxonomyNodeAssignments.md +5 -0
  146. package/src/modules/item-management/docs/queries/GetTaxonomyNodeChildren.md +6 -0
  147. package/src/modules/item-management/index.ts +0 -51
  148. package/src/modules/item-management/lib/errors.generated.ts +24 -24
  149. package/src/modules/item-management/lib/permissions.generated.ts +1 -1
  150. package/src/modules/item-management/lib/types.ts +1 -1
  151. package/src/modules/item-management/module.ts +1 -1
  152. package/src/modules/item-management/query/calculateNodeDepth.generated.ts +1 -1
  153. package/src/modules/item-management/query/calculateNodeDepth.test.ts +21 -6
  154. package/src/modules/item-management/query/calculateNodeDepth.ts +2 -2
  155. package/src/modules/item-management/query/calculateSubtreeDepth.generated.ts +1 -1
  156. package/src/modules/item-management/query/calculateSubtreeDepth.test.ts +17 -5
  157. package/src/modules/item-management/query/calculateSubtreeDepth.ts +2 -2
  158. package/src/modules/item-management/query/detectCircularReference.generated.ts +1 -1
  159. package/src/modules/item-management/query/detectCircularReference.test.ts +25 -7
  160. package/src/modules/item-management/query/detectCircularReference.ts +4 -4
  161. package/src/modules/item-management/query/getItem.generated.ts +1 -1
  162. package/src/modules/item-management/query/getItem.test.ts +25 -7
  163. package/src/modules/item-management/query/getItem.ts +2 -2
  164. package/src/modules/item-management/query/getItemTaxonomyAssignment.generated.ts +1 -1
  165. package/src/modules/item-management/query/getItemTaxonomyAssignment.test.ts +9 -3
  166. package/src/modules/item-management/query/getItemTaxonomyAssignment.ts +2 -2
  167. package/src/modules/item-management/query/getTaxonomyNode.generated.ts +1 -1
  168. package/src/modules/item-management/query/getTaxonomyNode.test.ts +17 -5
  169. package/src/modules/item-management/query/getTaxonomyNode.ts +2 -2
  170. package/src/modules/item-management/query/getTaxonomyNodeAssignments.generated.ts +1 -1
  171. package/src/modules/item-management/query/getTaxonomyNodeAssignments.test.ts +9 -3
  172. package/src/modules/item-management/query/getTaxonomyNodeAssignments.ts +2 -2
  173. package/src/modules/item-management/query/getTaxonomyNodeChildren.generated.ts +1 -1
  174. package/src/modules/item-management/query/getTaxonomyNodeChildren.test.ts +13 -4
  175. package/src/modules/item-management/query/getTaxonomyNodeChildren.ts +2 -2
  176. package/src/modules/item-management/tailor.config.ts +6 -4
  177. package/src/modules/item-management/tailor.d.ts +13 -0
  178. package/src/modules/primitives/README.md +8 -0
  179. package/src/modules/primitives/command/activateCategory.generated.ts +1 -1
  180. package/src/modules/primitives/command/activateCategory.test.ts +8 -18
  181. package/src/modules/primitives/command/activateCategory.ts +9 -5
  182. package/src/modules/primitives/command/activateCurrency.generated.ts +1 -1
  183. package/src/modules/primitives/command/activateCurrency.test.ts +8 -18
  184. package/src/modules/primitives/command/activateCurrency.ts +9 -5
  185. package/src/modules/primitives/command/activateUnit.generated.ts +1 -1
  186. package/src/modules/primitives/command/activateUnit.test.ts +8 -15
  187. package/src/modules/primitives/command/activateUnit.ts +9 -5
  188. package/src/modules/primitives/command/createCategory.generated.ts +1 -1
  189. package/src/modules/primitives/command/createCategory.test.ts +29 -44
  190. package/src/modules/primitives/command/createCategory.ts +9 -5
  191. package/src/modules/primitives/command/createCurrency.generated.ts +1 -1
  192. package/src/modules/primitives/command/createCurrency.test.ts +53 -78
  193. package/src/modules/primitives/command/createCurrency.ts +9 -6
  194. package/src/modules/primitives/command/createExchangeRate.generated.ts +1 -1
  195. package/src/modules/primitives/command/createExchangeRate.test.ts +59 -97
  196. package/src/modules/primitives/command/createExchangeRate.ts +13 -7
  197. package/src/modules/primitives/command/createUnit.generated.ts +1 -1
  198. package/src/modules/primitives/command/createUnit.test.ts +59 -90
  199. package/src/modules/primitives/command/createUnit.ts +9 -6
  200. package/src/modules/primitives/command/deactivateCategory.generated.ts +1 -1
  201. package/src/modules/primitives/command/deactivateCategory.test.ts +15 -33
  202. package/src/modules/primitives/command/deactivateCategory.ts +9 -5
  203. package/src/modules/primitives/command/deactivateCurrency.generated.ts +1 -1
  204. package/src/modules/primitives/command/deactivateCurrency.test.ts +12 -26
  205. package/src/modules/primitives/command/deactivateCurrency.ts +9 -5
  206. package/src/modules/primitives/command/deactivateUnit.generated.ts +1 -1
  207. package/src/modules/primitives/command/deactivateUnit.test.ts +15 -30
  208. package/src/modules/primitives/command/deactivateUnit.ts +14 -7
  209. package/src/modules/primitives/command/setBaseCurrency.generated.ts +1 -1
  210. package/src/modules/primitives/command/setBaseCurrency.test.ts +18 -40
  211. package/src/modules/primitives/command/setBaseCurrency.ts +15 -7
  212. package/src/modules/primitives/command/setReferenceUnit.generated.ts +1 -1
  213. package/src/modules/primitives/command/setReferenceUnit.test.ts +22 -44
  214. package/src/modules/primitives/command/setReferenceUnit.ts +21 -9
  215. package/src/modules/primitives/docs/commands/ActivateCategory.md +6 -0
  216. package/src/modules/primitives/docs/commands/ActivateCurrency.md +6 -0
  217. package/src/modules/primitives/docs/commands/ActivateUnit.md +6 -0
  218. package/src/modules/primitives/docs/commands/CreateCategory.md +6 -0
  219. package/src/modules/primitives/docs/commands/CreateCurrency.md +10 -0
  220. package/src/modules/primitives/docs/commands/CreateExchangeRate.md +11 -0
  221. package/src/modules/primitives/docs/commands/CreateUnit.md +10 -0
  222. package/src/modules/primitives/docs/commands/DeactivateCategory.md +7 -0
  223. package/src/modules/primitives/docs/commands/DeactivateCurrency.md +7 -0
  224. package/src/modules/primitives/docs/commands/DeactivateUnit.md +7 -0
  225. package/src/modules/primitives/docs/commands/SetBaseCurrency.md +7 -0
  226. package/src/modules/primitives/docs/commands/SetReferenceUnit.md +7 -0
  227. package/src/modules/primitives/docs/queries/ConvertAmount.md +14 -0
  228. package/src/modules/primitives/docs/queries/ConvertQuantity.md +13 -0
  229. package/src/modules/primitives/docs/queries/GetBaseCurrency.md +5 -0
  230. package/src/modules/primitives/docs/queries/GetCurrency.md +7 -0
  231. package/src/modules/primitives/docs/queries/GetUnit.md +7 -0
  232. package/src/modules/primitives/docs/queries/GetUoMCategory.md +7 -0
  233. package/src/modules/primitives/docs/queries/ListUnitsByCategory.md +15 -5
  234. package/src/modules/primitives/index.ts +0 -49
  235. package/src/modules/primitives/lib/errors.generated.ts +23 -23
  236. package/src/modules/primitives/lib/permissions.generated.ts +1 -1
  237. package/src/modules/primitives/lib/types.ts +1 -1
  238. package/src/modules/primitives/module.ts +1 -1
  239. package/src/modules/primitives/query/convertAmount.generated.ts +1 -1
  240. package/src/modules/primitives/query/convertAmount.test.ts +110 -77
  241. package/src/modules/primitives/query/convertAmount.ts +61 -47
  242. package/src/modules/primitives/query/convertQuantity.generated.ts +1 -1
  243. package/src/modules/primitives/query/convertQuantity.test.ts +99 -69
  244. package/src/modules/primitives/query/convertQuantity.ts +12 -10
  245. package/src/modules/primitives/query/getBaseCurrency.generated.ts +1 -1
  246. package/src/modules/primitives/query/getBaseCurrency.test.ts +10 -4
  247. package/src/modules/primitives/query/getBaseCurrency.ts +2 -2
  248. package/src/modules/primitives/query/getCurrency.generated.ts +1 -1
  249. package/src/modules/primitives/query/getCurrency.test.ts +17 -5
  250. package/src/modules/primitives/query/getCurrency.ts +2 -2
  251. package/src/modules/primitives/query/getUnit.generated.ts +1 -1
  252. package/src/modules/primitives/query/getUnit.test.ts +17 -5
  253. package/src/modules/primitives/query/getUnit.ts +2 -2
  254. package/src/modules/primitives/query/getUoMCategory.generated.ts +1 -1
  255. package/src/modules/primitives/query/getUoMCategory.test.ts +17 -5
  256. package/src/modules/primitives/query/getUoMCategory.ts +2 -2
  257. package/src/modules/primitives/query/listUnitsByCategory.generated.ts +1 -1
  258. package/src/modules/primitives/query/listUnitsByCategory.test.ts +80 -0
  259. package/src/modules/primitives/query/listUnitsByCategory.ts +19 -3
  260. package/src/modules/primitives/tailor.config.ts +6 -4
  261. package/src/modules/primitives/tailor.d.ts +13 -0
  262. package/src/modules/product-management/README.md +52 -0
  263. package/src/modules/product-management/command/activateProduct.generated.ts +6 -0
  264. package/src/modules/product-management/command/activateProduct.test.ts +40 -0
  265. package/src/modules/product-management/command/activateProduct.ts +42 -0
  266. package/src/modules/product-management/command/assignProductToCategory.generated.ts +6 -0
  267. package/src/modules/product-management/command/assignProductToCategory.test.ts +90 -0
  268. package/src/modules/product-management/command/assignProductToCategory.ts +62 -0
  269. package/src/modules/product-management/command/createProduct.generated.ts +6 -0
  270. package/src/modules/product-management/command/createProduct.test.ts +149 -0
  271. package/src/modules/product-management/command/createProduct.ts +73 -0
  272. package/src/modules/product-management/command/createProductAttribute.generated.ts +6 -0
  273. package/src/modules/product-management/command/createProductAttribute.test.ts +70 -0
  274. package/src/modules/product-management/command/createProductAttribute.ts +53 -0
  275. package/src/modules/product-management/command/createProductAttributeValue.generated.ts +6 -0
  276. package/src/modules/product-management/command/createProductAttributeValue.test.ts +68 -0
  277. package/src/modules/product-management/command/createProductAttributeValue.ts +63 -0
  278. package/src/modules/product-management/command/createProductCategory.generated.ts +6 -0
  279. package/src/modules/product-management/command/createProductCategory.test.ts +135 -0
  280. package/src/modules/product-management/command/createProductCategory.ts +82 -0
  281. package/src/modules/product-management/command/deactivateProduct.generated.ts +6 -0
  282. package/src/modules/product-management/command/deactivateProduct.test.ts +40 -0
  283. package/src/modules/product-management/command/deactivateProduct.ts +42 -0
  284. package/src/modules/product-management/command/deleteProduct.generated.ts +6 -0
  285. package/src/modules/product-management/command/deleteProduct.test.ts +42 -0
  286. package/src/modules/product-management/command/deleteProduct.ts +42 -0
  287. package/src/modules/product-management/command/deleteProductAttribute.generated.ts +6 -0
  288. package/src/modules/product-management/command/deleteProductAttribute.test.ts +49 -0
  289. package/src/modules/product-management/command/deleteProductAttribute.ts +45 -0
  290. package/src/modules/product-management/command/deleteProductAttributeValue.generated.ts +6 -0
  291. package/src/modules/product-management/command/deleteProductAttributeValue.test.ts +71 -0
  292. package/src/modules/product-management/command/deleteProductAttributeValue.ts +68 -0
  293. package/src/modules/product-management/command/deleteProductCategory.generated.ts +6 -0
  294. package/src/modules/product-management/command/deleteProductCategory.test.ts +74 -0
  295. package/src/modules/product-management/command/deleteProductCategory.ts +53 -0
  296. package/src/modules/product-management/command/generateVariants.generated.ts +6 -0
  297. package/src/modules/product-management/command/generateVariants.test.ts +365 -0
  298. package/src/modules/product-management/command/generateVariants.ts +168 -0
  299. package/src/modules/product-management/command/moveProductCategory.generated.ts +6 -0
  300. package/src/modules/product-management/command/moveProductCategory.test.ts +170 -0
  301. package/src/modules/product-management/command/moveProductCategory.ts +124 -0
  302. package/src/modules/product-management/command/reactivateProduct.generated.ts +6 -0
  303. package/src/modules/product-management/command/reactivateProduct.test.ts +40 -0
  304. package/src/modules/product-management/command/reactivateProduct.ts +42 -0
  305. package/src/modules/product-management/command/removeProductFromCategory.generated.ts +6 -0
  306. package/src/modules/product-management/command/removeProductFromCategory.test.ts +42 -0
  307. package/src/modules/product-management/command/removeProductFromCategory.ts +32 -0
  308. package/src/modules/product-management/command/setProductAttributeAssignment.generated.ts +6 -0
  309. package/src/modules/product-management/command/setProductAttributeAssignment.test.ts +206 -0
  310. package/src/modules/product-management/command/setProductAttributeAssignment.ts +102 -0
  311. package/src/modules/product-management/command/updateProduct.generated.ts +6 -0
  312. package/src/modules/product-management/command/updateProduct.test.ts +168 -0
  313. package/src/modules/product-management/command/updateProduct.ts +95 -0
  314. package/src/modules/product-management/command/updateProductAttribute.generated.ts +6 -0
  315. package/src/modules/product-management/command/updateProductAttribute.test.ts +101 -0
  316. package/src/modules/product-management/command/updateProductAttribute.ts +68 -0
  317. package/src/modules/product-management/command/updateProductAttributeValue.generated.ts +6 -0
  318. package/src/modules/product-management/command/updateProductAttributeValue.test.ts +80 -0
  319. package/src/modules/product-management/command/updateProductAttributeValue.ts +58 -0
  320. package/src/modules/product-management/command/updateProductCategory.generated.ts +6 -0
  321. package/src/modules/product-management/command/updateProductCategory.test.ts +80 -0
  322. package/src/modules/product-management/command/updateProductCategory.ts +66 -0
  323. package/src/modules/product-management/db/product.ts +47 -0
  324. package/src/modules/product-management/db/productAttribute.ts +26 -0
  325. package/src/modules/product-management/db/productAttributeAssignment.ts +58 -0
  326. package/src/modules/product-management/db/productAttributeValue.ts +39 -0
  327. package/src/modules/product-management/db/productCategory.ts +34 -0
  328. package/src/modules/product-management/db/productCategoryAssignment.ts +49 -0
  329. package/src/modules/product-management/db/productVariant.ts +52 -0
  330. package/src/modules/product-management/docs/commands/ActivateProduct.md +39 -0
  331. package/src/modules/product-management/docs/commands/AssignProductToCategory.md +43 -0
  332. package/src/modules/product-management/docs/commands/CreateProduct.md +48 -0
  333. package/src/modules/product-management/docs/commands/CreateProductAttribute.md +39 -0
  334. package/src/modules/product-management/docs/commands/CreateProductAttributeValue.md +42 -0
  335. package/src/modules/product-management/docs/commands/CreateProductCategory.md +54 -0
  336. package/src/modules/product-management/docs/commands/DeactivateProduct.md +39 -0
  337. package/src/modules/product-management/docs/commands/DeleteProduct.md +42 -0
  338. package/src/modules/product-management/docs/commands/DeleteProductAttribute.md +39 -0
  339. package/src/modules/product-management/docs/commands/DeleteProductAttributeValue.md +42 -0
  340. package/src/modules/product-management/docs/commands/DeleteProductCategory.md +43 -0
  341. package/src/modules/product-management/docs/commands/GenerateVariants.md +68 -0
  342. package/src/modules/product-management/docs/commands/MoveProductCategory.md +54 -0
  343. package/src/modules/product-management/docs/commands/ReactivateProduct.md +38 -0
  344. package/src/modules/product-management/docs/commands/RemoveProductFromCategory.md +34 -0
  345. package/src/modules/product-management/docs/commands/SetProductAttributeAssignment.md +62 -0
  346. package/src/modules/product-management/docs/commands/UpdateProduct.md +61 -0
  347. package/src/modules/product-management/docs/commands/UpdateProductAttribute.md +46 -0
  348. package/src/modules/product-management/docs/commands/UpdateProductAttributeValue.md +47 -0
  349. package/src/modules/product-management/docs/commands/UpdateProductCategory.md +46 -0
  350. package/src/modules/product-management/docs/features/attribute-management.md +48 -0
  351. package/src/modules/product-management/docs/features/product-category.md +71 -0
  352. package/src/modules/product-management/docs/features/product-lifecycle.md +66 -0
  353. package/src/modules/product-management/docs/features/variant-generation.md +77 -0
  354. package/src/modules/product-management/docs/models/Product.md +58 -0
  355. package/src/modules/product-management/docs/models/ProductAttribute.md +37 -0
  356. package/src/modules/product-management/docs/models/ProductAttributeAssignment.md +41 -0
  357. package/src/modules/product-management/docs/models/ProductAttributeValue.md +40 -0
  358. package/src/modules/product-management/docs/models/ProductCategory.md +46 -0
  359. package/src/modules/product-management/docs/models/ProductCategoryAssignment.md +37 -0
  360. package/src/modules/product-management/docs/models/ProductVariant.md +41 -0
  361. package/src/modules/product-management/docs/queries/CalculateCategoryDepth.md +47 -0
  362. package/src/modules/product-management/docs/queries/DetectCategoryCircularReference.md +51 -0
  363. package/src/modules/product-management/docs/queries/GetProduct.md +42 -0
  364. package/src/modules/product-management/docs/queries/GetProductAttribute.md +42 -0
  365. package/src/modules/product-management/docs/queries/GetProductAttributeAssignment.md +34 -0
  366. package/src/modules/product-management/docs/queries/GetProductAttributeValue.md +40 -0
  367. package/src/modules/product-management/docs/queries/GetProductCategory.md +42 -0
  368. package/src/modules/product-management/docs/queries/GetProductCategoryAssignment.md +34 -0
  369. package/src/modules/product-management/docs/queries/GetProductVariant.md +41 -0
  370. package/src/modules/product-management/docs/queries/ListAttributeAssignmentsByAttribute.md +34 -0
  371. package/src/modules/product-management/docs/queries/ListCategoryAssignmentsByProduct.md +35 -0
  372. package/src/modules/product-management/docs/queries/ListProductAttributeAssignments.md +34 -0
  373. package/src/modules/product-management/docs/queries/ListProductAttributeValues.md +36 -0
  374. package/src/modules/product-management/docs/queries/ListProductCategoryAssignments.md +34 -0
  375. package/src/modules/product-management/docs/queries/ListProductCategoryChildren.md +34 -0
  376. package/src/modules/product-management/docs/queries/ListProductVariants.md +34 -0
  377. package/src/modules/product-management/generated/enums.ts +9 -0
  378. package/src/modules/product-management/generated/kysely-tailordb.ts +100 -0
  379. package/src/modules/product-management/index.ts +2 -0
  380. package/src/modules/product-management/lib/_db_deps.ts +17 -0
  381. package/src/modules/product-management/lib/errors.generated.ts +152 -0
  382. package/src/modules/product-management/lib/permissions.generated.ts +25 -0
  383. package/src/modules/product-management/lib/types.ts +51 -0
  384. package/src/modules/product-management/module.ts +201 -0
  385. package/src/modules/product-management/query/calculateCategoryDepth.generated.ts +5 -0
  386. package/src/modules/product-management/query/calculateCategoryDepth.test.ts +72 -0
  387. package/src/modules/product-management/query/calculateCategoryDepth.ts +37 -0
  388. package/src/modules/product-management/query/detectCategoryCircularReference.generated.ts +5 -0
  389. package/src/modules/product-management/query/detectCategoryCircularReference.test.ts +72 -0
  390. package/src/modules/product-management/query/detectCategoryCircularReference.ts +44 -0
  391. package/src/modules/product-management/query/getProduct.generated.ts +5 -0
  392. package/src/modules/product-management/query/getProduct.test.ts +59 -0
  393. package/src/modules/product-management/query/getProduct.ts +18 -0
  394. package/src/modules/product-management/query/getProductAttribute.generated.ts +5 -0
  395. package/src/modules/product-management/query/getProductAttribute.test.ts +59 -0
  396. package/src/modules/product-management/query/getProductAttribute.ts +18 -0
  397. package/src/modules/product-management/query/getProductAttributeAssignment.generated.ts +5 -0
  398. package/src/modules/product-management/query/getProductAttributeAssignment.test.ts +37 -0
  399. package/src/modules/product-management/query/getProductAttributeAssignment.ts +18 -0
  400. package/src/modules/product-management/query/getProductAttributeValue.generated.ts +5 -0
  401. package/src/modules/product-management/query/getProductAttributeValue.test.ts +31 -0
  402. package/src/modules/product-management/query/getProductAttributeValue.ts +16 -0
  403. package/src/modules/product-management/query/getProductCategory.generated.ts +5 -0
  404. package/src/modules/product-management/query/getProductCategory.test.ts +59 -0
  405. package/src/modules/product-management/query/getProductCategory.ts +18 -0
  406. package/src/modules/product-management/query/getProductCategoryAssignment.generated.ts +5 -0
  407. package/src/modules/product-management/query/getProductCategoryAssignment.test.ts +37 -0
  408. package/src/modules/product-management/query/getProductCategoryAssignment.ts +18 -0
  409. package/src/modules/product-management/query/getProductVariant.generated.ts +5 -0
  410. package/src/modules/product-management/query/getProductVariant.test.ts +43 -0
  411. package/src/modules/product-management/query/getProductVariant.ts +20 -0
  412. package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.generated.ts +5 -0
  413. package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.test.ts +31 -0
  414. package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.ts +16 -0
  415. package/src/modules/product-management/query/listCategoryAssignmentsByProduct.generated.ts +5 -0
  416. package/src/modules/product-management/query/listCategoryAssignmentsByProduct.test.ts +31 -0
  417. package/src/modules/product-management/query/listCategoryAssignmentsByProduct.ts +16 -0
  418. package/src/modules/product-management/query/listProductAttributeAssignments.generated.ts +5 -0
  419. package/src/modules/product-management/query/listProductAttributeAssignments.test.ts +31 -0
  420. package/src/modules/product-management/query/listProductAttributeAssignments.ts +16 -0
  421. package/src/modules/product-management/query/listProductAttributeValues.generated.ts +5 -0
  422. package/src/modules/product-management/query/listProductAttributeValues.test.ts +31 -0
  423. package/src/modules/product-management/query/listProductAttributeValues.ts +17 -0
  424. package/src/modules/product-management/query/listProductCategoryAssignments.generated.ts +5 -0
  425. package/src/modules/product-management/query/listProductCategoryAssignments.test.ts +31 -0
  426. package/src/modules/product-management/query/listProductCategoryAssignments.ts +16 -0
  427. package/src/modules/product-management/query/listProductCategoryChildren.generated.ts +5 -0
  428. package/src/modules/product-management/query/listProductCategoryChildren.test.ts +31 -0
  429. package/src/modules/product-management/query/listProductCategoryChildren.ts +16 -0
  430. package/src/modules/product-management/query/listProductVariants.generated.ts +5 -0
  431. package/src/modules/product-management/query/listProductVariants.test.ts +31 -0
  432. package/src/modules/product-management/query/listProductVariants.ts +16 -0
  433. package/src/modules/product-management/tailor.config.ts +13 -0
  434. package/src/modules/product-management/tailor.d.ts +13 -0
  435. package/src/modules/product-management/testing/fixtures.ts +151 -0
  436. package/src/modules/user-management/README.md +9 -3
  437. package/src/modules/user-management/command/activateUser.generated.ts +1 -1
  438. package/src/modules/user-management/command/activateUser.test.ts +12 -65
  439. package/src/modules/user-management/command/activateUser.ts +5 -20
  440. package/src/modules/user-management/command/assignPermissionToRole.generated.ts +1 -1
  441. package/src/modules/user-management/command/assignPermissionToRole.test.ts +25 -60
  442. package/src/modules/user-management/command/assignPermissionToRole.ts +5 -24
  443. package/src/modules/user-management/command/assignRoleToUser.generated.ts +1 -1
  444. package/src/modules/user-management/command/assignRoleToUser.test.ts +35 -87
  445. package/src/modules/user-management/command/assignRoleToUser.ts +5 -24
  446. package/src/modules/user-management/command/createPermission.generated.ts +1 -1
  447. package/src/modules/user-management/command/createPermission.test.ts +23 -33
  448. package/src/modules/user-management/command/createPermission.ts +4 -5
  449. package/src/modules/user-management/command/createRole.generated.ts +1 -1
  450. package/src/modules/user-management/command/createRole.test.ts +17 -27
  451. package/src/modules/user-management/command/createRole.ts +4 -5
  452. package/src/modules/user-management/command/createUser.generated.ts +1 -1
  453. package/src/modules/user-management/command/createUser.test.ts +31 -118
  454. package/src/modules/user-management/command/createUser.ts +7 -25
  455. package/src/modules/user-management/command/deactivateUser.generated.ts +1 -1
  456. package/src/modules/user-management/command/deactivateUser.test.ts +12 -65
  457. package/src/modules/user-management/command/deactivateUser.ts +6 -21
  458. package/src/modules/user-management/command/reactivateUser.generated.ts +1 -1
  459. package/src/modules/user-management/command/reactivateUser.test.ts +13 -66
  460. package/src/modules/user-management/command/reactivateUser.ts +5 -20
  461. package/src/modules/user-management/command/revokePermissionFromRole.generated.ts +1 -1
  462. package/src/modules/user-management/command/revokePermissionFromRole.test.ts +24 -62
  463. package/src/modules/user-management/command/revokePermissionFromRole.ts +5 -24
  464. package/src/modules/user-management/command/revokeRoleFromUser.generated.ts +1 -1
  465. package/src/modules/user-management/command/revokeRoleFromUser.test.ts +24 -60
  466. package/src/modules/user-management/command/revokeRoleFromUser.ts +5 -24
  467. package/src/modules/user-management/docs/commands/ActivateUser.md +7 -0
  468. package/src/modules/user-management/docs/commands/AssignPermissionToRole.md +7 -0
  469. package/src/modules/user-management/docs/commands/AssignRoleToUser.md +9 -0
  470. package/src/modules/user-management/docs/commands/CreatePermission.md +12 -0
  471. package/src/modules/user-management/docs/commands/CreateRole.md +9 -0
  472. package/src/modules/user-management/docs/commands/CreateUser.md +11 -0
  473. package/src/modules/user-management/docs/commands/DeactivateUser.md +7 -0
  474. package/src/modules/user-management/docs/commands/ReactivateUser.md +7 -0
  475. package/src/modules/user-management/docs/commands/RevokePermissionFromRole.md +7 -0
  476. package/src/modules/user-management/docs/commands/RevokeRoleFromUser.md +7 -0
  477. package/src/modules/user-management/index.ts +0 -30
  478. package/src/modules/user-management/lib/errors.generated.ts +14 -14
  479. package/src/modules/user-management/lib/permissions.generated.ts +1 -2
  480. package/src/modules/user-management/lib/recomputeUserPermissions.ts +4 -3
  481. package/src/modules/user-management/lib/types.ts +1 -1
  482. package/src/modules/user-management/module.ts +2 -7
  483. package/src/modules/user-management/tailor.config.ts +6 -4
  484. package/src/modules/user-management/tailor.d.ts +13 -0
  485. package/src/modules/user-management/testing/fixtures.ts +1 -20
  486. package/src/schemas.ts +1 -1
  487. package/src/{modules/shared → shared}/defineCommand.test.ts +23 -7
  488. package/src/{modules/shared → shared}/defineCommand.ts +19 -10
  489. package/src/{modules/shared/internal.ts → shared/index.ts} +9 -1
  490. package/src/shared/pagination.test.ts +43 -0
  491. package/src/shared/pagination.ts +22 -0
  492. package/src/{modules/shared → shared}/types.ts +13 -0
  493. package/src/{modules/testing → testing}/index.ts +14 -7
  494. package/src/testing.ts +1 -1
  495. package/src/util.ts +8 -0
  496. package/templates/config/license.config.json +4 -0
  497. package/templates/scaffold/app/backend/.env.example +1 -0
  498. package/templates/scaffold/app/backend/__dot__gitignore +4 -0
  499. package/templates/scaffold/app/backend/eslint.config.js +32 -0
  500. package/templates/scaffold/app/backend/package.json +31 -0
  501. package/templates/scaffold/app/backend/seed/data/AuditEvent.jsonl +0 -0
  502. package/templates/scaffold/app/backend/seed/data/Permission.jsonl +0 -0
  503. package/templates/scaffold/app/backend/seed/data/Permission.schema.ts +20 -0
  504. package/templates/scaffold/app/backend/seed/data/Role.jsonl +0 -0
  505. package/templates/scaffold/app/backend/seed/data/Role.schema.ts +20 -0
  506. package/templates/scaffold/app/backend/seed/data/RolePermission.jsonl +0 -0
  507. package/templates/scaffold/app/backend/seed/data/RolePermission.schema.ts +24 -0
  508. package/templates/scaffold/app/backend/seed/data/User.jsonl +1 -0
  509. package/templates/scaffold/app/backend/seed/data/User.schema.ts +20 -0
  510. package/templates/scaffold/app/backend/seed/data/UserRole.jsonl +0 -0
  511. package/templates/scaffold/app/backend/seed/data/UserRole.schema.ts +24 -0
  512. package/templates/scaffold/app/backend/seed/data/_User.jsonl +1 -0
  513. package/templates/scaffold/app/backend/seed/data/_User.schema.ts +30 -0
  514. package/templates/scaffold/app/backend/seed/exec.mjs +659 -0
  515. package/templates/scaffold/app/backend/src/executors/permissionCreated.ts +3 -0
  516. package/templates/scaffold/app/backend/src/executors/permissionDeleted.ts +3 -0
  517. package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +83 -0
  518. package/templates/scaffold/app/backend/src/modules.ts +9 -0
  519. package/templates/scaffold/app/backend/src/resolvers/createUser.ts +46 -0
  520. package/templates/scaffold/app/backend/tailor.config.ts +68 -0
  521. package/templates/scaffold/app/backend/tailor.d.ts +15 -0
  522. package/templates/scaffold/app/backend/tsconfig.json +19 -0
  523. package/templates/scaffold/app/docs/actors/.gitkeep +0 -0
  524. package/templates/scaffold/app/docs/business-flow/.gitkeep +0 -0
  525. package/templates/scaffold/app/docs/resolver/.gitkeep +0 -0
  526. package/templates/scaffold/app/docs/screen/.gitkeep +0 -0
  527. package/templates/scaffold/app/frontend/.env.example +2 -0
  528. package/templates/scaffold/app/frontend/__dot__gitignore +3 -0
  529. package/templates/scaffold/app/frontend/components.json +23 -0
  530. package/templates/scaffold/app/frontend/eslint.config.js +48 -0
  531. package/templates/scaffold/app/frontend/index.html +13 -0
  532. package/templates/scaffold/app/frontend/package.json +53 -0
  533. package/templates/scaffold/app/frontend/scripts/generate-graphql.mjs +6 -0
  534. package/templates/scaffold/app/frontend/src/App.tsx +58 -0
  535. package/templates/scaffold/app/frontend/src/components/composed/empty-state.tsx +26 -0
  536. package/templates/scaffold/app/frontend/src/components/composed/error-fallback.tsx +28 -0
  537. package/templates/scaffold/app/frontend/src/components/composed/loading.tsx +13 -0
  538. package/templates/scaffold/app/frontend/src/components/ui/badge.tsx +39 -0
  539. package/templates/scaffold/app/frontend/src/components/ui/button.tsx +60 -0
  540. package/templates/scaffold/app/frontend/src/components/ui/card.tsx +75 -0
  541. package/templates/scaffold/app/frontend/src/components/ui/form.tsx +152 -0
  542. package/templates/scaffold/app/frontend/src/components/ui/input.tsx +21 -0
  543. package/templates/scaffold/app/frontend/src/components/ui/label.tsx +21 -0
  544. package/templates/scaffold/app/frontend/src/components/ui/spinner.tsx +16 -0
  545. package/templates/scaffold/app/frontend/src/components/ui/table.tsx +90 -0
  546. package/templates/scaffold/app/frontend/src/graphql/generated/graphql-env.d.ts +103 -0
  547. package/templates/scaffold/app/frontend/src/graphql/generated/schema.graphql +1235 -0
  548. package/templates/scaffold/app/frontend/src/graphql/index.ts +15 -0
  549. package/templates/scaffold/app/frontend/src/index.css +5 -0
  550. package/templates/scaffold/app/frontend/src/lib/auth-client.ts +17 -0
  551. package/templates/scaffold/app/frontend/src/lib/utils.ts +6 -0
  552. package/templates/scaffold/app/frontend/src/main.tsx +10 -0
  553. package/templates/scaffold/app/frontend/src/pages/page.tsx +20 -0
  554. package/templates/scaffold/app/frontend/src/pages/user-management/page.tsx +19 -0
  555. package/templates/scaffold/app/frontend/src/pages/user-management/profile/page.tsx +97 -0
  556. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-detail.tsx +58 -0
  557. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/page.tsx +51 -0
  558. package/templates/scaffold/app/frontend/src/pages/user-management/user/components/users-table.tsx +101 -0
  559. package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +99 -0
  560. package/templates/scaffold/app/frontend/src/pages/user-management/user/create/page.tsx +19 -0
  561. package/templates/scaffold/app/frontend/src/pages/user-management/user/page.tsx +61 -0
  562. package/templates/scaffold/app/frontend/src/providers/graphql-provider.tsx +21 -0
  563. package/templates/scaffold/app/frontend/tsconfig.app.json +35 -0
  564. package/templates/scaffold/app/frontend/tsconfig.json +16 -0
  565. package/templates/scaffold/app/frontend/tsconfig.node.json +23 -0
  566. package/templates/scaffold/app/frontend/vite.config.ts +23 -0
  567. package/templates/scaffold/module/command/.gitkeep +0 -0
  568. package/templates/scaffold/module/db/.gitkeep +0 -0
  569. package/templates/scaffold/module/executor/.gitkeep +0 -0
  570. package/templates/scaffold/module/generated/.gitkeep +0 -0
  571. package/templates/scaffold/module/index.ts +2 -0
  572. package/templates/scaffold/module/lib/errors.ts +1 -0
  573. package/templates/scaffold/module/lib/types.ts +4 -0
  574. package/templates/scaffold/module/module.ts +7 -0
  575. package/templates/scaffold/module/permissions.ts +3 -0
  576. package/templates/scaffold/module/query/.gitkeep +0 -0
  577. package/templates/scaffold/module/tailor.config.ts +13 -0
  578. package/templates/scaffold/module/testing/fixtures.ts +1 -0
  579. package/templates/workflows/erp-kit-check.yml +37 -0
  580. package/dist/cli.js +0 -1654
  581. package/skills/erp-kit-app-2-breakdown/SKILL.md +0 -88
  582. package/skills/erp-kit-app-3-doc-review/SKILL.md +0 -112
  583. package/skills/erp-kit-app-4-impl-spec/SKILL.md +0 -116
  584. package/skills/erp-kit-app-5-implementation/references/backend.md +0 -232
  585. package/skills/erp-kit-module-1-docs/SKILL.md +0 -111
  586. package/skills/erp-kit-module-2-feature-breakdown/SKILL.md +0 -76
  587. package/skills/erp-kit-module-3-doc-review/SKILL.md +0 -294
  588. package/skills/erp-kit-module-4-tdd/SKILL.md +0 -94
  589. package/skills/erp-kit-module-4-tdd/references/exports.md +0 -8
  590. package/skills/erp-kit-module-5-impl-review/SKILL.md +0 -410
  591. package/src/commands/scaffold-templates.ts +0 -65
  592. package/src/modules/shared/index.ts +0 -1
  593. package/src/modules/user-management/command/logAuditEvent.generated.ts +0 -6
  594. package/src/modules/user-management/command/logAuditEvent.test.ts +0 -187
  595. package/src/modules/user-management/command/logAuditEvent.ts +0 -56
  596. package/src/modules/user-management/db/auditEvent.ts +0 -47
  597. package/src/modules/user-management/docs/commands/LogAuditEvent.md +0 -37
  598. package/src/modules/user-management/docs/features/audit-trail.md +0 -80
  599. package/src/modules/user-management/docs/models/AuditEvent.md +0 -36
  600. /package/skills/{erp-kit-module-2-feature-breakdown → erp-kit-module-3-plan}/references/naming.md +0 -0
  601. /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/cross-module-dependency.md +0 -0
  602. /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/db-relations.md +0 -0
  603. /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/generated-code.md +0 -0
  604. /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/models.md +0 -0
  605. /package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/commands.md +0 -0
  606. /package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/testing.md +0 -0
  607. /package/src/modules/{product-management → audit}/.gitkeep +0 -0
  608. /package/src/{modules/shared → shared}/createContext.test.ts +0 -0
  609. /package/src/{modules/shared → shared}/createContext.ts +0 -0
  610. /package/src/{modules/shared → shared}/definePermissions.test.ts +0 -0
  611. /package/src/{modules/shared → shared}/definePermissions.ts +0 -0
  612. /package/src/{modules/shared → shared}/defineQuery.test.ts +0 -0
  613. /package/src/{modules/shared → shared}/defineQuery.ts +0 -0
  614. /package/src/{modules/shared → shared}/entityTypes.ts +0 -0
  615. /package/src/{modules/shared → shared}/errors.ts +0 -0
  616. /package/src/{modules/shared → shared}/requirePermission.test.ts +0 -0
  617. /package/src/{modules/shared → shared}/requirePermission.ts +0 -0
  618. /package/src/{modules/shared → shared}/result.ts +0 -0
@@ -1,7 +1,6 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { createMockDb } from "../../testing/index";
3
- import { type CommandContext } from "../../shared/internal";
4
- import { DB } from "../generated/kysely-tailordb";
2
+ import { createMockDb } from "../../../testing/index";
3
+ import { Transaction } from "../generated/kysely-tailordb";
5
4
  import {
6
5
  CodeImmutableError,
7
6
  MissingRequiredFieldsError,
@@ -11,16 +10,11 @@ import { baseRootNode } from "../testing/fixtures";
11
10
  import { run } from "./updateTaxonomyNode";
12
11
 
13
12
  describe("updateTaxonomyNode", () => {
14
- const ctx: CommandContext = {
15
- actorId: "test-actor",
16
- permissions: ["item-management:updateTaxonomyNode"],
17
- };
18
-
19
13
  it("returns error when node does not exist", async () => {
20
- const { db, spies } = createMockDb<DB>();
14
+ const { db, spies } = createMockDb<Transaction>();
21
15
  spies.select.mockReturnValue(undefined);
22
16
 
23
- const result = await run(db, { id: "nonexistent", name: "New Name" }, ctx);
17
+ const result = await run(db, { id: "nonexistent", name: "New Name" });
24
18
  expect(result.ok).toBe(false);
25
19
  if (!result.ok) {
26
20
  expect(result.error).toBeInstanceOf(NodeNotFoundError);
@@ -28,10 +22,10 @@ describe("updateTaxonomyNode", () => {
28
22
  });
29
23
 
30
24
  it("returns error when attempting to change code", async () => {
31
- const { db, spies } = createMockDb<DB>();
25
+ const { db, spies } = createMockDb<Transaction>();
32
26
  spies.select.mockReturnValueOnce(baseRootNode);
33
27
 
34
- const result = await run(db, { id: baseRootNode.id, code: "NEW-CODE" }, ctx);
28
+ const result = await run(db, { id: baseRootNode.id, code: "NEW-CODE" });
35
29
  expect(result.ok).toBe(false);
36
30
  if (!result.ok) {
37
31
  expect(result.error).toBeInstanceOf(CodeImmutableError);
@@ -39,10 +33,10 @@ describe("updateTaxonomyNode", () => {
39
33
  });
40
34
 
41
35
  it("returns error when name is empty", async () => {
42
- const { db, spies } = createMockDb<DB>();
36
+ const { db, spies } = createMockDb<Transaction>();
43
37
  spies.select.mockReturnValueOnce(baseRootNode);
44
38
 
45
- const result = await run(db, { id: baseRootNode.id, name: "" }, ctx);
39
+ const result = await run(db, { id: baseRootNode.id, name: "" });
46
40
  expect(result.ok).toBe(false);
47
41
  if (!result.ok) {
48
42
  expect(result.error).toBeInstanceOf(MissingRequiredFieldsError);
@@ -50,10 +44,10 @@ describe("updateTaxonomyNode", () => {
50
44
  });
51
45
 
52
46
  it("returns error when name is not provided", async () => {
53
- const { db, spies } = createMockDb<DB>();
47
+ const { db, spies } = createMockDb<Transaction>();
54
48
  spies.select.mockReturnValueOnce(baseRootNode);
55
49
 
56
- const result = await run(db, { id: baseRootNode.id }, ctx);
50
+ const result = await run(db, { id: baseRootNode.id });
57
51
  expect(result.ok).toBe(false);
58
52
  if (!result.ok) {
59
53
  expect(result.error).toBeInstanceOf(MissingRequiredFieldsError);
@@ -61,12 +55,12 @@ describe("updateTaxonomyNode", () => {
61
55
  });
62
56
 
63
57
  it("updates node name", async () => {
64
- const { db, spies } = createMockDb<DB>();
58
+ const { db, spies } = createMockDb<Transaction>();
65
59
  const updatedNode = { ...baseRootNode, name: "Consumer Electronics" };
66
60
  spies.select.mockReturnValueOnce(baseRootNode);
67
61
  spies.update.mockReturnValue(updatedNode);
68
62
 
69
- const result = await run(db, { id: baseRootNode.id, name: "Consumer Electronics" }, ctx);
63
+ const result = await run(db, { id: baseRootNode.id, name: "Consumer Electronics" });
70
64
 
71
65
  expect(result.ok).toBe(true);
72
66
  if (result.ok) {
@@ -76,12 +70,12 @@ describe("updateTaxonomyNode", () => {
76
70
  });
77
71
 
78
72
  it("passes custom fields through to set", async () => {
79
- const { db, spies } = createMockDb<DB>();
73
+ const { db, spies } = createMockDb<Transaction>();
80
74
  const updatedNode = { ...baseRootNode, sortOrder: 5 };
81
75
  spies.select.mockReturnValueOnce(baseRootNode);
82
76
  spies.update.mockReturnValue(updatedNode);
83
77
 
84
- await run(db, { id: baseRootNode.id, name: "Electronics", sortOrder: 5 }, ctx);
78
+ await run(db, { id: baseRootNode.id, name: "Electronics", sortOrder: 5 });
85
79
 
86
80
  expect(spies.set).toHaveBeenNthCalledWith(1, expect.objectContaining({ sortOrder: 5 }));
87
81
  });
@@ -1,11 +1,10 @@
1
- import { ok, err, type CommandContext } from "../../shared/internal";
2
- import { DB } from "../generated/kysely-tailordb";
1
+ import { ok, err } from "../../../shared";
2
+ import { Transaction } from "../generated/kysely-tailordb";
3
3
  import {
4
4
  CodeImmutableError,
5
5
  MissingRequiredFieldsError,
6
6
  NodeNotFoundError,
7
7
  } from "../lib/errors.generated";
8
- import { getTaxonomyNode } from "../query/getTaxonomyNode.generated";
9
8
 
10
9
  export interface UpdateTaxonomyNodeInput {
11
10
  id: string;
@@ -20,14 +19,18 @@ export interface UpdateTaxonomyNodeInput {
20
19
  * Node code is immutable.
21
20
  */
22
21
  export async function run<CF extends Record<string, unknown>>(
23
- db: DB,
22
+ db: Transaction,
24
23
  input: UpdateTaxonomyNodeInput & Partial<CF>,
25
- ctx: CommandContext,
26
24
  ) {
27
25
  const { id, code, name, ...customFields } = input;
28
26
 
29
27
  // 1. Check node exists
30
- const { node } = await getTaxonomyNode(db, { id }, ctx);
28
+ const node = await db
29
+ .selectFrom("TaxonomyNode")
30
+ .selectAll()
31
+ .where("id", "=", id)
32
+ .forUpdate()
33
+ .executeTakeFirst();
31
34
 
32
35
  if (!node) {
33
36
  return err(new NodeNotFoundError(id));
@@ -30,3 +30,11 @@ flowchart TD
30
30
 
31
31
  - **ITEM_NOT_FOUND**: Specified item ID does not exist
32
32
  - **INVALID_STATE_TRANSITION**: Item is not in DRAFT status
33
+
34
+ ## Test Cases
35
+
36
+ - returns error when item does not exist
37
+ - returns error when item is not DRAFT
38
+ - returns error when item is INACTIVE
39
+ - activates a DRAFT item
40
+ - activates from custom status when from is overridden
@@ -36,3 +36,10 @@ flowchart TD
36
36
  - **ITEM_NOT_FOUND**: Specified item ID does not exist
37
37
  - **NODE_NOT_FOUND**: Specified taxonomy node ID does not exist
38
38
  - **DUPLICATE_ASSIGNMENT**: Item is already assigned to this taxonomy node
39
+
40
+ ## Test Cases
41
+
42
+ - returns error when item does not exist
43
+ - returns error when node does not exist
44
+ - returns error when assignment already exists
45
+ - creates assignment successfully
@@ -42,3 +42,13 @@ flowchart TD
42
42
  - **DUPLICATE_SKU**: An item with the same SKU already exists
43
43
  - **DUPLICATE_BARCODE**: An item with the same barcode already exists
44
44
  - **UNIT_NOT_FOUND**: Referenced unit does not exist or is inactive
45
+
46
+ ## Test Cases
47
+
48
+ - returns error when SKU already exists
49
+ - returns error when barcode already exists
50
+ - returns error when UoM does not exist
51
+ - creates item in DRAFT status by default
52
+ - creates item in ACTIVE status
53
+ - skips barcode uniqueness check when barcode is not provided
54
+ - passes custom fields through to insert
@@ -42,3 +42,12 @@ flowchart TD
42
42
  - **DUPLICATE_NODE_CODE**: A node with the same code already exists
43
43
  - **PARENT_NODE_NOT_FOUND**: Specified parent node ID does not exist
44
44
  - **MAX_DEPTH_EXCEEDED**: Adding this child would exceed the configurable tree depth limit
45
+
46
+ ## Test Cases
47
+
48
+ - returns error when code already exists
49
+ - returns error when parent does not exist
50
+ - returns error when max depth would be exceeded
51
+ - creates a root node
52
+ - creates a child node under existing parent
53
+ - passes custom fields through to insert
@@ -32,3 +32,11 @@ flowchart TD
32
32
 
33
33
  - **ITEM_NOT_FOUND**: Specified item ID does not exist
34
34
  - **INVALID_STATE_TRANSITION**: Item is not in ACTIVE status
35
+
36
+ ## Test Cases
37
+
38
+ - returns error when item does not exist
39
+ - returns error when item is not ACTIVE
40
+ - returns error when item is already INACTIVE
41
+ - deactivates an ACTIVE item
42
+ - deactivates from custom status when from is overridden
@@ -33,3 +33,10 @@ flowchart TD
33
33
 
34
34
  - **ITEM_NOT_FOUND**: Specified item ID does not exist
35
35
  - **DELETE_NON_DRAFT**: Item is in ACTIVE or INACTIVE status — only DRAFT items can be deleted
36
+
37
+ ## Test Cases
38
+
39
+ - returns error when item does not exist
40
+ - returns error when item is ACTIVE
41
+ - returns error when item is INACTIVE
42
+ - deletes a DRAFT item and removes taxonomy assignments
@@ -37,3 +37,10 @@ flowchart TD
37
37
  - **NODE_NOT_FOUND**: Specified node ID does not exist
38
38
  - **NODE_HAS_CHILDREN**: Node has one or more child nodes — children must be moved or deleted first
39
39
  - **NODE_HAS_ASSIGNMENTS**: Node has one or more item assignments — assignments must be removed first
40
+
41
+ ## Test Cases
42
+
43
+ - returns error when node does not exist
44
+ - returns error when node has children
45
+ - returns error when node has item assignments
46
+ - deletes a leaf node with no assignments
@@ -43,3 +43,13 @@ flowchart TD
43
43
  - **PARENT_NODE_NOT_FOUND**: Specified new parent node ID does not exist
44
44
  - **CIRCULAR_REFERENCE**: New parent is the node itself or one of its descendants
45
45
  - **MAX_DEPTH_EXCEEDED**: Moving this subtree would exceed the configurable tree depth limit
46
+
47
+ ## Test Cases
48
+
49
+ - returns error when node does not exist
50
+ - returns error when new parent does not exist
51
+ - returns error when moving node under itself
52
+ - returns error when moving node under its descendant
53
+ - promotes node to root by setting parent to null
54
+ - moves node to different parent
55
+ - returns error when subtree depth + new parent depth exceeds maxDepth
@@ -32,3 +32,11 @@ flowchart TD
32
32
 
33
33
  - **ITEM_NOT_FOUND**: Specified item ID does not exist
34
34
  - **INVALID_STATE_TRANSITION**: Item is not in INACTIVE status
35
+
36
+ ## Test Cases
37
+
38
+ - returns error when item does not exist
39
+ - returns error when item is not INACTIVE
40
+ - returns error when item is DRAFT
41
+ - reactivates an INACTIVE item
42
+ - reactivates from custom status when from is overridden
@@ -28,3 +28,8 @@ flowchart TD
28
28
  ## Error Scenarios
29
29
 
30
30
  - **ASSIGNMENT_NOT_FOUND**: No assignment exists for the specified item and taxonomy node combination
31
+
32
+ ## Test Cases
33
+
34
+ - returns error when assignment does not exist
35
+ - removes assignment successfully
@@ -53,3 +53,18 @@ flowchart TD
53
53
  - **UNIT_NOT_FOUND**: Referenced unit does not exist or is inactive
54
54
  - **UOM_LOCKED**: UoM cannot be changed after item has been activated (status is ACTIVE or INACTIVE)
55
55
  - **NO_FIELDS_TO_UPDATE**: No updatable fields were provided in the request
56
+
57
+ ## Test Cases
58
+
59
+ - returns error when item does not exist
60
+ - returns error when attempting to change SKU
61
+ - returns error when no fields to update
62
+ - returns error when barcode is duplicate
63
+ - returns error when changing UoM on non-DRAFT item
64
+ - returns error when changing UoM on INACTIVE item
65
+ - returns error when new UoM does not exist
66
+ - updates name in any status
67
+ - updates barcode in any status
68
+ - clears barcode by setting to null
69
+ - updates UoM in DRAFT status
70
+ - passes custom fields through to set
@@ -34,3 +34,12 @@ flowchart TD
34
34
  - **NODE_NOT_FOUND**: Specified node ID does not exist
35
35
  - **CODE_IMMUTABLE**: Attempt to change the node code
36
36
  - **MISSING_REQUIRED_FIELDS**: Name not provided or empty
37
+
38
+ ## Test Cases
39
+
40
+ - returns error when node does not exist
41
+ - returns error when attempting to change code
42
+ - returns error when name is empty
43
+ - returns error when name is not provided
44
+ - updates node name
45
+ - passes custom fields through to set
@@ -34,3 +34,11 @@ flowchart TD
34
34
  ## Error Scenarios
35
35
 
36
36
  - **NODE_NOT_FOUND**: The starting node or an ancestor in the chain is not found — traversal stops and returns partial depth
37
+
38
+ ## Test Cases
39
+
40
+ - returns depth 1 for root node
41
+ - returns depth 2 for child of root
42
+ - returns depth 3 for grandchild of root
43
+ - returns depth 1 when node not found
44
+ - handles broken ancestor chain gracefully
@@ -38,3 +38,10 @@ flowchart TD
38
38
  ## Error Scenarios
39
39
 
40
40
  - **MAX_DEPTH_EXCEEDED**: Combined new parent depth + subtree depth exceeds maxDepth — enforced by the calling command, not this query directly
41
+
42
+ ## Test Cases
43
+
44
+ - returns 1 for leaf node (no children)
45
+ - returns 2 for node with one level of children
46
+ - returns 3 for node with two levels of children
47
+ - returns max depth for node with multiple branches
@@ -39,3 +39,12 @@ flowchart TD
39
39
 
40
40
  - **CIRCULAR_REFERENCE**: The moved node appears in the ancestor chain of the new parent — returns isCircular: true
41
41
  - **SELF_REFERENCE**: Node is moved to itself as parent — returns isCircular: true
42
+
43
+ ## Test Cases
44
+
45
+ - detects self-reference as circular
46
+ - detects moving node under its child as circular
47
+ - detects moving node under its grandchild as circular
48
+ - returns not circular for valid move
49
+ - returns not circular when new parent is root
50
+ - handles broken ancestor chain gracefully (not circular)
@@ -36,3 +36,12 @@ flowchart TD
36
36
  ## Error Scenarios
37
37
 
38
38
  - **ITEM_NOT_FOUND**: No item matches the given criteria — caller receives null
39
+
40
+ ## Test Cases
41
+
42
+ - returns item when found
43
+ - returns null when item not found
44
+ - returns item when found
45
+ - returns null when item not found
46
+ - returns item when found
47
+ - returns null when item not found
@@ -27,3 +27,8 @@ flowchart TD
27
27
  ## Error Scenarios
28
28
 
29
29
  - **ASSIGNMENT_NOT_FOUND**: No assignment exists for the item-node pair — caller receives null
30
+
31
+ ## Test Cases
32
+
33
+ - returns assignment when found
34
+ - returns null when assignment not found
@@ -33,3 +33,10 @@ flowchart TD
33
33
  ## Error Scenarios
34
34
 
35
35
  - **NODE_NOT_FOUND**: No taxonomy node matches the given criteria — caller receives null
36
+
37
+ ## Test Cases
38
+
39
+ - returns node when found
40
+ - returns null when node not found
41
+ - returns node when found
42
+ - returns null when node not found
@@ -27,3 +27,8 @@ flowchart TD
27
27
  ## Error Scenarios
28
28
 
29
29
  - **NO_ASSIGNMENTS**: No item assignments exist for the given node — caller receives empty array
30
+
31
+ ## Test Cases
32
+
33
+ - returns assignments when found
34
+ - returns empty array when no assignments
@@ -27,3 +27,9 @@ flowchart TD
27
27
  ## Error Scenarios
28
28
 
29
29
  - **NO_CHILDREN**: No child nodes exist for the given parent — caller receives empty array
30
+
31
+ ## Test Cases
32
+
33
+ - returns children when found
34
+ - returns multiple children
35
+ - returns empty array when no children
@@ -1,53 +1,2 @@
1
1
  export { defineModule } from "./module";
2
2
  export { permissions, own, all } from "./lib/permissions.generated";
3
-
4
- // generated types
5
- export { ItemStatus } from "./generated/enums";
6
-
7
- // errors
8
- export {
9
- ItemNotFoundError,
10
- DuplicateSkuError,
11
- DuplicateBarcodeError,
12
- UnitNotFoundError,
13
- SkuImmutableError,
14
- UomLockedError,
15
- NoFieldsToUpdateError,
16
- InvalidStateTransitionError,
17
- DeleteNonDraftError,
18
- NodeNotFoundError,
19
- DuplicateNodeCodeError,
20
- ParentNodeNotFoundError,
21
- MaxDepthExceededError,
22
- CodeImmutableError,
23
- MissingRequiredFieldsError,
24
- CircularReferenceError,
25
- NodeHasChildrenError,
26
- NodeHasAssignmentsError,
27
- DuplicateAssignmentError,
28
- AssignmentNotFoundError,
29
- } from "./lib/errors.generated";
30
-
31
- // query input types
32
- export { type GetItemInput } from "./query/getItem";
33
- export { type GetTaxonomyNodeInput } from "./query/getTaxonomyNode";
34
- export { type GetTaxonomyNodeChildrenInput } from "./query/getTaxonomyNodeChildren";
35
- export { type GetItemTaxonomyAssignmentInput } from "./query/getItemTaxonomyAssignment";
36
- export { type GetTaxonomyNodeAssignmentsInput } from "./query/getTaxonomyNodeAssignments";
37
- export { type CalculateNodeDepthInput } from "./query/calculateNodeDepth";
38
- export { type CalculateSubtreeDepthInput } from "./query/calculateSubtreeDepth";
39
- export { type DetectCircularReferenceInput } from "./query/detectCircularReference";
40
-
41
- // command input types
42
- export { type CreateItemInput } from "./command/createItem";
43
- export { type UpdateItemInput } from "./command/updateItem";
44
- export { type ActivateItemInput } from "./command/activateItem";
45
- export { type DeactivateItemInput } from "./command/deactivateItem";
46
- export { type ReactivateItemInput } from "./command/reactivateItem";
47
- export { type DeleteItemInput } from "./command/deleteItem";
48
- export { type CreateTaxonomyNodeInput } from "./command/createTaxonomyNode";
49
- export { type UpdateTaxonomyNodeInput } from "./command/updateTaxonomyNode";
50
- export { type MoveTaxonomyNodeInput } from "./command/moveTaxonomyNode";
51
- export { type DeleteTaxonomyNodeInput } from "./command/deleteTaxonomyNode";
52
- export { type AssignItemToTaxonomyInput } from "./command/assignItemToTaxonomy";
53
- export { type RemoveItemFromTaxonomyInput } from "./command/removeItemFromTaxonomy";
@@ -1,117 +1,117 @@
1
1
  // @generated — do not edit
2
- import { createDomainError } from "../../shared/internal";
2
+ import { createDomainError } from "../../../shared";
3
3
 
4
4
  export const ItemNotFoundError = createDomainError(
5
- "ItemNotFoundError", "ITEM_NOT_FOUND",
5
+ "ItemNotFoundError", "ITEM_MANAGEMENT_ITEM_NOT_FOUND",
6
6
  (identifier: string) => `Specified item ID does not exist: ${identifier}`,
7
7
  );
8
8
 
9
9
  export const InvalidStateTransitionError = createDomainError(
10
- "InvalidStateTransitionError", "INVALID_STATE_TRANSITION",
10
+ "InvalidStateTransitionError", "ITEM_MANAGEMENT_INVALID_STATE_TRANSITION",
11
11
  (identifier: string) => `Item is not in DRAFT status: ${identifier}`,
12
12
  );
13
13
 
14
14
  export const NodeNotFoundError = createDomainError(
15
- "NodeNotFoundError", "NODE_NOT_FOUND",
15
+ "NodeNotFoundError", "ITEM_MANAGEMENT_NODE_NOT_FOUND",
16
16
  (identifier: string) => `Specified taxonomy node ID does not exist: ${identifier}`,
17
17
  );
18
18
 
19
19
  export const DuplicateAssignmentError = createDomainError(
20
- "DuplicateAssignmentError", "DUPLICATE_ASSIGNMENT",
20
+ "DuplicateAssignmentError", "ITEM_MANAGEMENT_DUPLICATE_ASSIGNMENT",
21
21
  (identifier: string) => `Item is already assigned to this taxonomy node: ${identifier}`,
22
22
  );
23
23
 
24
24
  export const DuplicateSkuError = createDomainError(
25
- "DuplicateSkuError", "DUPLICATE_SKU",
25
+ "DuplicateSkuError", "ITEM_MANAGEMENT_DUPLICATE_SKU",
26
26
  (identifier: string) => `An item with the same SKU already exists: ${identifier}`,
27
27
  );
28
28
 
29
29
  export const DuplicateBarcodeError = createDomainError(
30
- "DuplicateBarcodeError", "DUPLICATE_BARCODE",
30
+ "DuplicateBarcodeError", "ITEM_MANAGEMENT_DUPLICATE_BARCODE",
31
31
  (identifier: string) => `An item with the same barcode already exists: ${identifier}`,
32
32
  );
33
33
 
34
34
  export const UnitNotFoundError = createDomainError(
35
- "UnitNotFoundError", "UNIT_NOT_FOUND",
35
+ "UnitNotFoundError", "ITEM_MANAGEMENT_UNIT_NOT_FOUND",
36
36
  (identifier: string) => `Referenced unit does not exist or is inactive: ${identifier}`,
37
37
  );
38
38
 
39
39
  export const DuplicateNodeCodeError = createDomainError(
40
- "DuplicateNodeCodeError", "DUPLICATE_NODE_CODE",
40
+ "DuplicateNodeCodeError", "ITEM_MANAGEMENT_DUPLICATE_NODE_CODE",
41
41
  (identifier: string) => `A node with the same code already exists: ${identifier}`,
42
42
  );
43
43
 
44
44
  export const ParentNodeNotFoundError = createDomainError(
45
- "ParentNodeNotFoundError", "PARENT_NODE_NOT_FOUND",
45
+ "ParentNodeNotFoundError", "ITEM_MANAGEMENT_PARENT_NODE_NOT_FOUND",
46
46
  (identifier: string) => `Specified parent node ID does not exist: ${identifier}`,
47
47
  );
48
48
 
49
49
  export const MaxDepthExceededError = createDomainError(
50
- "MaxDepthExceededError", "MAX_DEPTH_EXCEEDED",
50
+ "MaxDepthExceededError", "ITEM_MANAGEMENT_MAX_DEPTH_EXCEEDED",
51
51
  (identifier: string) => `Adding this child would exceed the configurable tree depth limit: ${identifier}`,
52
52
  );
53
53
 
54
54
  export const DeleteNonDraftError = createDomainError(
55
- "DeleteNonDraftError", "DELETE_NON_DRAFT",
55
+ "DeleteNonDraftError", "ITEM_MANAGEMENT_DELETE_NON_DRAFT",
56
56
  (identifier: string) => `Item is in ACTIVE or INACTIVE status — only DRAFT items can be deleted: ${identifier}`,
57
57
  );
58
58
 
59
59
  export const NodeHasChildrenError = createDomainError(
60
- "NodeHasChildrenError", "NODE_HAS_CHILDREN",
60
+ "NodeHasChildrenError", "ITEM_MANAGEMENT_NODE_HAS_CHILDREN",
61
61
  (identifier: string) => `Node has one or more child nodes — children must be moved or deleted first: ${identifier}`,
62
62
  );
63
63
 
64
64
  export const NodeHasAssignmentsError = createDomainError(
65
- "NodeHasAssignmentsError", "NODE_HAS_ASSIGNMENTS",
65
+ "NodeHasAssignmentsError", "ITEM_MANAGEMENT_NODE_HAS_ASSIGNMENTS",
66
66
  (identifier: string) => `Node has one or more item assignments — assignments must be removed first: ${identifier}`,
67
67
  );
68
68
 
69
69
  export const CircularReferenceError = createDomainError(
70
- "CircularReferenceError", "CIRCULAR_REFERENCE",
70
+ "CircularReferenceError", "ITEM_MANAGEMENT_CIRCULAR_REFERENCE",
71
71
  (identifier: string) => `New parent is the node itself or one of its descendants: ${identifier}`,
72
72
  );
73
73
 
74
74
  export const AssignmentNotFoundError = createDomainError(
75
- "AssignmentNotFoundError", "ASSIGNMENT_NOT_FOUND",
75
+ "AssignmentNotFoundError", "ITEM_MANAGEMENT_ASSIGNMENT_NOT_FOUND",
76
76
  (identifier: string) => `No assignment exists for the specified item and taxonomy node combination: ${identifier}`,
77
77
  );
78
78
 
79
79
  export const SkuImmutableError = createDomainError(
80
- "SkuImmutableError", "SKU_IMMUTABLE",
80
+ "SkuImmutableError", "ITEM_MANAGEMENT_SKU_IMMUTABLE",
81
81
  (identifier: string) => `Attempt to change the SKU field: ${identifier}`,
82
82
  );
83
83
 
84
84
  export const UomLockedError = createDomainError(
85
- "UomLockedError", "UOM_LOCKED",
85
+ "UomLockedError", "ITEM_MANAGEMENT_UOM_LOCKED",
86
86
  (identifier: string) => `UoM cannot be changed after item has been activated (status is ACTIVE or INACTIVE): ${identifier}`,
87
87
  );
88
88
 
89
89
  export const NoFieldsToUpdateError = createDomainError(
90
- "NoFieldsToUpdateError", "NO_FIELDS_TO_UPDATE",
90
+ "NoFieldsToUpdateError", "ITEM_MANAGEMENT_NO_FIELDS_TO_UPDATE",
91
91
  (identifier: string) => `No updatable fields were provided in the request: ${identifier}`,
92
92
  );
93
93
 
94
94
  export const CodeImmutableError = createDomainError(
95
- "CodeImmutableError", "CODE_IMMUTABLE",
95
+ "CodeImmutableError", "ITEM_MANAGEMENT_CODE_IMMUTABLE",
96
96
  (identifier: string) => `Attempt to change the node code: ${identifier}`,
97
97
  );
98
98
 
99
99
  export const MissingRequiredFieldsError = createDomainError(
100
- "MissingRequiredFieldsError", "MISSING_REQUIRED_FIELDS",
100
+ "MissingRequiredFieldsError", "ITEM_MANAGEMENT_MISSING_REQUIRED_FIELDS",
101
101
  (identifier: string) => `Name not provided or empty: ${identifier}`,
102
102
  );
103
103
 
104
104
  export const SelfReferenceError = createDomainError(
105
- "SelfReferenceError", "SELF_REFERENCE",
105
+ "SelfReferenceError", "ITEM_MANAGEMENT_SELF_REFERENCE",
106
106
  (identifier: string) => `Node is moved to itself as parent — returns isCircular: true: ${identifier}`,
107
107
  );
108
108
 
109
109
  export const NoAssignmentsError = createDomainError(
110
- "NoAssignmentsError", "NO_ASSIGNMENTS",
110
+ "NoAssignmentsError", "ITEM_MANAGEMENT_NO_ASSIGNMENTS",
111
111
  (identifier: string) => `No item assignments exist for the given node — caller receives empty array: ${identifier}`,
112
112
  );
113
113
 
114
114
  export const NoChildrenError = createDomainError(
115
- "NoChildrenError", "NO_CHILDREN",
115
+ "NoChildrenError", "ITEM_MANAGEMENT_NO_CHILDREN",
116
116
  (identifier: string) => `No child nodes exist for the given parent — caller receives empty array: ${identifier}`,
117
117
  );
@@ -1,5 +1,5 @@
1
1
  // @generated — do not edit
2
- import { definePermissions } from "../../shared/internal";
2
+ import { definePermissions } from "../../../shared";
3
3
 
4
4
  export const { permissions, own, all } = definePermissions("item-management", [
5
5
  "activateItem",
@@ -1,4 +1,4 @@
1
- import type { InferSchema, Selectable, Insertable, Updateable } from "../../shared/internal";
1
+ import type { InferSchema, Selectable, Insertable, Updateable } from "../../../shared";
2
2
  import type { DB } from "../generated/kysely-tailordb";
3
3
 
4
4
  export type Schema = InferSchema<DB>;
@@ -1,5 +1,5 @@
1
1
  import { type TailorAnyDBField } from "@tailor-platform/sdk";
2
- import { type EmptyFields, type FieldsToInsertable } from "../shared/internal";
2
+ import { type EmptyFields, type FieldsToInsertable } from "../../shared";
3
3
  import type { defineModule as definePrimitivesModule } from "../primitives";
4
4
  import { createItem } from "./command/createItem.generated";
5
5
  import { updateItem } from "./command/updateItem.generated";
@@ -1,5 +1,5 @@
1
1
  // @generated — do not edit
2
- import { defineQuery } from "../../shared/internal";
2
+ import { defineQuery } from "../../../shared";
3
3
  import { run } from "./calculateNodeDepth";
4
4
 
5
5
  export const calculateNodeDepth = defineQuery(run);