@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailor-platform/erp-kit",
3
- "version": "0.2.2",
3
+ "version": "0.4.0",
4
4
  "description": "Opinionated ERP toolkit for building business applications on Tailor Platform",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -35,12 +35,13 @@
35
35
  "devDependencies": {
36
36
  "@tailor-platform/function-kysely-tailordb": "0.1.3",
37
37
  "@tailor-platform/function-types": "0.8.2",
38
- "@tailor-platform/sdk": "1.25.1",
38
+ "@tailor-platform/sdk": "1.25.2",
39
39
  "@types/mdast": "^4.0.4",
40
40
  "@types/node": "^25.1.0",
41
+ "@typescript-eslint/parser": "^8.57.0",
41
42
  "eslint": "10.0.3",
42
43
  "kysely": "0.28.11",
43
- "tsdown": "0.21.2",
44
+ "tsdown": "0.21.3",
44
45
  "typescript": "^5.7.3",
45
46
  "vitest": "^4.0.0",
46
47
  "@tailor-platform/eslint-config": "0.0.1"
@@ -48,7 +49,7 @@
48
49
  "peerDependencies": {
49
50
  "@tailor-platform/function-kysely-tailordb": "0.1.3",
50
51
  "@tailor-platform/function-types": "0.8.2",
51
- "@tailor-platform/sdk": "1.25.1",
52
+ "@tailor-platform/sdk": "1.25.2",
52
53
  "kysely": "0.28.11"
53
54
  },
54
55
  "engines": {
@@ -68,6 +69,7 @@
68
69
  "mock:start": "node dist/cli.mjs mock start",
69
70
  "mock:validate": "node dist/cli.mjs mock validate",
70
71
  "doc:gen": "POLITTY_DOCS_UPDATE=true vitest run src/cli.doc.test.ts",
71
- "doc:check": "vitest run src/cli.doc.test.ts"
72
+ "doc:check": "vitest run src/cli.doc.test.ts",
73
+ "reset:module": "tsx scripts/reset-module.ts"
72
74
  }
73
75
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: erp-kit-app-1-requirements
3
- description: Create Tier 1-2 documentation (requirements, actors, business-flow) for examples/. Use when starting a new application or documenting high-level requirements and workflows.
3
+ description: Create Tier 1-2 documentation (requirements, actors, business-flow) for an application. Use when starting a new application or documenting high-level requirements and workflows.
4
4
  ---
5
5
 
6
6
  # Application Requirement Analysis Workflow
@@ -26,37 +26,45 @@ Focus on "what" the application should do, not "how" it will be implemented.
26
26
 
27
27
  ### Phase 2: Clarify
28
28
 
29
- Use AskUserQuestion to clarify undefined requirements:
29
+ Use AskUserQuestion to clarify undefined requirements. Focus on business-level scope and workflows — not platform capabilities like authentication.
30
30
 
31
- | Category | Example Questions |
32
- | ----------------- | ---------------------------------------------- |
33
- | Authentication | External IdP / Password / Out of scope? |
34
- | User Operations | Direct creation / Email invitation / Both? |
35
- | Roles | Fixed roles (Admin/User) / Custom roles? |
36
- | User Self-Service | View only / Profile edit / Password change? |
37
- | Lifecycle | Create only / Full lifecycle (activate/deact)? |
31
+ | Category | Example Questions |
32
+ | ---------------- | ---------------------------------------------------------------------------- |
33
+ | Scope | Which steps are MVP-essential? Any steps that can be deferred? |
34
+ | Edge Cases | How far to handle cancellation, rejection, or mid-flow abandonment? |
35
+ | Actor Boundaries | Are approver and executor separate? What is each actor's operational scope? |
36
+ | Business Rules | Which steps are automated vs manual? What conditional branches exist? |
38
37
 
39
38
  Ask 3-4 questions at a time using multiSelect where appropriate.
40
39
 
41
40
  ### Phase 3: Create
42
41
 
43
- Generate documentation using `erp-kit` CLI:
42
+ Generate documentation using `erp-kit` CLI. `{APP_ROOT}` is the parent directory where the app will live:
44
43
 
45
44
  ```bash
46
45
  # Tier 1: Requirements + project structure
47
- erp-kit app scaffold app <app-name> --root examples
46
+ # Creates {APP_ROOT}/{APP_NAME}/README.md
47
+ erp-kit app init {APP_NAME} {APP_ROOT}
48
48
 
49
49
  # Tier 2: Actors
50
- erp-kit app scaffold actors <app-name> <actor-name> --root examples
50
+ erp-kit app generate doc actors {ACTOR_NAME} -p {APP_ROOT}/{APP_NAME}
51
51
 
52
52
  # Tier 2: Business Flows
53
- erp-kit app scaffold business-flow <app-name> <flow-name> --root examples
53
+ erp-kit app generate doc business-flow {FLOW_NAME} -p {APP_ROOT}/{APP_NAME}
54
54
  ```
55
55
 
56
- **Naming conventions:**
56
+ **Directory structure after init + generate:**
57
57
 
58
- - Files: kebab-case (e.g., `sales-representative.md`)
59
- - H1 heading slug must match filename slug
58
+ ```
59
+ {APP_ROOT}/
60
+ {APP_NAME}/
61
+ README.md ← Tier 1 (from app init)
62
+ docs/
63
+ actors/{actor-name}.md ← Tier 2 (from generate doc actors)
64
+ business-flow/{flow-name}/README.md ← Tier 2 (from generate doc business-flow)
65
+ ```
66
+
67
+ **Schema constraints:** See [erp-kit-app-shared/references/schema-constraints.md](../erp-kit-app-shared/references/schema-constraints.md) for H1 heading rules, naming conventions, and requirements structure.
60
68
 
61
69
  **Business flow diagram:** Use `sequenceDiagram` with actors from "Actors Involved" as participants. Show who initiates each step and the system responses.
62
70
 
@@ -67,9 +75,11 @@ At Tier 2, story files do not exist yet. Use `- TBD` as a placeholder to avoid b
67
75
  ### Phase 4: Validate
68
76
 
69
77
  ```bash
70
- pnpm run app:doc:check
78
+ erp-kit app check -p {APP_ROOT}
71
79
  ```
72
80
 
81
+ See [schema-constraints.md](../erp-kit-app-shared/references/schema-constraints.md) for notes on expected "No matching files found" output.
82
+
73
83
  ## Schema Reference
74
84
 
75
85
  | Schema | Tier | Output Path |
@@ -17,7 +17,7 @@ Review **requirements quality** and **documentation consistency** for an app-com
17
17
 
18
18
  Define shared context for all agents:
19
19
 
20
- - `APP_ROOT`: from argument or current working directory. Must contain a `docs/` directory.
20
+ - `APP_ROOT`: the app directory (e.g., `{APP_ROOT}/{APP_NAME}`). Must contain `README.md` and a `docs/` directory.
21
21
  - `APP_NAME`: basename of APP_ROOT
22
22
  - `APP_README`: `<APP_ROOT>/README.md`
23
23
  - `BUSINESS_FLOW_DOCS`: glob `<APP_ROOT>/docs/business-flow/*/README.md`
@@ -43,15 +43,16 @@ For each agent:
43
43
  3. Replace `{{APP_README}}`, `{{ACTOR_DOCS}}`, `{{BUSINESS_FLOW_DOCS}}` with the actual file paths
44
44
  4. Dispatch the agent with the filled prompt
45
45
 
46
- ## Step 3: Aggregate Results
46
+ ## Step 3: Aggregate & Validate
47
47
 
48
48
  After ALL agents return:
49
49
 
50
50
  1. Collect the markdown results from each agent
51
51
  2. Merge all `issues[]` arrays into a single list
52
52
  3. Merge all `recommendations[]` arrays into a single list
53
- 4. Calculate totals across all summaries
54
- 5. Render the final report below
53
+ 4. **Filter out** any recommendation that would violate `erp-kit app check` schema constraints (e.g., title-casing business flow H1 headings)
54
+ 5. Calculate totals across all summaries
55
+ 6. Render the final report below
55
56
 
56
57
  ## Report Format
57
58
 
@@ -7,13 +7,22 @@ App README: {{APP_README}}
7
7
  Actor docs: {{ACTOR_DOCS}}
8
8
  Business flow docs: {{BUSINESS_FLOW_DOCS}}
9
9
 
10
+ ## Schema Constraints
11
+
12
+ Read [erp-kit-app-shared/references/schema-constraints.md](../../erp-kit-app-shared/references/schema-constraints.md) before evaluating. **Never recommend changes that violate the schema.**
13
+
14
+ ## Tier 2 Scope
15
+
16
+ This review targets Tier 1-2 documentation only. Stories (`## Stories` section in business flows) are created in step 3 (`erp-kit-app-3-plan`). A `- TBD` placeholder in the Stories section is expected and correct at this stage — do **not** flag it as incomplete or missing.
17
+
10
18
  ## Instructions
11
19
 
12
20
  1. Read the application README at the path above
13
21
  2. Read ALL actor docs and business flow docs at the paths above
14
22
  3. **Web search** app-compose and ERP application best practices (actor modeling, business flow design, user journey patterns)
15
23
  4. Evaluate whether the Tier 1-2 documentation follows best practices
16
- 5. Return results as markdown per the Output Format section
24
+ 5. **Verify** that none of your recommendations would violate the schema constraints above
25
+ 6. Return results as markdown per the Output Format section
17
26
 
18
27
  ## Application Design Checks
19
28
 
@@ -7,12 +7,21 @@ App README: {{APP_README}}
7
7
  Actor docs: {{ACTOR_DOCS}}
8
8
  Business flow docs: {{BUSINESS_FLOW_DOCS}}
9
9
 
10
+ ## Schema Constraints
11
+
12
+ Read [erp-kit-app-shared/references/schema-constraints.md](../../erp-kit-app-shared/references/schema-constraints.md) before evaluating. When checking `naming_consistency`, validate that H1 headings follow the schema rules — different doc types have different heading formats.
13
+
14
+ ## Tier 2 Scope
15
+
16
+ This review targets Tier 1-2 documentation only. Stories (`## Stories` section in business flows) are created in step 3 (`erp-kit-app-3-plan`). A `- TBD` placeholder in the Stories section is expected and correct at this stage — do **not** flag it as a broken link, missing content, or incomplete documentation.
17
+
10
18
  ## Instructions
11
19
 
12
20
  1. Read the application README at the path above
13
21
  2. Read ALL actor docs and business flow docs at the paths above
14
22
  3. Cross-reference actors, flows, and requirements for internal consistency
15
- 4. Return results as markdown per the Output Format section
23
+ 4. **Verify** that none of your recommendations would violate the schema constraints above
24
+ 5. Return results as markdown per the Output Format section
16
25
 
17
26
  ## Consistency Checks
18
27
 
@@ -29,26 +29,36 @@ Define shared context for all agents:
29
29
  - `APP_NAME`: basename of APP_ROOT
30
30
  - `BUSINESS_FLOW_DOCS`: glob `<APP_ROOT>/docs/business-flow/*/README.md`
31
31
  - `ACTOR_DOCS`: glob `<APP_ROOT>/docs/actors/*.md`
32
+ - `MODULE_OVERVIEW`: output of `erp-kit doc modules`
32
33
 
33
34
  Verify at least `BUSINESS_FLOW_DOCS` is non-empty. If no business flow docs exist, stop with: "No business flow docs found under <APP_ROOT>/docs/. Run erp-kit-app-1-requirements first."
34
35
 
36
+ Collect module overview:
37
+
38
+ ```bash
39
+ erp-kit doc modules
40
+ ```
41
+
42
+ This returns each module's name, overview, command/query/model counts, and dependencies. Save the full output as `MODULE_OVERVIEW` — all three agents receive it.
43
+
35
44
  ## Step 2: Dispatch Agents (parallelize if possible)
36
45
 
37
46
  Launch 3 Agent tool calls in parallel — one per extraction concern.
38
- Each agent receives: APP_NAME, relevant doc file paths.
47
+ Each agent receives: APP_NAME, relevant doc file paths, and MODULE_OVERVIEW.
39
48
 
40
- | Agent | Prompt Template | Inputs |
41
- | ----- | ---------------------------------------------------------------------- | ---------------------------------------- |
42
- | 1 | [references/story-extraction.md](references/story-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
43
- | 2 | [references/screen-extraction.md](references/screen-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
44
- | 3 | [references/resolver-extraction.md](references/resolver-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
49
+ | Agent | Prompt Template | Inputs |
50
+ | ----- | ---------------------------------------------------------------------- | --------------------------------------------------------- |
51
+ | 1 | [references/story-extraction.md](references/story-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS, MODULE_OVERVIEW |
52
+ | 2 | [references/screen-extraction.md](references/screen-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS, MODULE_OVERVIEW |
53
+ | 3 | [references/resolver-extraction.md](references/resolver-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS, MODULE_OVERVIEW |
45
54
 
46
55
  For each agent:
47
56
 
48
57
  1. Read the prompt template file
49
58
  2. Replace `{{APP_NAME}}` with the resolved app name
50
59
  3. Replace `{{ACTOR_DOCS}}`, `{{BUSINESS_FLOW_DOCS}}` with the actual file paths
51
- 4. Dispatch the agent with the filled prompt
60
+ 4. Replace `{{MODULE_OVERVIEW}}` with the output from `erp-kit doc modules`
61
+ 5. Dispatch the agent with the filled prompt
52
62
 
53
63
  ## Step 3: Aggregate & Present Plan
54
64
 
@@ -59,43 +69,33 @@ After ALL agents return:
59
69
  - Stories to create (with actor, flow, scenario patterns)
60
70
  - Screens to create (with type, fields, actions)
61
71
  - Resolvers to create (with operation type, module mapping)
62
- 3. Wait for user approval
63
-
64
- ## Step 4: Check Module Dependencies
72
+ ## Step 4: Resolve Module Gaps
65
73
 
66
- Before creating resolver docs, verify required modules exist:
74
+ Step 2's resolver agent mapped resolvers to erp-kit modules using `MODULE_OVERVIEW` and flagged any operations that could not be mapped as module gaps.
67
75
 
68
- ```bash
69
- ls packages/erp-kit/src/modules/
70
- ```
71
-
72
- For each resolver that references a module command, check the module and command exist:
73
-
74
- ```bash
75
- ls packages/erp-kit/src/modules/<module-name>/docs/commands/
76
- ```
76
+ If there are no gaps, proceed to Step 5.
77
77
 
78
- **If modules don't exist:**
78
+ **If resolvers require functionality that no erp-kit module provides:**
79
79
 
80
- 1. Identify needed modules group resolver operations by domain
81
- 2. Create module docs first use `erp-kit-module-1-requirements` skill
82
- 3. Return to this step after modules have documented commands
80
+ 1. Group the unmapped operations by domain to identify what custom modules are needed
81
+ 2. Create each custom module using `erp-kit-module-1-requirements` skill
82
+ 3. Return to this step after the custom modules are ready
83
83
 
84
- **Only reference existing module commands** in resolver documentation.
84
+ For resolvers that reference erp-kit modules, use `MODULE_OVERVIEW` as the source of truth. For resolvers that reference custom modules, use the custom module's own documentation.
85
85
 
86
86
  ## Step 5: Scaffold & Populate
87
87
 
88
- After approval, scaffold using `erp-kit` CLI:
88
+ Scaffold using `erp-kit` CLI:
89
89
 
90
90
  ```bash
91
91
  # Tier 3: Stories
92
- erp-kit app scaffold story <app> <flow>/<actor>--<story> --root examples
92
+ erp-kit app generate doc story <flow>/<actor>--<story> -p {APP_ROOT}/{APP_NAME}
93
93
 
94
94
  # Tier 3: Screens
95
- erp-kit app scaffold screen <app> <screen-name> --root examples
95
+ erp-kit app generate doc screen <screen-name> -p {APP_ROOT}/{APP_NAME}
96
96
 
97
97
  # Tier 4: Resolvers
98
- erp-kit scaffold --app-root examples resolver <app> <resolver-name>
98
+ erp-kit app generate doc resolver <resolver-name> -p {APP_ROOT}/{APP_NAME}
99
99
  ```
100
100
 
101
101
  Fill scaffolded docs with details from agent extraction results.
@@ -117,15 +117,12 @@ Read-only stories should have `None` under `## Resolvers`.
117
117
  ## Step 6: Validate
118
118
 
119
119
  ```bash
120
- pnpm run app:doc:check
120
+ erp-kit app check -p {APP_ROOT}
121
121
  ```
122
122
 
123
123
  ## Naming Conventions
124
124
 
125
- - Story filename: `<actor>--<story-name>.md` (double-dash separator)
126
- - Story heading: Title Case of story name (after `--`)
127
- - Screen filename: kebab-case, noun-focused (e.g., `supplier-list.md`)
128
- - Resolver filename: camelCase action-verb (e.g., `createSupplierInvitation.md`)
125
+ See [erp-kit-app-shared/references/naming-conventions.md](../erp-kit-app-shared/references/naming-conventions.md).
129
126
 
130
127
  ## Schema Reference
131
128
 
@@ -6,11 +6,23 @@ App: {{APP_NAME}}
6
6
  Actor docs: {{ACTOR_DOCS}}
7
7
  Business flow docs: {{BUSINESS_FLOW_DOCS}}
8
8
 
9
+ ## Available Modules
10
+
11
+ The following modules are available in erp-kit. Use this to map resolvers to real module commands.
12
+
13
+ {{MODULE_OVERVIEW}}
14
+
15
+ To inspect a specific module's commands in detail, run:
16
+
17
+ ```bash
18
+ erp-kit doc module <module-name> command <command-name>
19
+ ```
20
+
9
21
  ## Instructions
10
22
 
11
23
  1. Read ALL actor docs at the paths above
12
24
  2. Read ALL business flow docs at the paths above
13
- 3. Identify GraphQL resolvers needed for each business flow
25
+ 3. Identify GraphQL resolvers needed for each business flow, using the module overview and `erp-kit doc module <name> command` for detail
14
26
  4. Return results as a structured markdown report
15
27
 
16
28
  ## Extraction Rules
@@ -21,43 +33,12 @@ For each business flow step that modifies data:
21
33
 
22
34
  1. Identify the operation type (create, update, delete, approve, etc.)
23
35
  2. Map to a resolver name using camelCase action-verb convention
24
- 3. Identify the module command the resolver will call
36
+ 3. Identify the module command the resolver will call. If no erp-kit module covers the domain, flag it as a module gap.
25
37
  4. Extract inputs, outputs, and error scenarios
26
38
 
27
39
  ### Operation → Resolver Mapping
28
40
 
29
- | Flow Operation | Resolver Type | Naming Pattern |
30
- | -------------------- | ------------- | ---------------------- |
31
- | Create/Add entity | Mutation | `create<Entity>` |
32
- | Update/Modify entity | Mutation | `update<Entity>` |
33
- | Delete/Remove entity | Mutation | `delete<Entity>` |
34
- | Activate entity | Mutation | `activate<Entity>` |
35
- | Deactivate entity | Mutation | `deactivate<Entity>` |
36
- | Assign X to Y | Mutation | `assign<X>To<Y>` |
37
- | Submit/Approve | Mutation | `submit<Entity>` etc. |
38
- | View/List/Get | Query | Built-in (no resolver) |
39
-
40
- ### Built-in vs Custom
41
-
42
- | Category | Description | Implementation |
43
- | -------------------- | ---------------------------------------- | -------------------- |
44
- | **Custom resolvers** | Mutations that call module commands | Write resolver files |
45
- | **Built-in queries** | List and get operations for reading data | Automatic, no code |
46
-
47
- Prefer built-in queries over custom resolvers for list/get operations.
48
-
49
- ### Module Command Mapping
50
-
51
- For each resolver, identify which erp-kit module provides the command:
52
-
53
- | Resolver Operation | Typical Module |
54
- | ------------------ | --------------------- |
55
- | User invite/roles | `user-management` |
56
- | Supplier CRUD | `supplier-management` |
57
- | Document handling | `document-management` |
58
- | Task workflows | `task-management` |
59
- | Item CRUD | `item-management` |
60
- | Unit/currency | `primitives` |
41
+ See [erp-kit-app-shared/references/resolver-classification.md](../../erp-kit-app-shared/references/resolver-classification.md) for the full operation resolver mapping table and custom vs built-in classification.
61
42
 
62
43
  ### Resolver Content
63
44
 
@@ -96,12 +77,17 @@ For each resolver:
96
77
 
97
78
  List entities that only need built-in list/get queries (no custom resolver needed).
98
79
 
99
- ### Module Dependencies
80
+ ### Module Gaps
81
+
82
+ List any operations that could not be mapped to an existing erp-kit module. These will require a custom module. For each gap:
100
83
 
101
- Table with columns: Module, Required Commands, Status (exists/missing)
84
+ - **Operation:** what the flow requires
85
+ - **Suggested custom module:** proposed module name and domain
86
+ - **Suggested command:** proposed command name
102
87
 
103
88
  ### Summary
104
89
 
105
90
  - Total custom resolvers
106
91
  - Total built-in queries
107
92
  - Resolvers per module (table)
93
+ - Module gaps (if any)
@@ -6,12 +6,25 @@ App: {{APP_NAME}}
6
6
  Actor docs: {{ACTOR_DOCS}}
7
7
  Business flow docs: {{BUSINESS_FLOW_DOCS}}
8
8
 
9
+ ## Available Modules
10
+
11
+ The following modules are available in erp-kit. Use this to understand which entities exist and what operations are available.
12
+
13
+ {{MODULE_OVERVIEW}}
14
+
15
+ To inspect a specific module's model (domain description, state transitions, invariants, commands), run:
16
+
17
+ ```bash
18
+ erp-kit doc module <module-name> model <model-name>
19
+ ```
20
+
9
21
  ## Instructions
10
22
 
11
23
  1. Read ALL actor docs at the paths above
12
24
  2. Read ALL business flow docs at the paths above
13
25
  3. Identify screens needed for each business flow
14
- 4. Return results as a structured markdown report
26
+ 4. For screens that display or edit module entities, use `erp-kit doc module <name> model` to understand the entity's domain
27
+ 5. Return results as a structured markdown report
15
28
 
16
29
  ## Extraction Rules
17
30
 
@@ -63,6 +76,7 @@ For each screen:
63
76
 
64
77
  - **Screen:** `<screen-name>`
65
78
  - **Type:** ListView / Form / DetailView
79
+ - **Module source:** which module's model provides the data (if applicable)
66
80
  - **Fields/Columns:** bulleted list of fields with types
67
81
  - **Actions:** bulleted list of actions
68
82
  - **Referenced by stories:** which stories use this screen
@@ -6,6 +6,12 @@ App: {{APP_NAME}}
6
6
  Actor docs: {{ACTOR_DOCS}}
7
7
  Business flow docs: {{BUSINESS_FLOW_DOCS}}
8
8
 
9
+ ## Available Modules
10
+
11
+ The following modules are available in erp-kit. Use this to determine whether a story needs custom resolvers or can rely on built-in queries.
12
+
13
+ {{MODULE_OVERVIEW}}
14
+
9
15
  ## Instructions
10
16
 
11
17
  1. Read ALL actor docs at the paths above
@@ -49,10 +55,10 @@ For each story, extract:
49
55
 
50
56
  ### Resolver Classification
51
57
 
52
- For each story, determine:
58
+ For each story, determine using the module overview:
53
59
 
54
60
  - **Needs resolvers**: Story involves create/update/delete operations → mark as `- TBD` for resolvers
55
- - **Read-only**: Story only views/lists data → mark as `None` for resolvers
61
+ - **Read-only**: Story only views/lists data and built-in queries suffice → mark as `None` for resolvers
56
62
 
57
63
  ## Naming Convention
58
64
 
@@ -160,18 +160,9 @@ Numbered list of actionable fixes, grouped by priority:
160
160
  2. Fix broken links
161
161
  3. Remove or link orphans
162
162
 
163
- ## Link Format Reference
164
-
165
- | From | To | Format |
166
- | ------------- | ------------- | ----------------------------------- |
167
- | Business Flow | Story | `./story/<actor>--<name>.md` |
168
- | Business Flow | Actor | `../../actors/<actor>.md` |
169
- | Actor | Business Flow | `../business-flow/<flow>/README.md` |
170
- | Story | Screen | `../../../screen/<screen>.md` |
171
- | Story | Resolver | `../../../resolver/<name>.md` |
172
-
173
163
  ## References
174
164
 
165
+ - [Link format reference](../erp-kit-app-shared/references/link-format-reference.md)
175
166
  - [Parity report format](references/parity-report-format.md)
176
167
  - For plan creation, see erp-kit-app-3-plan
177
168
  - For implementation, see erp-kit-app-5-impl-backend
@@ -27,9 +27,13 @@ All four tiers of documentation must exist:
27
27
  ## Workflow
28
28
 
29
29
  ```
30
- ANALYZE DOCS → MODULE WIRING → CONFIG → RESOLVERS → GENERATED FILES → VERIFY → DEPLOY
30
+ ANALYZE DOCS → MODULE WIRING → CONFIG → RESOLVERS → GENERATED FILES → DEPLOY
31
31
  ```
32
32
 
33
+ ### Incremental Verification
34
+
35
+ Run `pnpm lint` and `pnpm typecheck` after each of Phase 2, 3, and 4. Fix errors before moving on.
36
+
33
37
  ### Phase 1: Analyze Documentation
34
38
 
35
39
  Read all resolver and screen specs to build a complete picture:
@@ -38,14 +42,7 @@ Read all resolver and screen specs to build a complete picture:
38
42
  2. **Screen docs** (`docs/screen/*.md`) — Identify screen types (ListView, Form, DetailView) and their fields/columns/actions
39
43
  3. **Command source types** — For each module command the resolver calls, read the input type at `node_modules/@tailor-platform/erp-kit/src/modules/<module>/command/<commandName>.ts`. Do not invent fields that don't exist in the command, and preserve the required/optional distinction.
40
44
 
41
- Classify resolvers into two categories:
42
-
43
- | Category | Description | Implementation |
44
- | -------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
45
- | **Custom resolvers** | Mutations that call module commands (create, update, activate, deactivate, assign) | Write `createResolver()` files |
46
- | **Built-in queries** | List and get operations for reading data | Handled automatically by `gqlOperations: "query"` in config — no code needed |
47
-
48
- Prefer built-in queries over custom resolvers for list/get operations where possible.
45
+ Classify resolvers per [erp-kit-app-shared/references/resolver-classification.md](../erp-kit-app-shared/references/resolver-classification.md).
49
46
 
50
47
  ### Phase 2: Wire Modules (`src/modules.ts`)
51
48
 
@@ -72,10 +69,12 @@ Key points:
72
69
 
73
70
  ### Phase 4: Implement Backend Resolvers and Executors
74
71
 
75
- Write one file per resolver under `src/modules/<module-name>/resolvers/`, one per executor under `executors/`.
72
+ Write one file per resolver under `src/resolvers/`, one per executor under `executors/`.
76
73
 
77
74
  **Read [resolver & executor patterns reference](references/resolver-patterns.md).**
78
75
 
76
+ For each resolver, check whether its spec (`docs/resolver/*.md`) documents error codes. If it does, implement a `switch(result.error.code)` block — do not use generic `throw result.error`.
77
+
79
78
  Do not directly mutate module-owned tables via Kysely — always use module commands.
80
79
 
81
80
  ### Phase 5: Generated Files
@@ -83,15 +82,7 @@ Do not directly mutate module-owned tables via Kysely — always use module comm
83
82
  - **Kysely types** (`src/generated/kysely-tailordb.ts`) — Auto-generated by `pnpm generate` after deployment. Before deployment, create a minimal placeholder so the codebase typechecks.
84
83
  - **Seed data** (`seed/`) — `exec.mjs` runner + `data/*.jsonl` (records) and `data/*.schema.ts` (validation). Create seed records for initial data (permissions, roles, test users, etc.). Seeded users must have concrete permission keys required by the wired modules.
85
84
 
86
- ### Phase 6: Verify
87
-
88
- ```bash
89
- cd <app-root>/backend
90
- pnpm lint
91
- pnpm typecheck
92
- ```
93
-
94
- ### Phase 7: Deploy Backend & Next Steps
85
+ ### Phase 6: Deploy Backend & Next Steps
95
86
 
96
87
  Frontend implementation requires a deployed backend (for GraphQL schema generation). Prompt the user to:
97
88
 
@@ -1,26 +1,6 @@
1
1
  # Application Config
2
2
 
3
- `tailor.config.ts` defines the Tailor application configuration. Key structure:
4
-
5
- ```ts
6
- export default defineConfig({
7
- name: "<app-name>",
8
- cors: ["http://localhost:5173", website.url],
9
- db: {
10
- "main-db": {
11
- files: [`./src/modules.ts`],
12
- gqlOperations: "query",
13
- },
14
- },
15
- resolver: {
16
- "main-resolver": { files: [`./src/modules/**/resolvers/**/*.ts`] },
17
- },
18
- executor: { files: [`./src/modules/**/executors/**/*.ts`] },
19
- auth: auth,
20
- idp: [idp],
21
- staticWebsites: [website],
22
- });
23
- ```
3
+ `tailor.config.ts` defines the Tailor application configuration. Refer to existing examples in the codebase for the full config structure.
24
4
 
25
5
  Key points:
26
6
 
@@ -30,7 +10,6 @@ Key points:
30
10
 
31
11
  ## Auth configuration
32
12
 
33
- - Define IdP (`defineIdp`), Auth (`defineAuth`), and static website (`defineStaticWebSite`) using Tailor SDK
34
13
  - Prefer stable default naming: auth `default`, IdP `default`, OAuth2 client `default`
35
14
  - `userProfile.type` must reference the `user` DB type from `modules.ts`
36
15
  - `userProfile.usernameField`: stable unique field (e.g., `email`)
@@ -3,7 +3,6 @@
3
3
  `src/modules.ts` composes erp-kit modules and exports their parts for resolver use.
4
4
 
5
5
  ```ts
6
- import { db as field } from "@tailor-platform/sdk";
7
6
  import {
8
7
  definePrimitivesModule,
9
8
  defineUserManagementModule,
@@ -42,18 +42,27 @@ body: async (context) => {
42
42
 
43
43
  ### Error handling
44
44
 
45
- When the resolver spec documents specific error codes, use `result.error.code` to switch:
45
+ Resolver specs document error codes the command can return. When codes are documented, add a `case` for every documented code — generic `throw result.error` loses context for the frontend. The error code is a discriminated union, so TypeScript enforces exhaustive handling without a `default` branch.
46
+
47
+ **Do this:**
46
48
 
47
49
  ```ts
48
50
  if (!result.ok) {
49
51
  switch (result.error.code) {
50
- case "USER_NOT_FOUND":
51
- throw new Error(`User ${context.input.userId} not found`);
52
- // ...
52
+ case "INSUFFICIENT_STOCK":
53
+ throw new Error(`Stock insufficient for item ${context.input.itemId}`);
54
+ case "ORDER_ALREADY_CONFIRMED":
55
+ throw new Error("Cannot modify a confirmed order");
53
56
  }
54
57
  }
55
58
  ```
56
59
 
60
+ **Not this:**
61
+
62
+ ```ts
63
+ if (!result.ok) throw result.error;
64
+ ```
65
+
57
66
  Do not directly mutate module-owned tables via Kysely — always use module commands.
58
67
 
59
68
  ---
@@ -43,6 +43,8 @@ Run `pnpm generate` in the frontend directory to fetch the GraphQL schema from t
43
43
 
44
44
  ### Phase 3: Implement Frontend Pages
45
45
 
46
+ Run `pnpm lint`, `pnpm typecheck`, and `pnpm gql-tada:check` regularly during implementation. Fix errors before moving on.
47
+
46
48
  Create pages driven by screen spec docs. Each screen type has a standard implementation pattern.
47
49
 
48
50
  **Read [pages reference](references/pages.md) for the full pattern catalog.**
@@ -70,5 +72,8 @@ Key frontend patterns:
70
72
  cd <app-root>/frontend
71
73
  pnpm lint
72
74
  pnpm typecheck
75
+ pnpm gql-tada:check
73
76
  pnpm build
74
77
  ```
78
+
79
+ After verification passes, proceed to implementation review with `/erp-kit-app-7-impl-review`.