@tailor-platform/erp-kit 0.2.2 → 0.4.0

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 (639) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +193 -69
  3. package/dist/cli.mjs +1038 -398
  4. package/package.json +7 -5
  5. package/skills/erp-kit-app-1-requirements/SKILL.md +27 -17
  6. package/skills/erp-kit-app-2-requirements-review/SKILL.md +5 -4
  7. package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +10 -1
  8. package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +10 -1
  9. package/skills/erp-kit-app-3-plan/SKILL.md +31 -34
  10. package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +22 -36
  11. package/skills/erp-kit-app-3-plan/references/screen-extraction.md +15 -1
  12. package/skills/erp-kit-app-3-plan/references/story-extraction.md +8 -2
  13. package/skills/erp-kit-app-4-plan-review/SKILL.md +1 -10
  14. package/skills/erp-kit-app-5-impl-backend/SKILL.md +10 -19
  15. package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -22
  16. package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +0 -1
  17. package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +13 -4
  18. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +5 -0
  19. package/skills/erp-kit-app-6-impl-frontend/references/pages.md +16 -46
  20. package/skills/erp-kit-app-7-impl-review/SKILL.md +13 -11
  21. package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +16 -17
  22. package/skills/erp-kit-app-shared/SKILL.md +15 -0
  23. package/skills/erp-kit-app-shared/references/link-format-reference.md +13 -0
  24. package/skills/erp-kit-app-shared/references/naming-conventions.md +21 -0
  25. package/skills/erp-kit-app-shared/references/resolver-classification.md +23 -0
  26. package/skills/erp-kit-app-shared/references/schema-constraints.md +25 -0
  27. package/skills/erp-kit-module-1-requirements/SKILL.md +7 -13
  28. package/skills/erp-kit-module-1-requirements/references/feature-doc.md +1 -1
  29. package/skills/erp-kit-module-2-requirements-review/SKILL.md +21 -5
  30. package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +19 -0
  31. package/skills/erp-kit-module-3-plan/SKILL.md +6 -8
  32. package/skills/erp-kit-module-3-plan/references/naming.md +15 -1
  33. package/skills/erp-kit-module-4-plan-review/SKILL.md +21 -5
  34. package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +15 -0
  35. package/skills/erp-kit-module-5-impl/SKILL.md +12 -10
  36. package/skills/erp-kit-module-5-impl/references/generated-code.md +2 -2
  37. package/skills/erp-kit-module-6-impl-review/SKILL.md +21 -7
  38. package/skills/erp-kit-module-6-impl-review/references/error-implementation-parity.md +1 -1
  39. package/skills/erp-kit-module-6-impl-review/references/errors.md +1 -1
  40. package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +15 -0
  41. package/skills/erp-kit-module-shared/SKILL.md +4 -0
  42. package/skills/erp-kit-module-shared/references/errors.md +1 -1
  43. package/skills/erp-kit-module-shared/references/queries.md +1 -1
  44. package/skills/erp-kit-module-shared/references/structure.md +1 -1
  45. package/skills/erp-kit-update/SKILL.md +2 -2
  46. package/src/commands/app/index.ts +75 -31
  47. package/src/commands/check.test.ts +1 -1
  48. package/src/commands/check.ts +2 -35
  49. package/src/commands/doc/index.ts +83 -0
  50. package/src/commands/doc/module.test.ts +119 -0
  51. package/src/commands/doc/module.ts +114 -0
  52. package/src/commands/doc/modules.test.ts +103 -0
  53. package/src/commands/doc/modules.ts +98 -0
  54. package/src/commands/doc/search.test.ts +94 -0
  55. package/src/commands/doc/search.ts +111 -0
  56. package/src/commands/generate-doc.test.ts +63 -0
  57. package/src/commands/generate-doc.ts +105 -0
  58. package/src/commands/index.ts +20 -8
  59. package/src/commands/init-module.test.ts +43 -0
  60. package/src/commands/init-module.ts +74 -0
  61. package/src/commands/lib/command-result.ts +30 -0
  62. package/src/commands/lib/discovery.test.ts +74 -0
  63. package/src/commands/lib/discovery.ts +106 -0
  64. package/src/commands/lib/paths.ts +22 -0
  65. package/src/commands/lib/sync-check-source.test.ts +197 -0
  66. package/src/commands/lib/sync-check-source.ts +100 -0
  67. package/src/commands/lib/sync-check-tests.test.ts +178 -0
  68. package/src/commands/lib/sync-check-tests.ts +69 -0
  69. package/src/commands/mock/index.ts +11 -6
  70. package/src/commands/module/generate.ts +39 -14
  71. package/src/commands/module/index.ts +31 -45
  72. package/src/commands/parse-doc-test-cases.ts +13 -2
  73. package/src/commands/sync-check.test.ts +6 -364
  74. package/src/commands/sync-check.ts +7 -251
  75. package/src/generator/generate-app-code.test.ts +121 -0
  76. package/src/generator/generate-app-code.ts +51 -0
  77. package/src/{commands/scaffold.test.ts → generator/generate-code-boilerplate.test.ts} +19 -89
  78. package/src/generator/generate-code.test.ts +57 -6
  79. package/src/generator/generate-code.ts +40 -157
  80. package/src/generator/generate-errors.ts +34 -0
  81. package/src/generator/generate-permissions.ts +12 -0
  82. package/src/generator/generate-shells.ts +28 -0
  83. package/src/generator/generate-stubs.ts +31 -0
  84. package/src/generator/parse-resolver-doc.test.ts +89 -0
  85. package/src/generator/parse-resolver-doc.ts +125 -0
  86. package/src/generator/scaffold.ts +57 -0
  87. package/src/generator/stub-templates.test.ts +55 -0
  88. package/src/generator/stub-templates.ts +145 -0
  89. package/src/integration.test.ts +2 -2
  90. package/src/modules/audit/README.md +46 -0
  91. package/src/modules/audit/command/activateAuditPolicy.generated.ts +6 -0
  92. package/src/modules/audit/command/activateAuditPolicy.test.ts +186 -0
  93. package/src/modules/audit/command/activateAuditPolicy.ts +97 -0
  94. package/src/modules/audit/command/createAuditPolicy.generated.ts +6 -0
  95. package/src/modules/audit/command/createAuditPolicy.test.ts +395 -0
  96. package/src/modules/audit/command/createAuditPolicy.ts +131 -0
  97. package/src/modules/audit/command/deactivateAuditPolicy.generated.ts +6 -0
  98. package/src/modules/audit/command/deactivateAuditPolicy.test.ts +138 -0
  99. package/src/modules/audit/command/deactivateAuditPolicy.ts +58 -0
  100. package/src/modules/audit/command/deleteAuditPolicy.generated.ts +6 -0
  101. package/src/modules/audit/command/deleteAuditPolicy.test.ts +121 -0
  102. package/src/modules/audit/command/deleteAuditPolicy.ts +52 -0
  103. package/src/modules/audit/command/logAuditEvent.generated.ts +6 -0
  104. package/src/modules/audit/command/logAuditEvent.test.ts +991 -0
  105. package/src/modules/audit/command/logAuditEvent.ts +357 -0
  106. package/src/modules/audit/command/reactivateAuditPolicy.generated.ts +6 -0
  107. package/src/modules/audit/command/reactivateAuditPolicy.test.ts +143 -0
  108. package/src/modules/audit/command/reactivateAuditPolicy.ts +79 -0
  109. package/src/modules/audit/command/registerAuditableEntity.generated.ts +6 -0
  110. package/src/modules/audit/command/registerAuditableEntity.test.ts +268 -0
  111. package/src/modules/audit/command/registerAuditableEntity.ts +94 -0
  112. package/src/modules/audit/command/replaceAuditPolicy.generated.ts +6 -0
  113. package/src/modules/audit/command/replaceAuditPolicy.test.ts +242 -0
  114. package/src/modules/audit/command/replaceAuditPolicy.ts +91 -0
  115. package/src/modules/audit/command/updateAuditPolicy.generated.ts +6 -0
  116. package/src/modules/audit/command/updateAuditPolicy.test.ts +284 -0
  117. package/src/modules/audit/command/updateAuditPolicy.ts +151 -0
  118. package/src/modules/audit/db/auditEntry.ts +47 -0
  119. package/src/modules/audit/db/auditPolicy.ts +33 -0
  120. package/src/modules/audit/db/auditableEntity.ts +22 -0
  121. package/src/modules/audit/db/changeDetail.ts +28 -0
  122. package/src/modules/audit/db/policyFieldRule.ts +23 -0
  123. package/src/modules/audit/docs/commands/ActivateAuditPolicy.md +69 -0
  124. package/src/modules/audit/docs/commands/CreateAuditPolicy.md +79 -0
  125. package/src/modules/audit/docs/commands/DeactivateAuditPolicy.md +55 -0
  126. package/src/modules/audit/docs/commands/DeleteAuditPolicy.md +55 -0
  127. package/src/modules/audit/docs/commands/LogAuditEvent.md +137 -0
  128. package/src/modules/audit/docs/commands/ReactivateAuditPolicy.md +58 -0
  129. package/src/modules/audit/docs/commands/RegisterAuditableEntity.md +62 -0
  130. package/src/modules/audit/docs/commands/ReplaceAuditPolicy.md +72 -0
  131. package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +77 -0
  132. package/src/modules/audit/docs/features/audit-event-logging.md +126 -0
  133. package/src/modules/audit/docs/features/audit-policy-configuration.md +135 -0
  134. package/src/modules/audit/docs/features/field-level-change-tracking.md +95 -0
  135. package/src/modules/audit/docs/models/AuditEntry.md +55 -0
  136. package/src/modules/audit/docs/models/AuditPolicy.md +79 -0
  137. package/src/modules/audit/docs/models/AuditableEntity.md +38 -0
  138. package/src/modules/audit/docs/models/ChangeDetail.md +55 -0
  139. package/src/modules/audit/docs/models/PolicyFieldRule.md +45 -0
  140. package/src/modules/audit/docs/queries/GetAuditEntry.md +49 -0
  141. package/src/modules/audit/docs/queries/GetAuditPolicy.md +54 -0
  142. package/src/modules/audit/docs/queries/GetAuditSummary.md +84 -0
  143. package/src/modules/audit/docs/queries/GetChangeDetails.md +56 -0
  144. package/src/modules/audit/docs/queries/ListAuditPolicies.md +58 -0
  145. package/src/modules/audit/docs/queries/SearchAuditEntries.md +91 -0
  146. package/src/modules/audit/generated/kysely-tailordb.ts +92 -0
  147. package/src/modules/audit/index.ts +2 -0
  148. package/src/modules/audit/lib/_db_deps.ts +13 -0
  149. package/src/modules/audit/lib/errors.generated.ts +120 -0
  150. package/src/modules/audit/lib/permissions.generated.ts +14 -0
  151. package/src/modules/audit/lib/types.ts +28 -0
  152. package/src/modules/audit/module.ts +57 -0
  153. package/src/modules/audit/permissions.ts +39 -0
  154. package/src/modules/audit/query/getAuditEntry.generated.ts +5 -0
  155. package/src/modules/audit/query/getAuditEntry.test.ts +123 -0
  156. package/src/modules/audit/query/getAuditEntry.ts +36 -0
  157. package/src/modules/audit/query/getAuditPolicy.generated.ts +5 -0
  158. package/src/modules/audit/query/getAuditPolicy.test.ts +169 -0
  159. package/src/modules/audit/query/getAuditPolicy.ts +42 -0
  160. package/src/modules/audit/query/getAuditSummary.generated.ts +5 -0
  161. package/src/modules/audit/query/getAuditSummary.test.ts +632 -0
  162. package/src/modules/audit/query/getAuditSummary.ts +164 -0
  163. package/src/modules/audit/query/getChangeDetails.generated.ts +5 -0
  164. package/src/modules/audit/query/getChangeDetails.test.ts +195 -0
  165. package/src/modules/audit/query/getChangeDetails.ts +42 -0
  166. package/src/modules/audit/query/listAuditPolicies.generated.ts +5 -0
  167. package/src/modules/audit/query/listAuditPolicies.test.ts +239 -0
  168. package/src/modules/audit/query/listAuditPolicies.ts +100 -0
  169. package/src/modules/audit/query/searchAuditEntries.generated.ts +5 -0
  170. package/src/modules/audit/query/searchAuditEntries.test.ts +424 -0
  171. package/src/modules/audit/query/searchAuditEntries.ts +121 -0
  172. package/src/modules/audit/tailor.config.ts +13 -0
  173. package/src/modules/audit/tailor.d.ts +13 -0
  174. package/src/modules/audit/testing/fixtures.ts +215 -0
  175. package/src/modules/business-partner/README.md +60 -0
  176. package/src/modules/business-partner/command/.gitkeep +0 -0
  177. package/src/modules/business-partner/command/activatePartner.generated.ts +6 -0
  178. package/src/modules/business-partner/command/activatePartner.test.ts +59 -0
  179. package/src/modules/business-partner/command/activatePartner.ts +45 -0
  180. package/src/modules/business-partner/command/assignRoleToPartner.generated.ts +6 -0
  181. package/src/modules/business-partner/command/assignRoleToPartner.test.ts +113 -0
  182. package/src/modules/business-partner/command/assignRoleToPartner.ts +72 -0
  183. package/src/modules/business-partner/command/createContactPerson.generated.ts +6 -0
  184. package/src/modules/business-partner/command/createContactPerson.test.ts +193 -0
  185. package/src/modules/business-partner/command/createContactPerson.ts +98 -0
  186. package/src/modules/business-partner/command/createPartner.generated.ts +6 -0
  187. package/src/modules/business-partner/command/createPartner.test.ts +179 -0
  188. package/src/modules/business-partner/command/createPartner.ts +83 -0
  189. package/src/modules/business-partner/command/createPartnerAddress.generated.ts +6 -0
  190. package/src/modules/business-partner/command/createPartnerAddress.test.ts +195 -0
  191. package/src/modules/business-partner/command/createPartnerAddress.ts +119 -0
  192. package/src/modules/business-partner/command/createPartnerBankAccount.generated.ts +6 -0
  193. package/src/modules/business-partner/command/createPartnerBankAccount.test.ts +297 -0
  194. package/src/modules/business-partner/command/createPartnerBankAccount.ts +114 -0
  195. package/src/modules/business-partner/command/createPartnerIdentification.generated.ts +6 -0
  196. package/src/modules/business-partner/command/createPartnerIdentification.test.ts +255 -0
  197. package/src/modules/business-partner/command/createPartnerIdentification.ts +97 -0
  198. package/src/modules/business-partner/command/deactivateContactPerson.generated.ts +6 -0
  199. package/src/modules/business-partner/command/deactivateContactPerson.test.ts +70 -0
  200. package/src/modules/business-partner/command/deactivateContactPerson.ts +54 -0
  201. package/src/modules/business-partner/command/deactivatePartner.generated.ts +6 -0
  202. package/src/modules/business-partner/command/deactivatePartner.test.ts +59 -0
  203. package/src/modules/business-partner/command/deactivatePartner.ts +46 -0
  204. package/src/modules/business-partner/command/deleteContactPerson.generated.ts +6 -0
  205. package/src/modules/business-partner/command/deleteContactPerson.test.ts +61 -0
  206. package/src/modules/business-partner/command/deleteContactPerson.ts +48 -0
  207. package/src/modules/business-partner/command/deletePartner.generated.ts +6 -0
  208. package/src/modules/business-partner/command/deletePartner.test.ts +58 -0
  209. package/src/modules/business-partner/command/deletePartner.ts +46 -0
  210. package/src/modules/business-partner/command/deletePartnerAddress.generated.ts +6 -0
  211. package/src/modules/business-partner/command/deletePartnerAddress.test.ts +74 -0
  212. package/src/modules/business-partner/command/deletePartnerAddress.ts +52 -0
  213. package/src/modules/business-partner/command/deletePartnerBankAccount.generated.ts +6 -0
  214. package/src/modules/business-partner/command/deletePartnerBankAccount.test.ts +55 -0
  215. package/src/modules/business-partner/command/deletePartnerBankAccount.ts +36 -0
  216. package/src/modules/business-partner/command/deletePartnerIdentification.generated.ts +6 -0
  217. package/src/modules/business-partner/command/deletePartnerIdentification.test.ts +47 -0
  218. package/src/modules/business-partner/command/deletePartnerIdentification.ts +37 -0
  219. package/src/modules/business-partner/command/reactivateContactPerson.generated.ts +6 -0
  220. package/src/modules/business-partner/command/reactivateContactPerson.test.ts +48 -0
  221. package/src/modules/business-partner/command/reactivateContactPerson.ts +48 -0
  222. package/src/modules/business-partner/command/reactivatePartner.generated.ts +6 -0
  223. package/src/modules/business-partner/command/reactivatePartner.test.ts +59 -0
  224. package/src/modules/business-partner/command/reactivatePartner.ts +46 -0
  225. package/src/modules/business-partner/command/removeRoleFromPartner.generated.ts +6 -0
  226. package/src/modules/business-partner/command/removeRoleFromPartner.test.ts +82 -0
  227. package/src/modules/business-partner/command/removeRoleFromPartner.ts +73 -0
  228. package/src/modules/business-partner/command/setDefaultPartnerAddress.generated.ts +6 -0
  229. package/src/modules/business-partner/command/setDefaultPartnerAddress.test.ts +60 -0
  230. package/src/modules/business-partner/command/setDefaultPartnerAddress.ts +48 -0
  231. package/src/modules/business-partner/command/setDefaultPartnerBankAccount.generated.ts +6 -0
  232. package/src/modules/business-partner/command/setDefaultPartnerBankAccount.test.ts +56 -0
  233. package/src/modules/business-partner/command/setDefaultPartnerBankAccount.ts +51 -0
  234. package/src/modules/business-partner/command/setPrimaryContactPerson.generated.ts +6 -0
  235. package/src/modules/business-partner/command/setPrimaryContactPerson.test.ts +63 -0
  236. package/src/modules/business-partner/command/setPrimaryContactPerson.ts +55 -0
  237. package/src/modules/business-partner/command/updateContactPerson.generated.ts +6 -0
  238. package/src/modules/business-partner/command/updateContactPerson.test.ts +193 -0
  239. package/src/modules/business-partner/command/updateContactPerson.ts +92 -0
  240. package/src/modules/business-partner/command/updatePartner.generated.ts +6 -0
  241. package/src/modules/business-partner/command/updatePartner.test.ts +101 -0
  242. package/src/modules/business-partner/command/updatePartner.ts +76 -0
  243. package/src/modules/business-partner/command/updatePartnerAddress.generated.ts +6 -0
  244. package/src/modules/business-partner/command/updatePartnerAddress.test.ts +148 -0
  245. package/src/modules/business-partner/command/updatePartnerAddress.ts +64 -0
  246. package/src/modules/business-partner/command/updatePartnerBankAccount.generated.ts +6 -0
  247. package/src/modules/business-partner/command/updatePartnerBankAccount.test.ts +249 -0
  248. package/src/modules/business-partner/command/updatePartnerBankAccount.ts +109 -0
  249. package/src/modules/business-partner/command/updatePartnerIdentification.generated.ts +6 -0
  250. package/src/modules/business-partner/command/updatePartnerIdentification.test.ts +162 -0
  251. package/src/modules/business-partner/command/updatePartnerIdentification.ts +105 -0
  252. package/src/modules/business-partner/db/.gitkeep +0 -0
  253. package/src/modules/business-partner/db/businessPartner.ts +59 -0
  254. package/src/modules/business-partner/db/contactPerson.ts +49 -0
  255. package/src/modules/business-partner/db/partnerAddress.ts +45 -0
  256. package/src/modules/business-partner/db/partnerBankAccount.ts +53 -0
  257. package/src/modules/business-partner/db/partnerIdentification.ts +53 -0
  258. package/src/modules/business-partner/db/partnerRole.ts +43 -0
  259. package/src/modules/business-partner/docs/commands/ActivatePartner.md +39 -0
  260. package/src/modules/business-partner/docs/commands/AssignRoleToPartner.md +49 -0
  261. package/src/modules/business-partner/docs/commands/CreateContactPerson.md +59 -0
  262. package/src/modules/business-partner/docs/commands/CreatePartner.md +54 -0
  263. package/src/modules/business-partner/docs/commands/CreatePartnerAddress.md +60 -0
  264. package/src/modules/business-partner/docs/commands/CreatePartnerBankAccount.md +68 -0
  265. package/src/modules/business-partner/docs/commands/CreatePartnerIdentification.md +59 -0
  266. package/src/modules/business-partner/docs/commands/DeactivateContactPerson.md +42 -0
  267. package/src/modules/business-partner/docs/commands/DeactivatePartner.md +39 -0
  268. package/src/modules/business-partner/docs/commands/DeleteContactPerson.md +43 -0
  269. package/src/modules/business-partner/docs/commands/DeletePartner.md +40 -0
  270. package/src/modules/business-partner/docs/commands/DeletePartnerAddress.md +40 -0
  271. package/src/modules/business-partner/docs/commands/DeletePartnerBankAccount.md +35 -0
  272. package/src/modules/business-partner/docs/commands/DeletePartnerIdentification.md +33 -0
  273. package/src/modules/business-partner/docs/commands/ReactivateContactPerson.md +38 -0
  274. package/src/modules/business-partner/docs/commands/ReactivatePartner.md +39 -0
  275. package/src/modules/business-partner/docs/commands/RemoveRoleFromPartner.md +46 -0
  276. package/src/modules/business-partner/docs/commands/SetDefaultPartnerAddress.md +38 -0
  277. package/src/modules/business-partner/docs/commands/SetDefaultPartnerBankAccount.md +38 -0
  278. package/src/modules/business-partner/docs/commands/SetPrimaryContactPerson.md +43 -0
  279. package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +66 -0
  280. package/src/modules/business-partner/docs/commands/UpdatePartner.md +48 -0
  281. package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +46 -0
  282. package/src/modules/business-partner/docs/commands/UpdatePartnerBankAccount.md +64 -0
  283. package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +52 -0
  284. package/src/modules/business-partner/docs/features/contact-person-management.md +70 -0
  285. package/src/modules/business-partner/docs/features/partner-address-management.md +96 -0
  286. package/src/modules/business-partner/docs/features/partner-bank-account.md +70 -0
  287. package/src/modules/business-partner/docs/features/partner-identification.md +76 -0
  288. package/src/modules/business-partner/docs/features/partner-lifecycle.md +59 -0
  289. package/src/modules/business-partner/docs/features/partner-role-classification.md +73 -0
  290. package/src/modules/business-partner/docs/models/BusinessPartner.md +64 -0
  291. package/src/modules/business-partner/docs/models/ContactPerson.md +62 -0
  292. package/src/modules/business-partner/docs/models/PartnerAddress.md +52 -0
  293. package/src/modules/business-partner/docs/models/PartnerBankAccount.md +50 -0
  294. package/src/modules/business-partner/docs/models/PartnerIdentification.md +46 -0
  295. package/src/modules/business-partner/docs/models/PartnerRole.md +42 -0
  296. package/src/modules/business-partner/docs/queries/GetContactPerson.md +34 -0
  297. package/src/modules/business-partner/docs/queries/GetDefaultPartnerAddress.md +40 -0
  298. package/src/modules/business-partner/docs/queries/GetDefaultPartnerBankAccount.md +36 -0
  299. package/src/modules/business-partner/docs/queries/GetPartner.md +35 -0
  300. package/src/modules/business-partner/docs/queries/GetPartnerAddress.md +34 -0
  301. package/src/modules/business-partner/docs/queries/GetPartnerBankAccount.md +34 -0
  302. package/src/modules/business-partner/docs/queries/GetPartnerIdentification.md +34 -0
  303. package/src/modules/business-partner/docs/queries/GetPartnerRole.md +34 -0
  304. package/src/modules/business-partner/docs/queries/GetPrimaryContactPerson.md +36 -0
  305. package/src/modules/business-partner/docs/queries/ListContactPersonsByPartner.md +39 -0
  306. package/src/modules/business-partner/docs/queries/ListPartnerAddressesByPartner.md +41 -0
  307. package/src/modules/business-partner/docs/queries/ListPartnerBankAccountsByPartner.md +39 -0
  308. package/src/modules/business-partner/docs/queries/ListPartnerIdentificationsByPartner.md +41 -0
  309. package/src/modules/business-partner/docs/queries/ListPartnersByRole.md +47 -0
  310. package/src/modules/business-partner/executor/.gitkeep +0 -0
  311. package/src/modules/business-partner/generated/.gitkeep +0 -0
  312. package/src/modules/business-partner/generated/enums.ts +60 -0
  313. package/src/modules/business-partner/generated/kysely-tailordb.ts +114 -0
  314. package/src/modules/business-partner/index.ts +2 -0
  315. package/src/modules/business-partner/lib/_db_deps.ts +17 -0
  316. package/src/modules/business-partner/lib/errors.generated.ts +172 -0
  317. package/src/modules/business-partner/lib/errors.ts +2 -0
  318. package/src/modules/business-partner/lib/permissions.generated.ts +30 -0
  319. package/src/modules/business-partner/lib/types.ts +53 -0
  320. package/src/modules/business-partner/module.ts +181 -0
  321. package/src/modules/business-partner/permissions.ts +3 -0
  322. package/src/modules/business-partner/query/.gitkeep +0 -0
  323. package/src/modules/business-partner/query/getContactPerson.generated.ts +5 -0
  324. package/src/modules/business-partner/query/getContactPerson.test.ts +31 -0
  325. package/src/modules/business-partner/query/getContactPerson.ts +16 -0
  326. package/src/modules/business-partner/query/getDefaultPartnerAddress.generated.ts +5 -0
  327. package/src/modules/business-partner/query/getDefaultPartnerAddress.test.ts +45 -0
  328. package/src/modules/business-partner/query/getDefaultPartnerAddress.ts +30 -0
  329. package/src/modules/business-partner/query/getDefaultPartnerBankAccount.generated.ts +5 -0
  330. package/src/modules/business-partner/query/getDefaultPartnerBankAccount.test.ts +43 -0
  331. package/src/modules/business-partner/query/getDefaultPartnerBankAccount.ts +17 -0
  332. package/src/modules/business-partner/query/getPartner.generated.ts +5 -0
  333. package/src/modules/business-partner/query/getPartner.test.ts +31 -0
  334. package/src/modules/business-partner/query/getPartner.ts +16 -0
  335. package/src/modules/business-partner/query/getPartnerAddress.generated.ts +5 -0
  336. package/src/modules/business-partner/query/getPartnerAddress.test.ts +31 -0
  337. package/src/modules/business-partner/query/getPartnerAddress.ts +16 -0
  338. package/src/modules/business-partner/query/getPartnerBankAccount.generated.ts +5 -0
  339. package/src/modules/business-partner/query/getPartnerBankAccount.test.ts +31 -0
  340. package/src/modules/business-partner/query/getPartnerBankAccount.ts +16 -0
  341. package/src/modules/business-partner/query/getPartnerIdentification.generated.ts +5 -0
  342. package/src/modules/business-partner/query/getPartnerIdentification.test.ts +31 -0
  343. package/src/modules/business-partner/query/getPartnerIdentification.ts +16 -0
  344. package/src/modules/business-partner/query/getPartnerRole.generated.ts +5 -0
  345. package/src/modules/business-partner/query/getPartnerRole.test.ts +31 -0
  346. package/src/modules/business-partner/query/getPartnerRole.ts +19 -0
  347. package/src/modules/business-partner/query/getPrimaryContactPerson.generated.ts +5 -0
  348. package/src/modules/business-partner/query/getPrimaryContactPerson.test.ts +43 -0
  349. package/src/modules/business-partner/query/getPrimaryContactPerson.ts +17 -0
  350. package/src/modules/business-partner/query/listContactPersonsByPartner.generated.ts +5 -0
  351. package/src/modules/business-partner/query/listContactPersonsByPartner.test.ts +77 -0
  352. package/src/modules/business-partner/query/listContactPersonsByPartner.ts +32 -0
  353. package/src/modules/business-partner/query/listPartnerAddressesByPartner.generated.ts +5 -0
  354. package/src/modules/business-partner/query/listPartnerAddressesByPartner.test.ts +71 -0
  355. package/src/modules/business-partner/query/listPartnerAddressesByPartner.ts +37 -0
  356. package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.generated.ts +5 -0
  357. package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.test.ts +59 -0
  358. package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.ts +32 -0
  359. package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.generated.ts +5 -0
  360. package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.test.ts +72 -0
  361. package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.ts +40 -0
  362. package/src/modules/business-partner/query/listPartnersByRole.generated.ts +5 -0
  363. package/src/modules/business-partner/query/listPartnersByRole.test.ts +103 -0
  364. package/src/modules/business-partner/query/listPartnersByRole.ts +47 -0
  365. package/src/modules/business-partner/tailor.config.ts +13 -0
  366. package/src/modules/business-partner/tailor.d.ts +13 -0
  367. package/src/modules/business-partner/testing/fixtures.ts +204 -0
  368. package/src/modules/coa-management/README.md +61 -0
  369. package/src/modules/coa-management/command/.gitkeep +0 -0
  370. package/src/modules/coa-management/command/activateAccount.generated.ts +6 -0
  371. package/src/modules/coa-management/command/activateAccount.test.ts +125 -0
  372. package/src/modules/coa-management/command/activateAccount.ts +105 -0
  373. package/src/modules/coa-management/command/activateChartOfAccounts.generated.ts +6 -0
  374. package/src/modules/coa-management/command/activateChartOfAccounts.test.ts +113 -0
  375. package/src/modules/coa-management/command/activateChartOfAccounts.ts +104 -0
  376. package/src/modules/coa-management/command/createAccount.generated.ts +6 -0
  377. package/src/modules/coa-management/command/createAccount.test.ts +767 -0
  378. package/src/modules/coa-management/command/createAccount.ts +247 -0
  379. package/src/modules/coa-management/command/createAccountGroup.generated.ts +6 -0
  380. package/src/modules/coa-management/command/createAccountGroup.test.ts +494 -0
  381. package/src/modules/coa-management/command/createAccountGroup.ts +207 -0
  382. package/src/modules/coa-management/command/createChartOfAccounts.generated.ts +6 -0
  383. package/src/modules/coa-management/command/createChartOfAccounts.test.ts +502 -0
  384. package/src/modules/coa-management/command/createChartOfAccounts.ts +267 -0
  385. package/src/modules/coa-management/command/deactivateAccount.generated.ts +6 -0
  386. package/src/modules/coa-management/command/deactivateAccount.test.ts +199 -0
  387. package/src/modules/coa-management/command/deactivateAccount.ts +142 -0
  388. package/src/modules/coa-management/command/deactivateChartOfAccounts.generated.ts +6 -0
  389. package/src/modules/coa-management/command/deactivateChartOfAccounts.test.ts +91 -0
  390. package/src/modules/coa-management/command/deactivateChartOfAccounts.ts +88 -0
  391. package/src/modules/coa-management/command/deleteAccount.generated.ts +6 -0
  392. package/src/modules/coa-management/command/deleteAccount.test.ts +122 -0
  393. package/src/modules/coa-management/command/deleteAccount.ts +103 -0
  394. package/src/modules/coa-management/command/deleteAccountGroup.generated.ts +6 -0
  395. package/src/modules/coa-management/command/deleteAccountGroup.test.ts +120 -0
  396. package/src/modules/coa-management/command/deleteAccountGroup.ts +113 -0
  397. package/src/modules/coa-management/command/deleteChartOfAccounts.generated.ts +6 -0
  398. package/src/modules/coa-management/command/deleteChartOfAccounts.test.ts +154 -0
  399. package/src/modules/coa-management/command/deleteChartOfAccounts.ts +133 -0
  400. package/src/modules/coa-management/command/moveAccountGroup.generated.ts +6 -0
  401. package/src/modules/coa-management/command/moveAccountGroup.test.ts +199 -0
  402. package/src/modules/coa-management/command/moveAccountGroup.ts +145 -0
  403. package/src/modules/coa-management/command/reactivateAccount.generated.ts +6 -0
  404. package/src/modules/coa-management/command/reactivateAccount.test.ts +126 -0
  405. package/src/modules/coa-management/command/reactivateAccount.ts +123 -0
  406. package/src/modules/coa-management/command/updateAccount.generated.ts +6 -0
  407. package/src/modules/coa-management/command/updateAccount.test.ts +669 -0
  408. package/src/modules/coa-management/command/updateAccount.ts +370 -0
  409. package/src/modules/coa-management/command/updateAccountGroup.generated.ts +6 -0
  410. package/src/modules/coa-management/command/updateAccountGroup.test.ts +253 -0
  411. package/src/modules/coa-management/command/updateAccountGroup.ts +191 -0
  412. package/src/modules/coa-management/command/updateChartOfAccounts.generated.ts +6 -0
  413. package/src/modules/coa-management/command/updateChartOfAccounts.test.ts +153 -0
  414. package/src/modules/coa-management/command/updateChartOfAccounts.ts +133 -0
  415. package/src/modules/coa-management/db/.gitkeep +0 -0
  416. package/src/modules/coa-management/db/account.ts +119 -0
  417. package/src/modules/coa-management/db/accountGroup.ts +57 -0
  418. package/src/modules/coa-management/db/chartOfAccounts.ts +55 -0
  419. package/src/modules/coa-management/docs/commands/ActivateAccount.md +49 -0
  420. package/src/modules/coa-management/docs/commands/ActivateChartOfAccounts.md +47 -0
  421. package/src/modules/coa-management/docs/commands/CreateAccount.md +94 -0
  422. package/src/modules/coa-management/docs/commands/CreateAccountGroup.md +70 -0
  423. package/src/modules/coa-management/docs/commands/CreateChartOfAccounts.md +72 -0
  424. package/src/modules/coa-management/docs/commands/DeactivateAccount.md +65 -0
  425. package/src/modules/coa-management/docs/commands/DeactivateChartOfAccounts.md +44 -0
  426. package/src/modules/coa-management/docs/commands/DeleteAccount.md +52 -0
  427. package/src/modules/coa-management/docs/commands/DeleteAccountGroup.md +50 -0
  428. package/src/modules/coa-management/docs/commands/DeleteChartOfAccounts.md +48 -0
  429. package/src/modules/coa-management/docs/commands/MoveAccountGroup.md +57 -0
  430. package/src/modules/coa-management/docs/commands/ReactivateAccount.md +50 -0
  431. package/src/modules/coa-management/docs/commands/UpdateAccount.md +102 -0
  432. package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +62 -0
  433. package/src/modules/coa-management/docs/commands/UpdateChartOfAccounts.md +49 -0
  434. package/src/modules/coa-management/docs/features/account-group-hierarchy.md +81 -0
  435. package/src/modules/coa-management/docs/features/account-lifecycle.md +80 -0
  436. package/src/modules/coa-management/docs/features/account-management.md +114 -0
  437. package/src/modules/coa-management/docs/features/chart-of-accounts-setup.md +86 -0
  438. package/src/modules/coa-management/docs/models/Account.md +84 -0
  439. package/src/modules/coa-management/docs/models/AccountGroup.md +55 -0
  440. package/src/modules/coa-management/docs/models/ChartOfAccounts.md +65 -0
  441. package/src/modules/coa-management/docs/queries/DetectCircularReference.md +52 -0
  442. package/src/modules/coa-management/docs/queries/GetAccount.md +42 -0
  443. package/src/modules/coa-management/docs/queries/GetAccountGroup.md +42 -0
  444. package/src/modules/coa-management/docs/queries/GetChartOfAccounts.md +48 -0
  445. package/src/modules/coa-management/docs/queries/ListAccountGroups.md +42 -0
  446. package/src/modules/coa-management/docs/queries/ListAccounts.md +54 -0
  447. package/src/modules/coa-management/docs/queries/ListUnassignedAccounts.md +40 -0
  448. package/src/modules/coa-management/executor/.gitkeep +0 -0
  449. package/src/modules/coa-management/generated/.gitkeep +0 -0
  450. package/src/modules/coa-management/generated/enums.ts +45 -0
  451. package/src/modules/coa-management/generated/kysely-tailordb.ts +81 -0
  452. package/src/modules/coa-management/index.ts +2 -0
  453. package/src/modules/coa-management/lib/_db_deps.ts +17 -0
  454. package/src/modules/coa-management/lib/errors.generated.ts +162 -0
  455. package/src/modules/coa-management/lib/errors.ts +0 -0
  456. package/src/modules/coa-management/lib/permissions.generated.ts +20 -0
  457. package/src/modules/coa-management/lib/types.ts +22 -0
  458. package/src/modules/coa-management/module.ts +136 -0
  459. package/src/modules/coa-management/permissions.ts +3 -0
  460. package/src/modules/coa-management/query/.gitkeep +0 -0
  461. package/src/modules/coa-management/query/detectCircularReference.generated.ts +5 -0
  462. package/src/modules/coa-management/query/detectCircularReference.test.ts +88 -0
  463. package/src/modules/coa-management/query/detectCircularReference.ts +46 -0
  464. package/src/modules/coa-management/query/getAccount.generated.ts +5 -0
  465. package/src/modules/coa-management/query/getAccount.test.ts +55 -0
  466. package/src/modules/coa-management/query/getAccount.ts +25 -0
  467. package/src/modules/coa-management/query/getAccountGroup.generated.ts +5 -0
  468. package/src/modules/coa-management/query/getAccountGroup.test.ts +55 -0
  469. package/src/modules/coa-management/query/getAccountGroup.ts +25 -0
  470. package/src/modules/coa-management/query/getChartOfAccounts.generated.ts +5 -0
  471. package/src/modules/coa-management/query/getChartOfAccounts.test.ts +79 -0
  472. package/src/modules/coa-management/query/getChartOfAccounts.ts +28 -0
  473. package/src/modules/coa-management/query/listAccountGroups.generated.ts +5 -0
  474. package/src/modules/coa-management/query/listAccountGroups.test.ts +72 -0
  475. package/src/modules/coa-management/query/listAccountGroups.ts +49 -0
  476. package/src/modules/coa-management/query/listAccounts.generated.ts +5 -0
  477. package/src/modules/coa-management/query/listAccounts.test.ts +136 -0
  478. package/src/modules/coa-management/query/listAccounts.ts +82 -0
  479. package/src/modules/coa-management/query/listUnassignedAccounts.generated.ts +5 -0
  480. package/src/modules/coa-management/query/listUnassignedAccounts.test.ts +96 -0
  481. package/src/modules/coa-management/query/listUnassignedAccounts.ts +39 -0
  482. package/src/modules/coa-management/tailor.config.ts +13 -0
  483. package/src/modules/coa-management/tailor.d.ts +13 -0
  484. package/src/modules/coa-management/testing/fixtures.ts +201 -0
  485. package/src/modules/item-management/README.md +1 -1
  486. package/src/modules/organization/README.md +57 -0
  487. package/src/modules/organization/command/.gitkeep +0 -0
  488. package/src/modules/organization/command/activateCompany.generated.ts +6 -0
  489. package/src/modules/organization/command/activateCompany.test.ts +184 -0
  490. package/src/modules/organization/command/activateCompany.ts +92 -0
  491. package/src/modules/organization/command/createCompany.generated.ts +6 -0
  492. package/src/modules/organization/command/createCompany.test.ts +156 -0
  493. package/src/modules/organization/command/createCompany.ts +80 -0
  494. package/src/modules/organization/command/createDepartment.generated.ts +6 -0
  495. package/src/modules/organization/command/createDepartment.test.ts +239 -0
  496. package/src/modules/organization/command/createDepartment.ts +98 -0
  497. package/src/modules/organization/command/createSite.generated.ts +6 -0
  498. package/src/modules/organization/command/createSite.test.ts +262 -0
  499. package/src/modules/organization/command/createSite.ts +155 -0
  500. package/src/modules/organization/command/deactivateCompany.generated.ts +6 -0
  501. package/src/modules/organization/command/deactivateCompany.test.ts +58 -0
  502. package/src/modules/organization/command/deactivateCompany.ts +47 -0
  503. package/src/modules/organization/command/deactivateDepartment.generated.ts +6 -0
  504. package/src/modules/organization/command/deactivateDepartment.test.ts +115 -0
  505. package/src/modules/organization/command/deactivateDepartment.ts +63 -0
  506. package/src/modules/organization/command/deactivateSite.generated.ts +6 -0
  507. package/src/modules/organization/command/deactivateSite.test.ts +53 -0
  508. package/src/modules/organization/command/deactivateSite.ts +47 -0
  509. package/src/modules/organization/command/deleteCompany.generated.ts +6 -0
  510. package/src/modules/organization/command/deleteCompany.test.ts +99 -0
  511. package/src/modules/organization/command/deleteCompany.ts +66 -0
  512. package/src/modules/organization/command/reactivateCompany.generated.ts +6 -0
  513. package/src/modules/organization/command/reactivateCompany.test.ts +58 -0
  514. package/src/modules/organization/command/reactivateCompany.ts +47 -0
  515. package/src/modules/organization/command/reactivateDepartment.generated.ts +6 -0
  516. package/src/modules/organization/command/reactivateDepartment.test.ts +59 -0
  517. package/src/modules/organization/command/reactivateDepartment.ts +47 -0
  518. package/src/modules/organization/command/reactivateSite.generated.ts +6 -0
  519. package/src/modules/organization/command/reactivateSite.test.ts +53 -0
  520. package/src/modules/organization/command/reactivateSite.ts +47 -0
  521. package/src/modules/organization/command/updateCompany.generated.ts +6 -0
  522. package/src/modules/organization/command/updateCompany.test.ts +239 -0
  523. package/src/modules/organization/command/updateCompany.ts +127 -0
  524. package/src/modules/organization/command/updateDepartment.generated.ts +6 -0
  525. package/src/modules/organization/command/updateDepartment.test.ts +232 -0
  526. package/src/modules/organization/command/updateDepartment.ts +120 -0
  527. package/src/modules/organization/command/updateSite.generated.ts +6 -0
  528. package/src/modules/organization/command/updateSite.test.ts +274 -0
  529. package/src/modules/organization/command/updateSite.ts +176 -0
  530. package/src/modules/organization/db/.gitkeep +0 -0
  531. package/src/modules/organization/db/company.ts +44 -0
  532. package/src/modules/organization/db/department.ts +46 -0
  533. package/src/modules/organization/db/site.ts +44 -0
  534. package/src/modules/organization/docs/commands/ActivateCompany.md +62 -0
  535. package/src/modules/organization/docs/commands/CreateCompany.md +49 -0
  536. package/src/modules/organization/docs/commands/CreateDepartment.md +62 -0
  537. package/src/modules/organization/docs/commands/CreateSite.md +74 -0
  538. package/src/modules/organization/docs/commands/DeactivateCompany.md +40 -0
  539. package/src/modules/organization/docs/commands/DeactivateDepartment.md +44 -0
  540. package/src/modules/organization/docs/commands/DeactivateSite.md +38 -0
  541. package/src/modules/organization/docs/commands/DeleteCompany.md +50 -0
  542. package/src/modules/organization/docs/commands/ReactivateCompany.md +39 -0
  543. package/src/modules/organization/docs/commands/ReactivateDepartment.md +37 -0
  544. package/src/modules/organization/docs/commands/ReactivateSite.md +37 -0
  545. package/src/modules/organization/docs/commands/UpdateCompany.md +58 -0
  546. package/src/modules/organization/docs/commands/UpdateDepartment.md +64 -0
  547. package/src/modules/organization/docs/commands/UpdateSite.md +80 -0
  548. package/src/modules/organization/docs/features/company-lifecycle.md +76 -0
  549. package/src/modules/organization/docs/features/department-management.md +66 -0
  550. package/src/modules/organization/docs/features/site-management.md +86 -0
  551. package/src/modules/organization/docs/models/Company.md +60 -0
  552. package/src/modules/organization/docs/models/Department.md +57 -0
  553. package/src/modules/organization/docs/models/Site.md +57 -0
  554. package/src/modules/organization/docs/queries/DetectDepartmentCircularReference.md +50 -0
  555. package/src/modules/organization/docs/queries/GetCompany.md +40 -0
  556. package/src/modules/organization/docs/queries/GetDepartment.md +44 -0
  557. package/src/modules/organization/docs/queries/GetDepartmentChildren.md +40 -0
  558. package/src/modules/organization/docs/queries/GetSite.md +37 -0
  559. package/src/modules/organization/docs/queries/ListDepartmentsByCompany.md +54 -0
  560. package/src/modules/organization/docs/queries/ListSitesByCompany.md +54 -0
  561. package/src/modules/organization/executor/.gitkeep +0 -0
  562. package/src/modules/organization/generated/.gitkeep +0 -0
  563. package/src/modules/organization/generated/kysely-tailordb.ts +77 -0
  564. package/src/modules/organization/index.ts +2 -0
  565. package/src/modules/organization/lib/_db_deps.ts +10 -0
  566. package/src/modules/organization/lib/errors.generated.ts +117 -0
  567. package/src/modules/organization/lib/errors.ts +1 -0
  568. package/src/modules/organization/lib/permissions.generated.ts +19 -0
  569. package/src/modules/organization/lib/types.ts +16 -0
  570. package/src/modules/organization/module.ts +89 -0
  571. package/src/modules/organization/permissions.ts +3 -0
  572. package/src/modules/organization/query/.gitkeep +0 -0
  573. package/src/modules/organization/query/detectDepartmentCircularReference.generated.ts +5 -0
  574. package/src/modules/organization/query/detectDepartmentCircularReference.test.ts +102 -0
  575. package/src/modules/organization/query/detectDepartmentCircularReference.ts +27 -0
  576. package/src/modules/organization/query/getCompany.generated.ts +5 -0
  577. package/src/modules/organization/query/getCompany.test.ts +70 -0
  578. package/src/modules/organization/query/getCompany.ts +16 -0
  579. package/src/modules/organization/query/getDepartment.generated.ts +5 -0
  580. package/src/modules/organization/query/getDepartment.test.ts +85 -0
  581. package/src/modules/organization/query/getDepartment.ts +17 -0
  582. package/src/modules/organization/query/getDepartmentChildren.generated.ts +5 -0
  583. package/src/modules/organization/query/getDepartmentChildren.test.ts +75 -0
  584. package/src/modules/organization/query/getDepartmentChildren.ts +21 -0
  585. package/src/modules/organization/query/getSite.generated.ts +5 -0
  586. package/src/modules/organization/query/getSite.test.ts +55 -0
  587. package/src/modules/organization/query/getSite.ts +16 -0
  588. package/src/modules/organization/query/listDepartmentsByCompany.generated.ts +5 -0
  589. package/src/modules/organization/query/listDepartmentsByCompany.test.ts +124 -0
  590. package/src/modules/organization/query/listDepartmentsByCompany.ts +43 -0
  591. package/src/modules/organization/query/listSitesByCompany.generated.ts +5 -0
  592. package/src/modules/organization/query/listSitesByCompany.test.ts +126 -0
  593. package/src/modules/organization/query/listSitesByCompany.ts +41 -0
  594. package/src/modules/organization/tailor.config.ts +13 -0
  595. package/src/modules/organization/tailor.d.ts +13 -0
  596. package/src/modules/organization/testing/fixtures.ts +155 -0
  597. package/src/modules/primitives/README.md +1 -1
  598. package/src/modules/primitives/command/setBaseCurrency.test.ts +8 -64
  599. package/src/modules/primitives/command/setBaseCurrency.ts +6 -64
  600. package/src/modules/primitives/docs/commands/ActivateCategory.md +1 -1
  601. package/src/modules/primitives/docs/commands/ActivateCurrency.md +1 -1
  602. package/src/modules/primitives/docs/commands/ActivateUnit.md +1 -1
  603. package/src/modules/primitives/docs/commands/CreateExchangeRate.md +2 -2
  604. package/src/modules/primitives/docs/commands/CreateUnit.md +1 -1
  605. package/src/modules/primitives/docs/commands/DeactivateCategory.md +1 -1
  606. package/src/modules/primitives/docs/commands/DeactivateCurrency.md +1 -1
  607. package/src/modules/primitives/docs/commands/DeactivateUnit.md +1 -1
  608. package/src/modules/primitives/docs/commands/SetBaseCurrency.md +13 -23
  609. package/src/modules/primitives/docs/commands/SetReferenceUnit.md +1 -1
  610. package/src/modules/primitives/docs/features/currency-definitions.md +13 -14
  611. package/src/modules/primitives/docs/models/Currency.md +3 -4
  612. package/src/modules/primitives/docs/queries/ConvertAmount.md +2 -2
  613. package/src/modules/primitives/docs/queries/ConvertQuantity.md +2 -2
  614. package/src/modules/primitives/lib/errors.generated.ts +5 -0
  615. package/src/modules/product-management/README.md +1 -1
  616. package/src/modules/user-management/docs/commands/CreatePermission.md +3 -3
  617. package/src/modules/user-management/docs/commands/CreateRole.md +1 -1
  618. package/src/modules/user-management/docs/queries/ListRolePermissionsByRole.md +39 -0
  619. package/src/modules/user-management/docs/queries/ListUserRolesByUser.md +39 -0
  620. package/src/modules/user-management/generated/enums.ts +0 -15
  621. package/src/modules/user-management/generated/kysely-tailordb.ts +0 -11
  622. package/src/shared/createContext.ts +2 -1
  623. package/src/shared/defineQuery.ts +36 -1
  624. package/src/shared/requirePermission.ts +3 -3
  625. package/src/shared/types.ts +3 -0
  626. package/templates/scaffold/app/backend/package.json +8 -7
  627. package/templates/scaffold/app/frontend/eslint.config.js +12 -0
  628. package/templates/scaffold/app/frontend/package.json +19 -16
  629. package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +30 -0
  630. package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +3 -2
  631. package/templates/scaffold/app/frontend/vite.config.ts +5 -5
  632. package/templates/workflows/erp-kit-check.yml +2 -2
  633. package/src/commands/module/list.test.ts +0 -57
  634. package/src/commands/module/list.ts +0 -64
  635. package/src/commands/scaffold.ts +0 -176
  636. /package/src/modules/{accounting → audit/db}/.gitkeep +0 -0
  637. /package/src/modules/audit/{.gitkeep → executor/.gitkeep} +0 -0
  638. /package/src/modules/{coa-management/.gitkeep → audit/lib/errors.ts} +0 -0
  639. /package/src/modules/{supplier-management → business-partner}/.gitkeep +0 -0
@@ -31,27 +31,7 @@ Key points:
31
31
 
32
32
  - Two-column `Layout`: detail on left, actions on right
33
33
  - `useParams()` to get entity ID from route
34
- - `DescriptionCard` from `@tailor-platform/app-shell` for key-value fields:
35
-
36
- ```tsx
37
- <DescriptionCard
38
- data={resource}
39
- title="Overview"
40
- columns={3}
41
- fields={[
42
- { key: "name", label: "Name", meta: { copyable: true } },
43
- {
44
- key: "status",
45
- label: "Status",
46
- type: "badge",
47
- meta: { badgeVariantMap: { ACTIVE: "success" } },
48
- },
49
- { key: "createdAt", label: "Created At", type: "date", meta: { dateFormat: "medium" } },
50
- ]}
51
- />
52
- ```
53
-
54
- Field types: `"text"` (default), `"badge"`, `"money"`, `"date"`, `"link"`, `"address"`, `"reference"`, `"divider"`
34
+ - `DescriptionCard` from `@tailor-platform/app-shell` for key-value fields. Refer to existing examples in the codebase for props and field type usage.
55
35
 
56
36
  ### Form Pattern
57
37
 
@@ -59,8 +39,11 @@ Create and edit forms share the same structure:
59
39
 
60
40
  - **React Hook Form + Zod** for validation with `zodResolver`
61
41
  - **urql `useMutation`** for GraphQL mutations
62
- - **Cache invalidation**: pass `additionalTypenames` to the mutation context so urql invalidates related queries (e.g., `createUser(values, { additionalTypenames: ["User"] })`)
63
- - **Toast notifications**: use `useToast` from `@tailor-platform/app-shell` (sonner-based, `Toaster` is built into AppShell) for success/error feedback
42
+ - **Cache invalidation**: pass `additionalTypenames` to the mutation context so urql invalidates related queries after create/edit/delete. Without this, list pages will show stale data.
43
+ ```ts
44
+ createUser(values, { additionalTypenames: ["User"] })
45
+ ```
46
+ - **Toast notifications**: `useToast` from `@/hooks/use-toast`. `toast.error()` accepts `CombinedError` directly (e.g., `toast.error(result.error)`)
64
47
  - **Navigate `".."`** to go back to list after success
65
48
  - Edit form pre-fills `defaultValues` from existing entity via fragment
66
49
 
@@ -81,6 +64,14 @@ Create and edit forms share the same structure:
81
64
  - **Required: Yes** → `.min(1, "Field is required")` (string) / `.positive()` (number)
82
65
  - **Required: No** → `.optional()`
83
66
 
67
+ #### Empty String Handling for Optional Fields
68
+
69
+ React Hook Form defaults text inputs to `""`. For optional fields (e.g., `parentId`), convert empty strings to `undefined` before submitting to avoid backend errors. Use `||` not `??` — empty string is not nullish:
70
+
71
+ ```ts
72
+ parentId: values.parentId || undefined,
73
+ ```
74
+
84
75
  ### Shared Component Patterns
85
76
 
86
77
  #### Fragment Collocation
@@ -117,13 +108,9 @@ const UserQuery = graphql(
117
108
 
118
109
  #### App.tsx
119
110
 
120
- - `AuthGuard`: implement yourself, pass via `guardComponent` prop. AuthProvider shows it automatically when `!isReady || !isAuthenticated`, so the guard only needs to render a sign-in UI — no state checks needed inside it
121
- - `GraphQLProvider`: pass `authClient.fetch` directly to urql's `fetch` option and `authClient.getAppUri()` for the URL
122
- - `useAuth()` returns `{ isAuthenticated, isReady, login, logout }` directly (not nested in `authState`)
123
- - Built-in `me` query returns the current user's `User` record — use it instead of writing a custom resolver for profile info
111
+ Refer to existing examples in the codebase for `AuthGuard`, `GraphQLProvider`, auth client setup, and sidebar configuration.
112
+
124
113
  - Required env vars: `VITE_TAILOR_APP_URL`, `VITE_TAILOR_CLIENT_ID`
125
- - Auth client: create once in `src/lib/auth-client.ts` using `createAuthClient({ appUri, clientId })`
126
- - Sidebar: use `SidebarGroup` + `SidebarItem` for custom ordering
127
114
 
128
115
  #### Module-level page.tsx (required)
129
116
 
@@ -141,20 +128,3 @@ Every page component must:
141
128
 
142
129
  1. Be the **default export** of `page.tsx`
143
130
  2. Set `appShellPageProps` with at least `meta.title`
144
-
145
- #### Common imports
146
-
147
- ```tsx
148
- import {
149
- Layout,
150
- Link,
151
- useParams,
152
- useNavigate,
153
- type AppShellPageProps,
154
- } from "@tailor-platform/app-shell";
155
- import { useQuery, useMutation } from "urql";
156
- import { graphql, type FragmentOf, readFragment } from "@/graphql";
157
- import { useForm } from "react-hook-form";
158
- import { zodResolver } from "@hookform/resolvers/zod";
159
- import { z } from "zod";
160
- ```
@@ -21,7 +21,7 @@ Define shared context for all agents:
21
21
  - `APP_NAME`: basename of APP_ROOT
22
22
  - `RESOLVER_DOCS`: glob `<APP_ROOT>/docs/resolver/*.md`
23
23
  - `SCREEN_DOCS`: glob `<APP_ROOT>/docs/screen/*.md`
24
- - `BACKEND_RESOLVERS`: glob `<APP_ROOT>/backend/src/modules/*/resolvers/*.ts`
24
+ - `BACKEND_RESOLVERS`: glob `<APP_ROOT>/backend/src/resolvers/*.ts`
25
25
  - `BACKEND_EXECUTORS`: glob `<APP_ROOT>/backend/executors/*.ts`
26
26
  - `BACKEND_MODULES`: `<APP_ROOT>/backend/src/modules.ts`
27
27
  - `BACKEND_CONFIG`: `<APP_ROOT>/backend/tailor.config.ts`
@@ -50,16 +50,17 @@ For agents 1-3:
50
50
  3. Replace doc/code path placeholders with the actual file paths
51
51
  4. Dispatch the agent with the filled prompt
52
52
 
53
- For agent 4 (build verification):
53
+ For agent 4 (build & sync verification):
54
54
 
55
- Run build checks inline:
55
+ Run build checks and source-doc sync check inline:
56
56
 
57
57
  ```bash
58
58
  cd <APP_ROOT>/backend && pnpm lint && pnpm typecheck
59
59
  cd <APP_ROOT>/frontend && pnpm lint && pnpm typecheck && pnpm build
60
+ erp-kit app sync-check -p <APP_ROOT>/..
60
61
  ```
61
62
 
62
- Report pass/fail for each check.
63
+ Report pass/fail for each check. `sync-check` detects missing resolver implementations and orphaned docs, so agents 1-3 can skip file-existence checks and focus on content parity.
63
64
 
64
65
  ## Step 3: Aggregate Results
65
66
 
@@ -109,13 +110,14 @@ Render the aggregated results as markdown:
109
110
 
110
111
  ---
111
112
 
112
- ### 4. Build Verification
113
+ ### 4. Build & Sync Verification
113
114
 
114
- | Check | Backend | Frontend |
115
- | ----- | ------- | -------- |
116
- | Lint | | |
117
- | Types | | |
118
- | Build | N/A | |
115
+ | Check | Backend | Frontend |
116
+ | ---------- | ------- | -------- |
117
+ | Lint | | |
118
+ | Types | | |
119
+ | Build | N/A | |
120
+ | Sync-check | | N/A |
119
121
 
120
122
  (Populated from agent 4 results)
121
123
 
@@ -158,7 +160,7 @@ Render the aggregated results as markdown:
158
160
  | Resolver Doc → Code Coverage | | X/Y checks passed |
159
161
  | Screen Doc → Code Coverage | | X/Y checks passed |
160
162
  | Module Wiring Consistency | | X/Y checks passed |
161
- | Build Verification | | pass / fail |
163
+ | Build & Sync Verification | | pass / fail |
162
164
 
163
165
  ### 8. Recommendations
164
166
 
@@ -28,7 +28,7 @@ From each resolver doc, extract:
28
28
 
29
29
  ## Extraction: Backend Code
30
30
 
31
- From each resolver file (`src/modules/*/resolvers/*.ts`), extract:
31
+ From each resolver file (`src/resolvers/*.ts`), extract:
32
32
 
33
33
  - Resolver name (from `createResolver()` call or filename)
34
34
  - Module command called (import path and function name)
@@ -42,28 +42,27 @@ From each executor file (`executors/*.ts`), extract:
42
42
 
43
43
  ## Parity Checks
44
44
 
45
- | Check ID | Question |
46
- | -------------------- | --------------------------------------------------------------- |
47
- | resolver_impl_exists | Does a backend resolver file exist for each resolver doc? |
48
- | command_reference | Does the resolver code call the correct module command? |
49
- | input_coverage | Does the resolver handle all documented input parameters? |
50
- | error_handling | Does the resolver handle all documented error scenarios? |
51
- | return_shape | Does the resolver return the documented output shape? |
52
- | executor_exists | Does an executor exist for each module that has event handlers? |
53
- | no_direct_mutation | Does the resolver avoid directly mutating module-owned tables? |
45
+ | Check ID | Question |
46
+ | ------------------ | --------------------------------------------------------------- |
47
+ | command_reference | Does the resolver code call the correct module command? |
48
+ | input_coverage | Does the resolver handle all documented input parameters? |
49
+ | error_handling | Does the resolver handle all documented error scenarios? |
50
+ | return_shape | Does the resolver return the documented output shape? |
51
+ | executor_exists | Does an executor exist for each module that has event handlers? |
52
+ | no_direct_mutation | Does the resolver avoid directly mutating module-owned tables? |
53
+
54
+ File existence checks (`resolver_impl_exists`) are handled by `erp-kit app sync-check` in the build verification step. This agent focuses on content parity only.
54
55
 
55
56
  ### How to Check
56
57
 
57
- 1. For each resolver doc, find the corresponding code file by name
58
- 2. Verify the code imports and calls the documented module command
59
- 3. Check that `context.input.*` accesses match documented inputs
60
- 4. Check that error `switch` cases cover all documented error codes
61
- 5. Verify return value structure matches documentation
62
- 6. Check executors re-export module event handlers without custom logic
58
+ 1. For each resolver doc that has a corresponding code file, verify the code imports and calls the documented module command
59
+ 2. Check that `context.input.*` accesses match documented inputs
60
+ 3. Check that error `switch` cases cover all documented error codes
61
+ 4. Verify return value structure matches documentation
62
+ 5. Check executors re-export module event handlers without custom logic
63
63
 
64
64
  ## Common Gap Patterns
65
65
 
66
- - **Missing resolver file**: Doc exists but no code file
67
66
  - **Wrong command**: Code calls a different module command than documented
68
67
  - **Missing input handling**: Doc specifies an input parameter not accessed in code
69
68
  - **Missing error cases**: Error scenario in doc not handled in code's switch
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: erp-kit-app-shared
3
+ description: Shared references for erp-kit app skills. Not invoked directly — referenced by erp-kit-app-1 through erp-kit-app-7.
4
+ ---
5
+
6
+ # erp-kit-app-shared
7
+
8
+ Canonical reference files shared across app skills. Individual skills reference these instead of maintaining their own copies.
9
+
10
+ ## References
11
+
12
+ - [Schema constraints](references/schema-constraints.md) — H1 heading rules and validation constraints enforced by `erp-kit app check`
13
+ - [Naming conventions](references/naming-conventions.md) — File and heading naming patterns for all doc types
14
+ - [Link format reference](references/link-format-reference.md) — Canonical doc-to-doc link formats across tiers
15
+ - [Resolver classification](references/resolver-classification.md) — Custom vs built-in resolver decision table and operation mapping
@@ -0,0 +1,13 @@
1
+ # Link Format Reference
2
+
3
+ Canonical link formats used across all documentation tiers.
4
+
5
+ ## Doc-to-Doc Links
6
+
7
+ | From | To | Format |
8
+ | ------------- | ------------- | ----------------------------------- |
9
+ | Business Flow | Story | `./story/<actor>--<name>.md` |
10
+ | Business Flow | Actor | `../../actors/<actor>.md` |
11
+ | Actor | Business Flow | `../business-flow/<flow>/README.md` |
12
+ | Story | Screen | `../../../screen/<screen>.md` |
13
+ | Story | Resolver | `../../../resolver/<name>.md` |
@@ -0,0 +1,21 @@
1
+ # Naming Conventions
2
+
3
+ ## File Naming
4
+
5
+ | Doc Type | Pattern | Example |
6
+ | -------- | ------------------------------------ | -------------------------------- |
7
+ | Actor | kebab-case | `sales-representative.md` |
8
+ | Flow | kebab-case directory | `employee-onboarding/README.md` |
9
+ | Story | `<actor>--<story-name>.md` | `admin--create-user.md` |
10
+ | Screen | kebab-case, noun-focused | `supplier-list.md` |
11
+ | Resolver | camelCase action-verb | `createSupplierInvitation.md` |
12
+
13
+ ## Heading Conventions
14
+
15
+ See [schema-constraints.md](schema-constraints.md) for H1 heading rules enforced by `erp-kit app check`.
16
+
17
+ Additional conventions:
18
+
19
+ - Story heading: Title Case of story name after `--` prefix (e.g., `admin--create-user.md` → `# Create User`)
20
+ - Screen heading: Title Case of filename slug
21
+ - Resolver heading: camelCase matching filename
@@ -0,0 +1,23 @@
1
+ # Resolver Classification
2
+
3
+ ## Custom vs Built-in
4
+
5
+ | Category | Description | Implementation |
6
+ | -------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
7
+ | **Custom resolvers** | Mutations that call module commands (create, update, activate, deactivate, assign) | Write `createResolver()` files |
8
+ | **Built-in queries** | List and get operations for reading data | Handled automatically by `gqlOperations: "query"` in config — no code needed |
9
+
10
+ Prefer built-in queries over custom resolvers for list/get operations where possible.
11
+
12
+ ## Operation → Resolver Mapping
13
+
14
+ | Flow Operation | Resolver Type | Naming Pattern |
15
+ | -------------------- | ------------- | ---------------------- |
16
+ | Create/Add entity | Mutation | `create<Entity>` |
17
+ | Update/Modify entity | Mutation | `update<Entity>` |
18
+ | Delete/Remove entity | Mutation | `delete<Entity>` |
19
+ | Activate entity | Mutation | `activate<Entity>` |
20
+ | Deactivate entity | Mutation | `deactivate<Entity>` |
21
+ | Assign X to Y | Mutation | `assign<X>To<Y>` |
22
+ | Submit/Approve | Mutation | `submit<Entity>` etc. |
23
+ | View/List/Get | Query | Built-in (no resolver) |
@@ -0,0 +1,25 @@
1
+ # Schema Constraints
2
+
3
+ Rules enforced by `erp-kit app check`. **Never recommend changes that violate them.**
4
+
5
+ ## H1 Heading Rules
6
+
7
+ | Doc Type | H1 Rule | Example |
8
+ | ------------- | ---------------------------------------------------- | -------------------------------------------------------- |
9
+ | README.md | Must be `# README` (literal) | `# README` |
10
+ | Actor | Slug must match filename | `admin.md` → `# Admin`, `sales-rep.md` → `# Sales Rep` |
11
+ | Business Flow | Kebab-case matching folder name (`[a-zA-Z0-9_\-]+`) | `employee-onboarding/README.md` → `# employee-onboarding` |
12
+ | Story | Slug matches filename after actor prefix removal | `admin--create-user.md` → `# Create User` |
13
+
14
+ ## Requirements Structure
15
+
16
+ The `## Industry Context` section contains `### Target Industry` and `### Domain Terminology` subsections. Requirements are bare list items under `### Domain Terminology` — do **not** add a separate `## Requirements` heading.
17
+
18
+ ## Naming Conventions
19
+
20
+ - Files: kebab-case (e.g., `sales-representative.md`)
21
+ - Business flow H1 headings are kebab-case — do **not** flag them as inconsistent with title-case actor headings. They follow different schemas.
22
+
23
+ ## Validation Notes
24
+
25
+ - `app check` outputs "No matching files found" for doc types that don't exist yet (e.g., stories at Tier 2, screens at Tier 3). This is expected.
@@ -5,7 +5,7 @@ description: Create ERP module requirements and feature documentation. Use when
5
5
 
6
6
  # Module Requirements Workflow
7
7
 
8
- Collaborative workflow for creating ERP module requirements. Uses parallel agents for research, then human validates and decides scope.
8
+ Autonomous workflow for creating ERP module requirements. Uses parallel agents for research, then automatically decides scope based on recommendations.
9
9
 
10
10
  ## Workflow
11
11
 
@@ -22,7 +22,7 @@ Define shared context for all agents:
22
22
  - `DOMAIN`: the business domain (e.g., "inventory management", "purchasing")
23
23
  - `OTHER_MODULES`: glob `<MODULES_ROOT>/*/README.md` (to understand existing module landscape)
24
24
 
25
- Ask the user for the MODULE_NAME and DOMAIN if not provided.
25
+ Infer MODULE_NAME and DOMAIN from the current working directory or argument context. If insufficient, use the module's README or directory name.
26
26
 
27
27
  ## Step 2: Dispatch Agents (parallelize if possible)
28
28
 
@@ -63,16 +63,14 @@ For each feature:
63
63
  - **Recommendation:** `Include` or `Skip`
64
64
  - **Why:** reasoning for the recommendation
65
65
 
66
- Then ask the user: "推薦を変更したい機能はありますか?"
67
-
68
- The final feature set becomes the union of all `Include` features. Iterate until the user approves.
66
+ The final feature set becomes the union of all `Include` features. Proceed with the recommended scope.
69
67
 
70
68
  ## Step 4: Create — Agent per feature
71
69
 
72
70
  First, scaffold the module if it doesn't exist:
73
71
 
74
72
  ```bash
75
- erp-kit scaffold --modules-root <MODULES_ROOT> module <module-name>
73
+ erp-kit module init <module-name> <MODULES_ROOT>/<module-name>
76
74
  ```
77
75
 
78
76
  Then, for each `Include` feature, launch an Agent:
@@ -96,19 +94,15 @@ pnpm run module:doc:check
96
94
 
97
95
  ## Step 5: Review
98
96
 
99
- User reviews generated feature docs and may request changes.
100
-
101
- **Split detection**: If a feature covers multiple distinct workflows, split into separate feature files.
97
+ **Split detection**: If a feature covers multiple distinct workflows, split into separate feature files automatically.
102
98
 
103
- **Iteration pattern:**
99
+ **Auto-split pattern:**
104
100
 
105
- 1. User identifies issue (e.g., "X is too broad, split it")
101
+ 1. Detect features that cover multiple distinct workflows
106
102
  2. Create new feature file for split-out content
107
103
  3. Remove split content from original file
108
104
  4. Update README.md feature list if needed
109
105
 
110
- Continue iterating until user approves.
111
-
112
106
  # Framework Schemas Reference
113
107
 
114
108
  Schemas are bundled in `@tailor-platform/erp-kit`.
@@ -14,7 +14,7 @@ Write a feature documentation file for the {{FEATURE_NAME}} feature.
14
14
  1. Read existing feature docs in `{{MODULES_ROOT}}/{{MODULE_NAME}}/docs/features/` for style reference
15
15
  2. Scaffold the file:
16
16
  ```bash
17
- erp-kit scaffold --modules-root {{MODULES_ROOT}} feature {{MODULE_NAME}} {{FEATURE_SLUG}}
17
+ erp-kit module generate doc feature {{FEATURE_SLUG}} -p {{MODULES_ROOT}}/{{MODULE_NAME}}
18
18
  ```
19
19
  3. Fill in the scaffolded file following the structure below
20
20
 
@@ -52,7 +52,14 @@ After ALL agents return:
52
52
  2. Merge all `issues[]` arrays into a single list
53
53
  3. Merge all `recommendations[]` arrays into a single list
54
54
  4. Calculate totals across all summaries
55
- 5. Render the final report below
55
+ 5. **Classify severity** — for each non-pass finding, the router assigns a severity based on the finding's `status`, `check`, and `detail`:
56
+ - `critical`: fundamental design flaw, missing required capability, boundary violation — blocks progress
57
+ - `major`: significant gap that will likely cause downstream issues — should fix
58
+ - `nit`: cosmetic, stylistic, or minor improvement — does NOT block the review
59
+ 6. **Determine verdict**:
60
+ - **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
61
+ - **NEEDS CHANGES**: one or more `critical` or `major` findings
62
+ 7. Render the final report below
56
63
 
57
64
  ## Report Format
58
65
 
@@ -100,11 +107,20 @@ Render the aggregated results as markdown:
100
107
 
101
108
  ### 5. Recommendations
102
109
 
103
- Numbered list of actionable fixes, grouped by priority:
110
+ Numbered list of actionable fixes, grouped by severity:
104
111
 
105
- 1. Critical boundary issues (highest priority)
106
- 2. Best practice violations
107
- 3. Improvement suggestions
112
+ 1. `critical` boundary issues, fundamental design flaws (must fix)
113
+ 2. `major` — best practice violations, missing capabilities (should fix)
114
+ 3. `nit` — cosmetic, stylistic, minor improvements (informational only)
115
+
116
+ ### 6. Verdict
117
+
118
+ **Verdict: APPROVED / NEEDS CHANGES**
119
+
120
+ - If APPROVED with nits: "Review passed. The following nits are informational and do not block progress:" followed by the nit list.
121
+ - If NEEDS CHANGES: "Review requires changes. Fix all critical and major issues, then re-run the review."
122
+
123
+ Severity counts: `critical: N, major: N, nit: N`
108
124
 
109
125
  ## References
110
126
 
@@ -23,3 +23,22 @@ A numbered list of actionable suggestions, grouped by priority:
23
23
  ### Summary
24
24
 
25
25
  A summary table with aggregate counts: total checks, passed, failed, warned.
26
+
27
+ ## Router-Level Severity and Verdict
28
+
29
+ The router (SKILL.md Step 3) assigns severity to each non-pass finding after collecting all agent results. Agents do NOT assign severity — they only report `status` and `detail`.
30
+
31
+ The router classifies each finding as:
32
+
33
+ | Severity | Meaning | Examples |
34
+ | ---------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
35
+ | `critical` | Blocks progress — fundamental design flaw, missing required capability, or boundary violation | Missing entity ownership, overlapping CRUD with another module, broken state machine |
36
+ | `major` | Should fix — will likely cause issues downstream but not a design blocker | Missing standard ERP state, unclear dependency direction, incomplete business rules |
37
+ | `nit` | Nice to have — cosmetic, stylistic, or minor improvement suggestion | Naming convention preference, optional field suggestion, documentation wording improvement |
38
+
39
+ Verdict rule:
40
+
41
+ - **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
42
+ - **NEEDS CHANGES**: one or more `critical` or `major` findings
43
+
44
+ When verdict is APPROVED with nits, list the nits as informational notes — they do NOT block the review.
@@ -33,22 +33,20 @@ Use the extraction rules from:
33
33
  - [references/command-extraction.md](references/command-extraction.md) — write operations, business rules, error scenarios, process flows
34
34
  - [references/query-extraction.md](references/query-extraction.md) — read operations, lookups, aggregations, conversions
35
35
 
36
- Present consolidated plan to user:
36
+ Produce consolidated plan:
37
37
 
38
38
  - Models to create (with fields, relationships, states)
39
39
  - Commands to create (with business rules, error scenarios)
40
40
  - Queries to create (with inputs, outputs)
41
41
 
42
- Wait for user approval.
43
-
44
42
  ## Step 3: Scaffold & Populate
45
43
 
46
- After approval, scaffold using `erp-kit` CLI:
44
+ Scaffold using `erp-kit` CLI. **Names must be PascalCase** (see [naming convention](references/naming.md)):
47
45
 
48
46
  ```bash
49
- erp-kit scaffold --modules-root <MODULES_ROOT> model <module-name> <model-name>
50
- erp-kit scaffold --modules-root <MODULES_ROOT> command <module-name> <command-name>
51
- erp-kit scaffold --modules-root <MODULES_ROOT> query <module-name> <query-name>
47
+ erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
48
+ erp-kit module generate doc command CommandName -p <MODULES_ROOT>/<module-name>
49
+ erp-kit module generate doc query QueryName -p <MODULES_ROOT>/<module-name>
52
50
  ```
53
51
 
54
52
  Fill in the scaffolded docs with details from the extraction in Step 2.
@@ -103,5 +101,5 @@ pnpm run module:doc:check
103
101
 
104
102
  ## References
105
103
 
106
- - [Command naming convention](references/naming.md)
104
+ - [Naming convention (PascalCase files + command verbs)](references/naming.md)
107
105
  - [Module structure](../erp-kit-module-shared/references/structure.md)
@@ -1,4 +1,18 @@
1
- # Command Naming Convention
1
+ # Naming Convention
2
+
3
+ ## Doc File Names — PascalCase
4
+
5
+ Documentation files under `docs/models/`, `docs/commands/`, and `docs/queries/` **must** use PascalCase. The code generator derives the camelCase command/query name by lowercasing the first character of the file name.
6
+
7
+ | Doc type | File name format | Example file | Derived name |
8
+ | -------- | ----------------- | ------------------ | --------------- |
9
+ | Model | `{Entity}.md` | `Product.md` | — |
10
+ | Command | `{VerbEntity}.md` | `CreateProduct.md` | `createProduct` |
11
+ | Query | `{VerbEntity}.md` | `GetProduct.md` | `getProduct` |
12
+
13
+ **Never use kebab-case** (`create-product.md`) — the generator will produce a broken name (`create-product`).
14
+
15
+ ## Command Naming Convention
2
16
 
3
17
  Commands use imperative `{verb}{Entity}` format. Use this canonical verb vocabulary when scaffolding commands.
4
18
 
@@ -57,7 +57,14 @@ After ALL agents return:
57
57
  3. Merge all `inconsistencies[]` arrays into a single list
58
58
  4. Deduplicate: if two gaps share the same `source + target + check`, keep only one
59
59
  5. Calculate totals across all summaries
60
- 6. Render the final report below
60
+ 6. **Classify severity** — for each non-pass gap and inconsistency, the router assigns a severity based on the finding's `check`, `status`, and `detail`:
61
+ - `critical`: missing required doc, fundamental parity break — blocks progress
62
+ - `major`: incomplete coverage, missing business rules — should fix
63
+ - `nit`: minor naming inconsistency, optional improvement — does NOT block the review
64
+ 7. **Determine verdict**:
65
+ - **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
66
+ - **NEEDS CHANGES**: one or more `critical` or `major` findings
67
+ 8. Render the final report below
61
68
 
62
69
  ## Report Format
63
70
 
@@ -146,11 +153,20 @@ Render the aggregated results as markdown:
146
153
 
147
154
  ### 8. Recommendations
148
155
 
149
- Numbered list of actionable fixes, grouped by priority:
156
+ Numbered list of actionable fixes, grouped by severity:
150
157
 
151
- 1. Create missing docs (highest priority)
152
- 2. Add missing business rules / error scenarios
153
- 3. Resolve inconsistencies
158
+ 1. `critical` missing required docs, fundamental parity gaps (must fix)
159
+ 2. `major` missing business rules, incomplete error scenarios (should fix)
160
+ 3. `nit` — minor naming inconsistencies, optional improvements (informational only)
161
+
162
+ ### 9. Verdict
163
+
164
+ **Verdict: APPROVED / NEEDS CHANGES**
165
+
166
+ - If APPROVED with nits: "Review passed. The following nits are informational and do not block progress:" followed by the nit list.
167
+ - If NEEDS CHANGES: "Review requires changes. Fix all critical and major issues, then re-run the review."
168
+
169
+ Severity counts: `critical: N, major: N, nit: N`
154
170
 
155
171
  ## References
156
172
 
@@ -50,3 +50,18 @@ Cross-cutting issues found during the check that don't fit a single gap entry (e
50
50
  ### summary
51
51
 
52
52
  Aggregate counts. `total_checks = passed + failed + skipped`.
53
+
54
+ ## Router-Level Severity and Verdict
55
+
56
+ The router (SKILL.md Step 3) assigns severity to each non-pass finding after collecting all agent results. Agents do NOT assign severity — they only report `status` and `detail`.
57
+
58
+ The router classifies each finding as:
59
+
60
+ - `critical`: blocks progress — missing required doc, fundamental design mismatch
61
+ - `major`: should fix — incomplete coverage, unclear mapping, missing business rules
62
+ - `nit`: nice to have — minor naming inconsistency, optional doc improvement, cosmetic issue
63
+
64
+ Verdict rule:
65
+
66
+ - `APPROVED`: zero `critical` and zero `major` findings (nits only, or all pass)
67
+ - `NEEDS_CHANGES`: one or more `critical` or `major` findings
@@ -17,7 +17,7 @@ Implement features in modules using Test-Driven Development with per-item agent
17
17
  ## Workflow
18
18
 
19
19
  ```
20
- SETUP → DB MODELS (agents) → GENERATE → COMMANDS (agents) → QUERIES (agents) → EXPORT → VERIFY
20
+ SETUP → GENERATE → DB MODELS (agents) → COMMANDS (agents) → QUERIES (agents) → EXPORT → VERIFY
21
21
  ```
22
22
 
23
23
  ## Step 1: Setup
@@ -32,7 +32,17 @@ Define shared context:
32
32
 
33
33
  Verify at least one doc type exists. If none, stop with: "No docs found for module <MODULE_NAME>. Run steps 1-4 first."
34
34
 
35
- ## Step 2: DB Models Agent per model
35
+ ## Step 2: Generate Code from Docs
36
+
37
+ Run generation first to create `.generated.ts` files (error classes, permission definitions, command/query shells) before implementing any code:
38
+
39
+ ```bash
40
+ erp-kit module generate code -p <MODULES_ROOT>/<module>
41
+ ```
42
+
43
+ Never edit these generated files.
44
+
45
+ ## Step 3: DB Models — Agent per model
36
46
 
37
47
  **Read [models rules](references/models.md) and [db-relations rules](references/db-relations.md) before dispatching.**
38
48
 
@@ -51,14 +61,6 @@ After all model agents complete, run:
51
61
  pnpm generate
52
62
  ```
53
63
 
54
- ## Step 3: Generate Code from Docs
55
-
56
- ```bash
57
- erp-kit module generate code --root <root> <module>
58
- ```
59
-
60
- Generated `.generated.ts` files provide: error classes, permission definitions, and command/query shells. Never edit these files.
61
-
62
64
  ## Step 4: Commands — Agent per command
63
65
 
64
66
  **Read [commands rules](../erp-kit-module-shared/references/commands.md) and [testing rules](../erp-kit-module-shared/references/testing.md) before dispatching.**
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- Run `erp-kit module generate code --root <modules-dir> <module-name>` to generate deterministic `.generated.ts` files from command and query documentation.
5
+ Run `erp-kit module generate code -p <modules-dir>/<module-name>` to generate deterministic `.generated.ts` files from command and query documentation.
6
6
 
7
7
  ## What gets generated
8
8
 
@@ -21,7 +21,7 @@ Run `erp-kit module generate code --root <modules-dir> <module-name>` to generat
21
21
  1. Write command/query docs (skills 1-3)
22
22
  2. Write db models (skill 4, step 2)
23
23
  3. Run `pnpm generate` for kysely types
24
- 4. Run `erp-kit module generate code --root <root> <module>`
24
+ 4. Run `erp-kit module generate code -p <root>/<module>`
25
25
  5. Implement business logic in `.ts` files importing from `.generated.ts`
26
26
 
27
27
  ## What you still write by hand