@tailor-platform/erp-kit 0.4.0 → 0.4.1

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 (488) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cli.mjs +9 -9
  3. package/package.json +1 -1
  4. package/skills/erp-kit-app-1-requirements/SKILL.md +31 -3
  5. package/skills/{erp-kit-app-3-plan → erp-kit-app-1-requirements}/references/story-extraction.md +3 -9
  6. package/skills/erp-kit-app-2-requirements-review/SKILL.md +29 -5
  7. package/skills/erp-kit-app-2-requirements-review/references/story-quality-check.md +67 -0
  8. package/skills/erp-kit-app-3-plan/SKILL.md +33 -32
  9. package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +4 -2
  10. package/skills/erp-kit-app-3-plan/references/screen-extraction.md +5 -3
  11. package/skills/erp-kit-app-4-plan-review/SKILL.md +16 -13
  12. package/skills/erp-kit-app-5-impl-backend/SKILL.md +10 -0
  13. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +11 -0
  14. package/skills/erp-kit-app-7-impl-review/SKILL.md +18 -14
  15. package/skills/erp-kit-module-2-requirements-review/SKILL.md +16 -8
  16. package/skills/erp-kit-module-4-plan-review/SKILL.md +19 -12
  17. package/skills/erp-kit-module-shared/references/commands.md +1 -1
  18. package/skills/erp-kit-module-shared/references/queries.md +5 -6
  19. package/src/generator/generate-code-boilerplate.test.ts +0 -1
  20. package/src/generator/generate-code.test.ts +10 -6
  21. package/src/generator/generate-errors.ts +1 -1
  22. package/src/generator/generate-permissions.ts +1 -1
  23. package/src/generator/generate-shells.ts +2 -2
  24. package/src/generator/stub-templates.ts +5 -5
  25. package/src/module.ts +3 -0
  26. package/src/modules/audit/command/activateAuditPolicy.generated.ts +1 -1
  27. package/src/modules/audit/command/activateAuditPolicy.test.ts +1 -1
  28. package/src/modules/audit/command/activateAuditPolicy.ts +1 -1
  29. package/src/modules/audit/command/createAuditPolicy.generated.ts +1 -1
  30. package/src/modules/audit/command/createAuditPolicy.test.ts +1 -1
  31. package/src/modules/audit/command/createAuditPolicy.ts +1 -1
  32. package/src/modules/audit/command/deactivateAuditPolicy.generated.ts +1 -1
  33. package/src/modules/audit/command/deactivateAuditPolicy.test.ts +2 -2
  34. package/src/modules/audit/command/deactivateAuditPolicy.ts +1 -1
  35. package/src/modules/audit/command/deleteAuditPolicy.generated.ts +1 -1
  36. package/src/modules/audit/command/deleteAuditPolicy.test.ts +1 -1
  37. package/src/modules/audit/command/deleteAuditPolicy.ts +1 -1
  38. package/src/modules/audit/command/logAuditEvent.generated.ts +1 -1
  39. package/src/modules/audit/command/logAuditEvent.test.ts +1 -1
  40. package/src/modules/audit/command/logAuditEvent.ts +1 -1
  41. package/src/modules/audit/command/reactivateAuditPolicy.generated.ts +1 -1
  42. package/src/modules/audit/command/reactivateAuditPolicy.test.ts +2 -2
  43. package/src/modules/audit/command/reactivateAuditPolicy.ts +1 -1
  44. package/src/modules/audit/command/registerAuditableEntity.generated.ts +1 -1
  45. package/src/modules/audit/command/registerAuditableEntity.test.ts +1 -1
  46. package/src/modules/audit/command/registerAuditableEntity.ts +1 -1
  47. package/src/modules/audit/command/replaceAuditPolicy.generated.ts +1 -1
  48. package/src/modules/audit/command/replaceAuditPolicy.test.ts +1 -1
  49. package/src/modules/audit/command/replaceAuditPolicy.ts +1 -1
  50. package/src/modules/audit/command/updateAuditPolicy.generated.ts +1 -1
  51. package/src/modules/audit/command/updateAuditPolicy.test.ts +1 -1
  52. package/src/modules/audit/command/updateAuditPolicy.ts +1 -1
  53. package/src/modules/audit/lib/errors.generated.ts +1 -1
  54. package/src/modules/audit/lib/permissions.generated.ts +1 -1
  55. package/src/modules/audit/lib/types.ts +6 -1
  56. package/src/modules/audit/permissions.ts +1 -1
  57. package/src/modules/audit/query/getAuditEntry.generated.ts +1 -1
  58. package/src/modules/audit/query/getAuditEntry.test.ts +2 -2
  59. package/src/modules/audit/query/getAuditEntry.ts +7 -1
  60. package/src/modules/audit/query/getAuditPolicy.generated.ts +1 -1
  61. package/src/modules/audit/query/getAuditPolicy.test.ts +2 -2
  62. package/src/modules/audit/query/getAuditPolicy.ts +7 -1
  63. package/src/modules/audit/query/getAuditSummary.generated.ts +1 -1
  64. package/src/modules/audit/query/getAuditSummary.test.ts +2 -2
  65. package/src/modules/audit/query/getAuditSummary.ts +7 -1
  66. package/src/modules/audit/query/getChangeDetails.generated.ts +1 -1
  67. package/src/modules/audit/query/getChangeDetails.test.ts +2 -2
  68. package/src/modules/audit/query/getChangeDetails.ts +7 -1
  69. package/src/modules/audit/query/listAuditPolicies.generated.ts +1 -1
  70. package/src/modules/audit/query/listAuditPolicies.test.ts +2 -2
  71. package/src/modules/audit/query/listAuditPolicies.ts +3 -3
  72. package/src/modules/audit/query/searchAuditEntries.generated.ts +1 -1
  73. package/src/modules/audit/query/searchAuditEntries.test.ts +2 -2
  74. package/src/modules/audit/query/searchAuditEntries.ts +7 -7
  75. package/src/modules/business-partner/command/activatePartner.generated.ts +1 -1
  76. package/src/modules/business-partner/command/activatePartner.ts +1 -1
  77. package/src/modules/business-partner/command/assignRoleToPartner.generated.ts +1 -1
  78. package/src/modules/business-partner/command/assignRoleToPartner.test.ts +1 -1
  79. package/src/modules/business-partner/command/assignRoleToPartner.ts +1 -1
  80. package/src/modules/business-partner/command/createContactPerson.generated.ts +1 -1
  81. package/src/modules/business-partner/command/createContactPerson.ts +1 -1
  82. package/src/modules/business-partner/command/createPartner.generated.ts +1 -1
  83. package/src/modules/business-partner/command/createPartner.test.ts +1 -1
  84. package/src/modules/business-partner/command/createPartner.ts +3 -4
  85. package/src/modules/business-partner/command/createPartnerAddress.generated.ts +1 -1
  86. package/src/modules/business-partner/command/createPartnerAddress.ts +1 -1
  87. package/src/modules/business-partner/command/createPartnerBankAccount.generated.ts +1 -1
  88. package/src/modules/business-partner/command/createPartnerBankAccount.test.ts +1 -1
  89. package/src/modules/business-partner/command/createPartnerBankAccount.ts +1 -1
  90. package/src/modules/business-partner/command/createPartnerIdentification.generated.ts +1 -1
  91. package/src/modules/business-partner/command/createPartnerIdentification.test.ts +1 -1
  92. package/src/modules/business-partner/command/createPartnerIdentification.ts +1 -1
  93. package/src/modules/business-partner/command/deactivateContactPerson.generated.ts +1 -1
  94. package/src/modules/business-partner/command/deactivateContactPerson.ts +1 -1
  95. package/src/modules/business-partner/command/deactivatePartner.generated.ts +1 -1
  96. package/src/modules/business-partner/command/deactivatePartner.ts +1 -1
  97. package/src/modules/business-partner/command/deleteContactPerson.generated.ts +1 -1
  98. package/src/modules/business-partner/command/deleteContactPerson.ts +1 -1
  99. package/src/modules/business-partner/command/deletePartner.generated.ts +1 -1
  100. package/src/modules/business-partner/command/deletePartner.ts +1 -1
  101. package/src/modules/business-partner/command/deletePartnerAddress.generated.ts +1 -1
  102. package/src/modules/business-partner/command/deletePartnerAddress.test.ts +1 -1
  103. package/src/modules/business-partner/command/deletePartnerAddress.ts +1 -1
  104. package/src/modules/business-partner/command/deletePartnerBankAccount.generated.ts +1 -1
  105. package/src/modules/business-partner/command/deletePartnerBankAccount.test.ts +1 -1
  106. package/src/modules/business-partner/command/deletePartnerBankAccount.ts +1 -1
  107. package/src/modules/business-partner/command/deletePartnerIdentification.generated.ts +1 -1
  108. package/src/modules/business-partner/command/deletePartnerIdentification.test.ts +1 -1
  109. package/src/modules/business-partner/command/deletePartnerIdentification.ts +1 -1
  110. package/src/modules/business-partner/command/reactivateContactPerson.generated.ts +1 -1
  111. package/src/modules/business-partner/command/reactivateContactPerson.ts +1 -1
  112. package/src/modules/business-partner/command/reactivatePartner.generated.ts +1 -1
  113. package/src/modules/business-partner/command/reactivatePartner.ts +1 -1
  114. package/src/modules/business-partner/command/removeRoleFromPartner.generated.ts +1 -1
  115. package/src/modules/business-partner/command/removeRoleFromPartner.test.ts +1 -1
  116. package/src/modules/business-partner/command/removeRoleFromPartner.ts +1 -1
  117. package/src/modules/business-partner/command/setDefaultPartnerAddress.generated.ts +1 -1
  118. package/src/modules/business-partner/command/setDefaultPartnerAddress.ts +1 -1
  119. package/src/modules/business-partner/command/setDefaultPartnerBankAccount.generated.ts +1 -1
  120. package/src/modules/business-partner/command/setDefaultPartnerBankAccount.test.ts +1 -1
  121. package/src/modules/business-partner/command/setDefaultPartnerBankAccount.ts +1 -1
  122. package/src/modules/business-partner/command/setPrimaryContactPerson.generated.ts +1 -1
  123. package/src/modules/business-partner/command/setPrimaryContactPerson.ts +1 -1
  124. package/src/modules/business-partner/command/updateContactPerson.generated.ts +1 -1
  125. package/src/modules/business-partner/command/updateContactPerson.ts +1 -1
  126. package/src/modules/business-partner/command/updatePartner.generated.ts +1 -1
  127. package/src/modules/business-partner/command/updatePartner.test.ts +1 -1
  128. package/src/modules/business-partner/command/updatePartner.ts +1 -1
  129. package/src/modules/business-partner/command/updatePartnerAddress.generated.ts +1 -1
  130. package/src/modules/business-partner/command/updatePartnerAddress.ts +1 -1
  131. package/src/modules/business-partner/command/updatePartnerBankAccount.generated.ts +1 -1
  132. package/src/modules/business-partner/command/updatePartnerBankAccount.test.ts +1 -1
  133. package/src/modules/business-partner/command/updatePartnerBankAccount.ts +1 -1
  134. package/src/modules/business-partner/command/updatePartnerIdentification.generated.ts +1 -1
  135. package/src/modules/business-partner/command/updatePartnerIdentification.test.ts +1 -1
  136. package/src/modules/business-partner/command/updatePartnerIdentification.ts +1 -1
  137. package/src/modules/business-partner/lib/errors.generated.ts +1 -1
  138. package/src/modules/business-partner/lib/permissions.generated.ts +1 -1
  139. package/src/modules/business-partner/lib/types.ts +6 -1
  140. package/src/modules/business-partner/module.ts +1 -1
  141. package/src/modules/business-partner/permissions.ts +1 -1
  142. package/src/modules/business-partner/query/getContactPerson.generated.ts +1 -1
  143. package/src/modules/business-partner/query/getContactPerson.ts +1 -1
  144. package/src/modules/business-partner/query/getDefaultPartnerAddress.generated.ts +1 -1
  145. package/src/modules/business-partner/query/getDefaultPartnerAddress.ts +1 -1
  146. package/src/modules/business-partner/query/getDefaultPartnerBankAccount.generated.ts +1 -1
  147. package/src/modules/business-partner/query/getDefaultPartnerBankAccount.ts +1 -1
  148. package/src/modules/business-partner/query/getPartner.generated.ts +1 -1
  149. package/src/modules/business-partner/query/getPartner.ts +1 -1
  150. package/src/modules/business-partner/query/getPartnerAddress.generated.ts +1 -1
  151. package/src/modules/business-partner/query/getPartnerAddress.ts +1 -1
  152. package/src/modules/business-partner/query/getPartnerBankAccount.generated.ts +1 -1
  153. package/src/modules/business-partner/query/getPartnerBankAccount.ts +1 -1
  154. package/src/modules/business-partner/query/getPartnerIdentification.generated.ts +1 -1
  155. package/src/modules/business-partner/query/getPartnerIdentification.ts +1 -1
  156. package/src/modules/business-partner/query/getPartnerRole.generated.ts +1 -1
  157. package/src/modules/business-partner/query/getPartnerRole.ts +1 -1
  158. package/src/modules/business-partner/query/getPrimaryContactPerson.generated.ts +1 -1
  159. package/src/modules/business-partner/query/getPrimaryContactPerson.ts +1 -1
  160. package/src/modules/business-partner/query/listContactPersonsByPartner.generated.ts +1 -1
  161. package/src/modules/business-partner/query/listContactPersonsByPartner.ts +2 -2
  162. package/src/modules/business-partner/query/listPartnerAddressesByPartner.generated.ts +1 -1
  163. package/src/modules/business-partner/query/listPartnerAddressesByPartner.ts +3 -3
  164. package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.generated.ts +1 -1
  165. package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.ts +2 -2
  166. package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.generated.ts +1 -1
  167. package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.ts +3 -3
  168. package/src/modules/business-partner/query/listPartnersByRole.generated.ts +1 -1
  169. package/src/modules/business-partner/query/listPartnersByRole.ts +4 -4
  170. package/src/modules/coa-management/command/activateAccount.generated.ts +1 -1
  171. package/src/modules/coa-management/command/activateAccount.test.ts +1 -1
  172. package/src/modules/coa-management/command/activateAccount.ts +1 -1
  173. package/src/modules/coa-management/command/activateChartOfAccounts.generated.ts +1 -1
  174. package/src/modules/coa-management/command/activateChartOfAccounts.test.ts +1 -1
  175. package/src/modules/coa-management/command/activateChartOfAccounts.ts +1 -1
  176. package/src/modules/coa-management/command/createAccount.generated.ts +1 -1
  177. package/src/modules/coa-management/command/createAccount.test.ts +1 -1
  178. package/src/modules/coa-management/command/createAccount.ts +1 -1
  179. package/src/modules/coa-management/command/createAccountGroup.generated.ts +1 -1
  180. package/src/modules/coa-management/command/createAccountGroup.test.ts +1 -1
  181. package/src/modules/coa-management/command/createAccountGroup.ts +1 -1
  182. package/src/modules/coa-management/command/createChartOfAccounts.generated.ts +1 -1
  183. package/src/modules/coa-management/command/createChartOfAccounts.test.ts +1 -1
  184. package/src/modules/coa-management/command/createChartOfAccounts.ts +1 -1
  185. package/src/modules/coa-management/command/deactivateAccount.generated.ts +1 -1
  186. package/src/modules/coa-management/command/deactivateAccount.test.ts +1 -1
  187. package/src/modules/coa-management/command/deactivateAccount.ts +1 -1
  188. package/src/modules/coa-management/command/deactivateChartOfAccounts.generated.ts +1 -1
  189. package/src/modules/coa-management/command/deactivateChartOfAccounts.test.ts +1 -1
  190. package/src/modules/coa-management/command/deactivateChartOfAccounts.ts +1 -1
  191. package/src/modules/coa-management/command/deleteAccount.generated.ts +1 -1
  192. package/src/modules/coa-management/command/deleteAccount.test.ts +1 -1
  193. package/src/modules/coa-management/command/deleteAccount.ts +1 -1
  194. package/src/modules/coa-management/command/deleteAccountGroup.generated.ts +1 -1
  195. package/src/modules/coa-management/command/deleteAccountGroup.test.ts +1 -1
  196. package/src/modules/coa-management/command/deleteAccountGroup.ts +1 -1
  197. package/src/modules/coa-management/command/deleteChartOfAccounts.generated.ts +1 -1
  198. package/src/modules/coa-management/command/deleteChartOfAccounts.test.ts +1 -1
  199. package/src/modules/coa-management/command/deleteChartOfAccounts.ts +1 -1
  200. package/src/modules/coa-management/command/moveAccountGroup.generated.ts +1 -1
  201. package/src/modules/coa-management/command/moveAccountGroup.test.ts +1 -1
  202. package/src/modules/coa-management/command/moveAccountGroup.ts +1 -1
  203. package/src/modules/coa-management/command/reactivateAccount.generated.ts +1 -1
  204. package/src/modules/coa-management/command/reactivateAccount.test.ts +1 -1
  205. package/src/modules/coa-management/command/reactivateAccount.ts +1 -1
  206. package/src/modules/coa-management/command/updateAccount.generated.ts +1 -1
  207. package/src/modules/coa-management/command/updateAccount.test.ts +1 -1
  208. package/src/modules/coa-management/command/updateAccount.ts +1 -1
  209. package/src/modules/coa-management/command/updateAccountGroup.generated.ts +1 -1
  210. package/src/modules/coa-management/command/updateAccountGroup.test.ts +1 -1
  211. package/src/modules/coa-management/command/updateAccountGroup.ts +1 -1
  212. package/src/modules/coa-management/command/updateChartOfAccounts.generated.ts +1 -1
  213. package/src/modules/coa-management/command/updateChartOfAccounts.test.ts +1 -1
  214. package/src/modules/coa-management/command/updateChartOfAccounts.ts +1 -1
  215. package/src/modules/coa-management/lib/errors.generated.ts +1 -1
  216. package/src/modules/coa-management/lib/permissions.generated.ts +1 -1
  217. package/src/modules/coa-management/lib/types.ts +6 -1
  218. package/src/modules/coa-management/module.ts +1 -1
  219. package/src/modules/coa-management/permissions.ts +1 -1
  220. package/src/modules/coa-management/query/detectCircularReference.generated.ts +1 -1
  221. package/src/modules/coa-management/query/detectCircularReference.ts +1 -1
  222. package/src/modules/coa-management/query/getAccount.generated.ts +1 -1
  223. package/src/modules/coa-management/query/getAccount.ts +1 -1
  224. package/src/modules/coa-management/query/getAccountGroup.generated.ts +1 -1
  225. package/src/modules/coa-management/query/getAccountGroup.ts +1 -1
  226. package/src/modules/coa-management/query/getChartOfAccounts.generated.ts +1 -1
  227. package/src/modules/coa-management/query/getChartOfAccounts.ts +1 -1
  228. package/src/modules/coa-management/query/listAccountGroups.generated.ts +1 -1
  229. package/src/modules/coa-management/query/listAccountGroups.ts +2 -2
  230. package/src/modules/coa-management/query/listAccounts.generated.ts +1 -1
  231. package/src/modules/coa-management/query/listAccounts.ts +3 -3
  232. package/src/modules/coa-management/query/listUnassignedAccounts.generated.ts +1 -1
  233. package/src/modules/coa-management/query/listUnassignedAccounts.ts +2 -2
  234. package/src/modules/item-management/command/activateItem.generated.ts +1 -1
  235. package/src/modules/item-management/command/activateItem.ts +1 -1
  236. package/src/modules/item-management/command/assignItemToTaxonomy.generated.ts +1 -1
  237. package/src/modules/item-management/command/assignItemToTaxonomy.ts +1 -1
  238. package/src/modules/item-management/command/createItem.generated.ts +1 -1
  239. package/src/modules/item-management/command/createItem.test.ts +1 -1
  240. package/src/modules/item-management/command/createItem.ts +1 -1
  241. package/src/modules/item-management/command/createTaxonomyNode.generated.ts +1 -1
  242. package/src/modules/item-management/command/createTaxonomyNode.test.ts +1 -1
  243. package/src/modules/item-management/command/createTaxonomyNode.ts +1 -1
  244. package/src/modules/item-management/command/deactivateItem.generated.ts +1 -1
  245. package/src/modules/item-management/command/deactivateItem.ts +1 -1
  246. package/src/modules/item-management/command/deleteItem.generated.ts +1 -1
  247. package/src/modules/item-management/command/deleteItem.ts +1 -1
  248. package/src/modules/item-management/command/deleteTaxonomyNode.generated.ts +1 -1
  249. package/src/modules/item-management/command/deleteTaxonomyNode.ts +1 -1
  250. package/src/modules/item-management/command/moveTaxonomyNode.generated.ts +1 -1
  251. package/src/modules/item-management/command/moveTaxonomyNode.test.ts +1 -1
  252. package/src/modules/item-management/command/moveTaxonomyNode.ts +1 -1
  253. package/src/modules/item-management/command/reactivateItem.generated.ts +1 -1
  254. package/src/modules/item-management/command/reactivateItem.ts +1 -1
  255. package/src/modules/item-management/command/removeItemFromTaxonomy.generated.ts +1 -1
  256. package/src/modules/item-management/command/removeItemFromTaxonomy.ts +1 -1
  257. package/src/modules/item-management/command/updateItem.generated.ts +1 -1
  258. package/src/modules/item-management/command/updateItem.test.ts +1 -1
  259. package/src/modules/item-management/command/updateItem.ts +1 -1
  260. package/src/modules/item-management/command/updateTaxonomyNode.generated.ts +1 -1
  261. package/src/modules/item-management/command/updateTaxonomyNode.ts +1 -1
  262. package/src/modules/item-management/lib/errors.generated.ts +1 -1
  263. package/src/modules/item-management/lib/permissions.generated.ts +1 -1
  264. package/src/modules/item-management/lib/types.ts +6 -1
  265. package/src/modules/item-management/module.ts +1 -1
  266. package/src/modules/item-management/query/calculateNodeDepth.generated.ts +1 -1
  267. package/src/modules/item-management/query/calculateNodeDepth.ts +1 -1
  268. package/src/modules/item-management/query/calculateSubtreeDepth.generated.ts +1 -1
  269. package/src/modules/item-management/query/calculateSubtreeDepth.ts +1 -1
  270. package/src/modules/item-management/query/detectCircularReference.generated.ts +1 -1
  271. package/src/modules/item-management/query/detectCircularReference.ts +1 -1
  272. package/src/modules/item-management/query/getItem.generated.ts +1 -1
  273. package/src/modules/item-management/query/getItem.ts +1 -1
  274. package/src/modules/item-management/query/getItemTaxonomyAssignment.generated.ts +1 -1
  275. package/src/modules/item-management/query/getItemTaxonomyAssignment.ts +1 -1
  276. package/src/modules/item-management/query/getTaxonomyNode.generated.ts +1 -1
  277. package/src/modules/item-management/query/getTaxonomyNode.ts +1 -1
  278. package/src/modules/item-management/query/getTaxonomyNodeAssignments.generated.ts +1 -1
  279. package/src/modules/item-management/query/getTaxonomyNodeAssignments.ts +1 -1
  280. package/src/modules/item-management/query/getTaxonomyNodeChildren.generated.ts +1 -1
  281. package/src/modules/item-management/query/getTaxonomyNodeChildren.ts +1 -1
  282. package/src/modules/organization/command/activateCompany.generated.ts +1 -1
  283. package/src/modules/organization/command/activateCompany.test.ts +1 -1
  284. package/src/modules/organization/command/activateCompany.ts +1 -1
  285. package/src/modules/organization/command/createCompany.generated.ts +1 -1
  286. package/src/modules/organization/command/createCompany.test.ts +1 -1
  287. package/src/modules/organization/command/createCompany.ts +1 -1
  288. package/src/modules/organization/command/createDepartment.generated.ts +1 -1
  289. package/src/modules/organization/command/createDepartment.ts +1 -1
  290. package/src/modules/organization/command/createSite.generated.ts +1 -1
  291. package/src/modules/organization/command/createSite.ts +1 -1
  292. package/src/modules/organization/command/deactivateCompany.generated.ts +1 -1
  293. package/src/modules/organization/command/deactivateCompany.ts +1 -1
  294. package/src/modules/organization/command/deactivateDepartment.generated.ts +1 -1
  295. package/src/modules/organization/command/deactivateDepartment.ts +1 -1
  296. package/src/modules/organization/command/deactivateSite.generated.ts +1 -1
  297. package/src/modules/organization/command/deactivateSite.ts +1 -1
  298. package/src/modules/organization/command/deleteCompany.generated.ts +1 -1
  299. package/src/modules/organization/command/deleteCompany.ts +1 -1
  300. package/src/modules/organization/command/reactivateCompany.generated.ts +1 -1
  301. package/src/modules/organization/command/reactivateCompany.ts +1 -1
  302. package/src/modules/organization/command/reactivateDepartment.generated.ts +1 -1
  303. package/src/modules/organization/command/reactivateDepartment.ts +1 -1
  304. package/src/modules/organization/command/reactivateSite.generated.ts +1 -1
  305. package/src/modules/organization/command/reactivateSite.ts +1 -1
  306. package/src/modules/organization/command/updateCompany.generated.ts +1 -1
  307. package/src/modules/organization/command/updateCompany.test.ts +1 -1
  308. package/src/modules/organization/command/updateCompany.ts +1 -1
  309. package/src/modules/organization/command/updateDepartment.generated.ts +1 -1
  310. package/src/modules/organization/command/updateDepartment.ts +1 -1
  311. package/src/modules/organization/command/updateSite.generated.ts +1 -1
  312. package/src/modules/organization/command/updateSite.ts +1 -1
  313. package/src/modules/organization/lib/errors.generated.ts +1 -1
  314. package/src/modules/organization/lib/permissions.generated.ts +1 -1
  315. package/src/modules/organization/lib/types.ts +6 -1
  316. package/src/modules/organization/module.ts +1 -1
  317. package/src/modules/organization/permissions.ts +1 -1
  318. package/src/modules/organization/query/detectDepartmentCircularReference.generated.ts +1 -1
  319. package/src/modules/organization/query/detectDepartmentCircularReference.ts +1 -1
  320. package/src/modules/organization/query/getCompany.generated.ts +1 -1
  321. package/src/modules/organization/query/getCompany.ts +1 -1
  322. package/src/modules/organization/query/getDepartment.generated.ts +1 -1
  323. package/src/modules/organization/query/getDepartment.ts +1 -1
  324. package/src/modules/organization/query/getDepartmentChildren.generated.ts +1 -1
  325. package/src/modules/organization/query/getDepartmentChildren.ts +1 -1
  326. package/src/modules/organization/query/getSite.generated.ts +1 -1
  327. package/src/modules/organization/query/getSite.ts +1 -1
  328. package/src/modules/organization/query/listDepartmentsByCompany.generated.ts +1 -1
  329. package/src/modules/organization/query/listDepartmentsByCompany.ts +2 -2
  330. package/src/modules/organization/query/listSitesByCompany.generated.ts +1 -1
  331. package/src/modules/organization/query/listSitesByCompany.ts +2 -2
  332. package/src/modules/primitives/command/activateCategory.generated.ts +1 -1
  333. package/src/modules/primitives/command/activateCategory.ts +1 -1
  334. package/src/modules/primitives/command/activateCurrency.generated.ts +1 -1
  335. package/src/modules/primitives/command/activateCurrency.ts +1 -1
  336. package/src/modules/primitives/command/activateUnit.generated.ts +1 -1
  337. package/src/modules/primitives/command/activateUnit.ts +1 -1
  338. package/src/modules/primitives/command/createCategory.generated.ts +1 -1
  339. package/src/modules/primitives/command/createCategory.ts +1 -1
  340. package/src/modules/primitives/command/createCurrency.generated.ts +1 -1
  341. package/src/modules/primitives/command/createCurrency.ts +1 -1
  342. package/src/modules/primitives/command/createExchangeRate.generated.ts +1 -1
  343. package/src/modules/primitives/command/createExchangeRate.ts +1 -1
  344. package/src/modules/primitives/command/createUnit.generated.ts +1 -1
  345. package/src/modules/primitives/command/createUnit.ts +1 -1
  346. package/src/modules/primitives/command/deactivateCategory.generated.ts +1 -1
  347. package/src/modules/primitives/command/deactivateCategory.ts +1 -1
  348. package/src/modules/primitives/command/deactivateCurrency.generated.ts +1 -1
  349. package/src/modules/primitives/command/deactivateCurrency.ts +1 -1
  350. package/src/modules/primitives/command/deactivateUnit.generated.ts +1 -1
  351. package/src/modules/primitives/command/deactivateUnit.ts +1 -1
  352. package/src/modules/primitives/command/setBaseCurrency.generated.ts +1 -1
  353. package/src/modules/primitives/command/setBaseCurrency.ts +1 -1
  354. package/src/modules/primitives/command/setReferenceUnit.generated.ts +1 -1
  355. package/src/modules/primitives/command/setReferenceUnit.ts +1 -1
  356. package/src/modules/primitives/lib/errors.generated.ts +1 -1
  357. package/src/modules/primitives/lib/permissions.generated.ts +1 -1
  358. package/src/modules/primitives/lib/types.ts +6 -1
  359. package/src/modules/primitives/module.ts +1 -1
  360. package/src/modules/primitives/query/convertAmount.generated.ts +1 -1
  361. package/src/modules/primitives/query/convertAmount.test.ts +1 -1
  362. package/src/modules/primitives/query/convertAmount.ts +1 -1
  363. package/src/modules/primitives/query/convertQuantity.generated.ts +1 -1
  364. package/src/modules/primitives/query/convertQuantity.test.ts +1 -1
  365. package/src/modules/primitives/query/convertQuantity.ts +1 -1
  366. package/src/modules/primitives/query/getBaseCurrency.generated.ts +1 -1
  367. package/src/modules/primitives/query/getBaseCurrency.test.ts +1 -1
  368. package/src/modules/primitives/query/getBaseCurrency.ts +1 -1
  369. package/src/modules/primitives/query/getCurrency.generated.ts +1 -1
  370. package/src/modules/primitives/query/getCurrency.ts +1 -1
  371. package/src/modules/primitives/query/getUnit.generated.ts +1 -1
  372. package/src/modules/primitives/query/getUnit.ts +1 -1
  373. package/src/modules/primitives/query/getUoMCategory.generated.ts +1 -1
  374. package/src/modules/primitives/query/getUoMCategory.ts +1 -1
  375. package/src/modules/primitives/query/listUnitsByCategory.generated.ts +1 -1
  376. package/src/modules/primitives/query/listUnitsByCategory.ts +2 -2
  377. package/src/modules/product-management/command/activateProduct.generated.ts +1 -1
  378. package/src/modules/product-management/command/activateProduct.ts +1 -1
  379. package/src/modules/product-management/command/assignProductToCategory.generated.ts +1 -1
  380. package/src/modules/product-management/command/assignProductToCategory.ts +1 -1
  381. package/src/modules/product-management/command/createProduct.generated.ts +1 -1
  382. package/src/modules/product-management/command/createProduct.test.ts +1 -1
  383. package/src/modules/product-management/command/createProduct.ts +1 -1
  384. package/src/modules/product-management/command/createProductAttribute.generated.ts +1 -1
  385. package/src/modules/product-management/command/createProductAttribute.ts +1 -1
  386. package/src/modules/product-management/command/createProductAttributeValue.generated.ts +1 -1
  387. package/src/modules/product-management/command/createProductAttributeValue.ts +1 -1
  388. package/src/modules/product-management/command/createProductCategory.generated.ts +1 -1
  389. package/src/modules/product-management/command/createProductCategory.test.ts +1 -1
  390. package/src/modules/product-management/command/createProductCategory.ts +1 -1
  391. package/src/modules/product-management/command/deactivateProduct.generated.ts +1 -1
  392. package/src/modules/product-management/command/deactivateProduct.ts +1 -1
  393. package/src/modules/product-management/command/deleteProduct.generated.ts +1 -1
  394. package/src/modules/product-management/command/deleteProduct.ts +1 -1
  395. package/src/modules/product-management/command/deleteProductAttribute.generated.ts +1 -1
  396. package/src/modules/product-management/command/deleteProductAttribute.ts +1 -1
  397. package/src/modules/product-management/command/deleteProductAttributeValue.generated.ts +1 -1
  398. package/src/modules/product-management/command/deleteProductAttributeValue.ts +1 -1
  399. package/src/modules/product-management/command/deleteProductCategory.generated.ts +1 -1
  400. package/src/modules/product-management/command/deleteProductCategory.ts +1 -1
  401. package/src/modules/product-management/command/generateVariants.generated.ts +1 -1
  402. package/src/modules/product-management/command/generateVariants.test.ts +1 -1
  403. package/src/modules/product-management/command/generateVariants.ts +1 -1
  404. package/src/modules/product-management/command/moveProductCategory.generated.ts +1 -1
  405. package/src/modules/product-management/command/moveProductCategory.test.ts +1 -1
  406. package/src/modules/product-management/command/moveProductCategory.ts +1 -1
  407. package/src/modules/product-management/command/reactivateProduct.generated.ts +1 -1
  408. package/src/modules/product-management/command/reactivateProduct.ts +1 -1
  409. package/src/modules/product-management/command/removeProductFromCategory.generated.ts +1 -1
  410. package/src/modules/product-management/command/removeProductFromCategory.ts +1 -1
  411. package/src/modules/product-management/command/setProductAttributeAssignment.generated.ts +1 -1
  412. package/src/modules/product-management/command/setProductAttributeAssignment.ts +1 -1
  413. package/src/modules/product-management/command/updateProduct.generated.ts +1 -1
  414. package/src/modules/product-management/command/updateProduct.test.ts +1 -1
  415. package/src/modules/product-management/command/updateProduct.ts +1 -1
  416. package/src/modules/product-management/command/updateProductAttribute.generated.ts +1 -1
  417. package/src/modules/product-management/command/updateProductAttribute.ts +1 -1
  418. package/src/modules/product-management/command/updateProductAttributeValue.generated.ts +1 -1
  419. package/src/modules/product-management/command/updateProductAttributeValue.ts +1 -1
  420. package/src/modules/product-management/command/updateProductCategory.generated.ts +1 -1
  421. package/src/modules/product-management/command/updateProductCategory.ts +1 -1
  422. package/src/modules/product-management/lib/errors.generated.ts +1 -1
  423. package/src/modules/product-management/lib/permissions.generated.ts +1 -1
  424. package/src/modules/product-management/lib/types.ts +6 -1
  425. package/src/modules/product-management/module.ts +1 -1
  426. package/src/modules/product-management/query/calculateCategoryDepth.generated.ts +1 -1
  427. package/src/modules/product-management/query/calculateCategoryDepth.ts +1 -1
  428. package/src/modules/product-management/query/detectCategoryCircularReference.generated.ts +1 -1
  429. package/src/modules/product-management/query/detectCategoryCircularReference.ts +1 -1
  430. package/src/modules/product-management/query/getProduct.generated.ts +1 -1
  431. package/src/modules/product-management/query/getProduct.ts +1 -1
  432. package/src/modules/product-management/query/getProductAttribute.generated.ts +1 -1
  433. package/src/modules/product-management/query/getProductAttribute.ts +1 -1
  434. package/src/modules/product-management/query/getProductAttributeAssignment.generated.ts +1 -1
  435. package/src/modules/product-management/query/getProductAttributeAssignment.ts +1 -1
  436. package/src/modules/product-management/query/getProductAttributeValue.generated.ts +1 -1
  437. package/src/modules/product-management/query/getProductAttributeValue.ts +1 -1
  438. package/src/modules/product-management/query/getProductCategory.generated.ts +1 -1
  439. package/src/modules/product-management/query/getProductCategory.ts +1 -1
  440. package/src/modules/product-management/query/getProductCategoryAssignment.generated.ts +1 -1
  441. package/src/modules/product-management/query/getProductCategoryAssignment.ts +1 -1
  442. package/src/modules/product-management/query/getProductVariant.generated.ts +1 -1
  443. package/src/modules/product-management/query/getProductVariant.ts +1 -1
  444. package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.generated.ts +1 -1
  445. package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.ts +1 -1
  446. package/src/modules/product-management/query/listCategoryAssignmentsByProduct.generated.ts +1 -1
  447. package/src/modules/product-management/query/listCategoryAssignmentsByProduct.ts +1 -1
  448. package/src/modules/product-management/query/listProductAttributeAssignments.generated.ts +1 -1
  449. package/src/modules/product-management/query/listProductAttributeAssignments.ts +1 -1
  450. package/src/modules/product-management/query/listProductAttributeValues.generated.ts +1 -1
  451. package/src/modules/product-management/query/listProductAttributeValues.ts +1 -1
  452. package/src/modules/product-management/query/listProductCategoryAssignments.generated.ts +1 -1
  453. package/src/modules/product-management/query/listProductCategoryAssignments.ts +1 -1
  454. package/src/modules/product-management/query/listProductCategoryChildren.generated.ts +1 -1
  455. package/src/modules/product-management/query/listProductCategoryChildren.ts +1 -1
  456. package/src/modules/product-management/query/listProductVariants.generated.ts +1 -1
  457. package/src/modules/product-management/query/listProductVariants.ts +1 -1
  458. package/src/modules/user-management/command/activateUser.generated.ts +1 -1
  459. package/src/modules/user-management/command/activateUser.ts +1 -1
  460. package/src/modules/user-management/command/assignPermissionToRole.generated.ts +1 -1
  461. package/src/modules/user-management/command/assignPermissionToRole.ts +1 -1
  462. package/src/modules/user-management/command/assignRoleToUser.generated.ts +1 -1
  463. package/src/modules/user-management/command/assignRoleToUser.ts +1 -1
  464. package/src/modules/user-management/command/createPermission.generated.ts +1 -1
  465. package/src/modules/user-management/command/createPermission.ts +1 -1
  466. package/src/modules/user-management/command/createRole.generated.ts +1 -1
  467. package/src/modules/user-management/command/createRole.ts +1 -1
  468. package/src/modules/user-management/command/createUser.generated.ts +1 -1
  469. package/src/modules/user-management/command/createUser.ts +1 -1
  470. package/src/modules/user-management/command/deactivateUser.generated.ts +1 -1
  471. package/src/modules/user-management/command/deactivateUser.ts +1 -1
  472. package/src/modules/user-management/command/reactivateUser.generated.ts +1 -1
  473. package/src/modules/user-management/command/reactivateUser.ts +1 -1
  474. package/src/modules/user-management/command/revokePermissionFromRole.generated.ts +1 -1
  475. package/src/modules/user-management/command/revokePermissionFromRole.ts +1 -1
  476. package/src/modules/user-management/command/revokeRoleFromUser.generated.ts +1 -1
  477. package/src/modules/user-management/command/revokeRoleFromUser.ts +1 -1
  478. package/src/modules/user-management/lib/errors.generated.ts +1 -1
  479. package/src/modules/user-management/lib/permissions.generated.ts +1 -1
  480. package/src/modules/user-management/lib/types.ts +6 -1
  481. package/src/modules/user-management/module.ts +1 -1
  482. package/templates/scaffold/module/lib/types.ts +6 -1
  483. package/templates/scaffold/module/permissions.ts +1 -1
  484. package/src/modules/audit/lib/errors.ts +0 -0
  485. package/src/modules/business-partner/lib/errors.ts +0 -2
  486. package/src/modules/coa-management/lib/errors.ts +0 -0
  487. package/src/modules/organization/lib/errors.ts +0 -1
  488. package/templates/scaffold/module/lib/errors.ts +0 -1
@@ -31,26 +31,29 @@ Verify at least `RESOLVER_DOCS` or `SCREEN_DOCS` is non-empty. If no docs exist,
31
31
 
32
32
  ## Step 2: Dispatch Agents (parallelize if possible)
33
33
 
34
- Launch 4 Agent tool calls in parallel — one per parity check.
34
+ Dispatch agents in parallel — one per item in each group. All groups are dispatched simultaneously.
35
35
  Each agent receives: APP_NAME, relevant doc/code file paths.
36
36
  Each agent returns: structured JSON per [references/impl-parity-report-format.md](references/impl-parity-report-format.md).
37
37
  If a doc or code directory is empty, the agent reports "no files found" and skips.
38
+ All review agents are read-only — no shared-file conflict risk.
38
39
 
39
- | Agent | Prompt Template | Inputs |
40
- | ----- | -------------------------------------------------------------------------------- | --------------------------------------------------- |
41
- | 1 | [references/resolver-doc-code-parity.md](references/resolver-doc-code-parity.md) | RESOLVER_DOCS, BACKEND_RESOLVERS, BACKEND_EXECUTORS |
42
- | 2 | [references/screen-doc-code-parity.md](references/screen-doc-code-parity.md) | SCREEN_DOCS, FRONTEND_PAGES |
43
- | 3 | [references/module-wiring-parity.md](references/module-wiring-parity.md) | RESOLVER_DOCS, BACKEND_MODULES, BACKEND_CONFIG |
44
- | 4 | (build verification inline, no template) | APP_ROOT |
40
+ | Group | Prompt Template | Per-item scope | Inputs per agent |
41
+ | ----- | -------------------------------------------------------------------------------- | ------------------ | ------------------------------------------------------------ |
42
+ | A | [references/resolver-doc-code-parity.md](references/resolver-doc-code-parity.md) | One per resolver | Single RESOLVER_DOC + matching BACKEND_RESOLVER + BACKEND_EXECUTOR |
43
+ | B | [references/screen-doc-code-parity.md](references/screen-doc-code-parity.md) | One per screen | Single SCREEN_DOC + matching FRONTEND_PAGE directory |
44
+ | C | [references/module-wiring-parity.md](references/module-wiring-parity.md) | One per resolver | Single RESOLVER_DOC + BACKEND_MODULES + BACKEND_CONFIG |
45
+ | D | Build verification (inline) | One global agent | All source paths |
45
46
 
46
- For agents 1-3:
47
+ With R resolvers and S screens, this produces R + S + R + 1 parallel agents.
48
+
49
+ For groups A-C:
47
50
 
48
51
  1. Read the prompt template file
49
52
  2. Replace `{{APP_NAME}}` with the resolved app name
50
- 3. Replace doc/code path placeholders with the actual file paths
51
- 4. Dispatch the agent with the filled prompt
53
+ 3. Replace doc/code path placeholders with the actual file paths for that single item
54
+ 4. Dispatch one agent per item with the filled prompt
52
55
 
53
- For agent 4 (build & sync verification):
56
+ For group D (build & sync verification):
54
57
 
55
58
  Run build checks and source-doc sync check inline:
56
59
 
@@ -60,7 +63,7 @@ cd <APP_ROOT>/frontend && pnpm lint && pnpm typecheck && pnpm build
60
63
  erp-kit app sync-check -p <APP_ROOT>/..
61
64
  ```
62
65
 
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.
66
+ Report pass/fail for each check. `sync-check` detects missing resolver implementations and orphaned docs, so groups A-C agents can skip file-existence checks and focus on content parity.
64
67
 
65
68
  ## Step 3: Aggregate Results
66
69
 
@@ -70,8 +73,9 @@ After ALL agents return:
70
73
  2. Merge all `gaps[]` arrays into a single list
71
74
  3. Merge all `inconsistencies[]` arrays into a single list
72
75
  4. Deduplicate: if two gaps share the same `source + target + check`, keep only one
73
- 5. Calculate totals across all summaries
74
- 6. Render the final report below
76
+ 5. Deduplicate findings: if agents from groups A and C report the same resolver issue, keep only one
77
+ 6. Calculate totals across all summaries
78
+ 7. Render the final report below
75
79
 
76
80
  ## Report Format
77
81
 
@@ -52,14 +52,22 @@ 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. **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
55
+
56
+ ## Step 4: Severity Validation
57
+
58
+ Subagents tend to over-classify. Before rendering the report, re-evaluate every non-pass finding:
59
+
60
+ - **"Is this even this module's responsibility?"** If the concern belongs to another module or is out of scope, drop it from the report
61
+ - **"Does this block planning?"** `critical`
62
+ - **"Will this force model/command/query rework?"** → `major`
63
+ - All no → `nit`, regardless of subagent label
64
+
65
+ ## Step 5: Determine Verdict
66
+
67
+ - **APPROVED**: zero `critical` and zero `major`
68
+ - **NEEDS CHANGES**: one or more `critical` or `major`
69
+
70
+ ## Step 6: Render Report
63
71
 
64
72
  ## Report Format
65
73
 
@@ -57,18 +57,25 @@ 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. **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
68
-
69
- ## Report Format
70
-
71
- Render the aggregated results as markdown:
60
+
61
+ ## Step 4: Severity Validation
62
+
63
+ Subagents tend to over-classify. Before rendering the report, re-evaluate every non-pass finding:
64
+
65
+ - **"Is this a real gap or a design choice?"** — If the feature intentionally omits a command/query/model (e.g., handled by another module, deferred to a later phase, or covered by a generic mechanism), drop it from the report
66
+ - **"Does the feature doc explicitly require this?"** Only flag gaps for capabilities the feature doc actually specifies. Do not invent requirements the feature does not mention
67
+ - **"Does this block implementation?"** → `critical`
68
+ - **"Will this cause rework during implementation?"** → `major`
69
+ - All no → `nit`, regardless of subagent label
70
+
71
+ ## Step 5: Determine Verdict
72
+
73
+ - **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
74
+ - **NEEDS CHANGES**: one or more `critical` or `major` findings
75
+
76
+ ## Step 6: Render Report
77
+
78
+ Render the aggregated results as markdown (after severity validation):
72
79
 
73
80
  ### Feature Parity Review Report
74
81
 
@@ -177,7 +177,7 @@ const units = await db
177
177
 
178
178
  ## Implementation Considerations
179
179
 
180
- - **Error handling**: Use `ok()` / `err()` from `shared` — do not throw
180
+ - **Error handling**: Use `ok()` / `err()` from `@tailor-platform/erp-kit/module` — do not throw
181
181
  - **Validation**: Check referenced entities exist before operating, return `err()` if not found
182
182
 
183
183
  ## Conventions
@@ -8,8 +8,8 @@ Run `erp-kit module generate code -p <path>` to generate query shells from `docs
8
8
 
9
9
  ```typescript
10
10
  // @generated — do not edit
11
- import { defineQuery } from "../../../shared";
12
11
  import { run } from "./getItem";
12
+ import { defineQuery } from "@tailor-platform/erp-kit/module";
13
13
 
14
14
  export const getItem = defineQuery(run);
15
15
  ```
@@ -17,9 +17,8 @@ export const getItem = defineQuery(run);
17
17
  ### Hand-written implementation
18
18
 
19
19
  ```typescript
20
- import type { ReadonlyDB } from "../../../shared";
21
- import { ok } from "../../../shared";
22
20
  import type { DB } from "../generated/kysely-tailordb";
21
+ import { ok, type ReadonlyDB } from "@tailor-platform/erp-kit/module";
23
22
 
24
23
  export type GetItemInput = { id: string } | { sku: string };
25
24
 
@@ -45,7 +44,7 @@ For queries beyond simple lookups (joins, aggregations, complex filters), write
45
44
 
46
45
  - `defineQuery` wraps all queries via generated shells
47
46
  - `ReadonlyDB<DB>` ensures read-only access
48
- - All queries return Result types using `ok()` / `err()` from `shared` — consistent with commands
47
+ - All queries return Result types using `ok()` / `err()` from `@tailor-platform/erp-kit/module` — consistent with commands
49
48
  - Get queries return `ok({ entity: T | null })` using `executeTakeFirst()`
50
49
  - List queries return `ok(PaginatedResult<T>)` using pagination utilities — see [Paginated List Queries](#paginated-list-queries)
51
50
  - Input types: `type` for union inputs (get), `interface` for single-shape inputs (list)
@@ -81,14 +80,14 @@ interface PaginatedResult<T> {
81
80
  3. Use `buildPaginatedResult(rows, limit)` to build the response — the limit+1 strategy determines `hasNextPage` without a separate count query
82
81
 
83
82
  ```typescript
83
+ import type { DB } from "../generated/kysely-tailordb";
84
84
  import {
85
85
  ok,
86
86
  type ReadonlyDB,
87
87
  type PaginationInput,
88
88
  buildPaginatedResult,
89
89
  DEFAULT_PAGE_SIZE,
90
- } from "../../../shared";
91
- import type { DB } from "../generated/kysely-tailordb";
90
+ } from "@tailor-platform/erp-kit/module";
92
91
 
93
92
  // Define sortable fields for this query
94
93
  type UnitOrderByField = "name" | "symbol" | "createdAt";
@@ -33,7 +33,6 @@ describe("scaffoldModuleBoilerplate", () => {
33
33
  "index.ts",
34
34
  "permissions.ts",
35
35
  "tailor.config.ts",
36
- "lib/errors.ts",
37
36
  "lib/types.ts",
38
37
  "testing/fixtures.ts",
39
38
  ];
@@ -44,7 +44,9 @@ describe("generateErrors", () => {
44
44
  const result = generateErrors("item-management", docs);
45
45
 
46
46
  expect(result).toContain("// @generated — do not edit");
47
- expect(result).toContain('import { createDomainError } from "../../../shared";');
47
+ expect(result).toContain(
48
+ 'import { createDomainError } from "@tailor-platform/erp-kit/module";',
49
+ );
48
50
  expect(result).toContain("export const DuplicateSkuError = createDomainError(");
49
51
  expect(result).toContain('"DuplicateSkuError", "ITEM_MANAGEMENT_DUPLICATE_SKU"');
50
52
  expect(result).toContain("export const UnitNotFoundError = createDomainError(");
@@ -92,7 +94,9 @@ describe("generatePermissions", () => {
92
94
  const result = generatePermissions("item-management", commandNames);
93
95
 
94
96
  expect(result).toContain("// @generated — do not edit");
95
- expect(result).toContain('import { definePermissions } from "../../../shared";');
97
+ expect(result).toContain(
98
+ 'import { definePermissions } from "@tailor-platform/erp-kit/module";',
99
+ );
96
100
  expect(result).toContain('"item-management"');
97
101
  expect(result).toContain('"createItem"');
98
102
  expect(result).toContain('"updateItem"');
@@ -128,7 +132,7 @@ describe("generateCommandShell", () => {
128
132
  const result = generateCommandShell(doc);
129
133
 
130
134
  expect(result).toContain("// @generated — do not edit");
131
- expect(result).toContain('import { defineCommand } from "../../../shared";');
135
+ expect(result).toContain('import { defineCommand } from "@tailor-platform/erp-kit/module";');
132
136
  expect(result).toContain('import { permissions } from "../lib/permissions.generated";');
133
137
  expect(result).toContain('import { run } from "./activateItem";');
134
138
  expect(result).toContain(
@@ -145,7 +149,7 @@ describe("generateCommandShell", () => {
145
149
 
146
150
  const result = generateCommandShell(doc);
147
151
 
148
- expect(result).toContain('import { defineCommand } from "../../../shared";');
152
+ expect(result).toContain('import { defineCommand } from "@tailor-platform/erp-kit/module";');
149
153
  expect(result).toContain('import { run } from "./createItem";');
150
154
  expect(result).toContain(
151
155
  "export const createItem = defineCommand(permissions.createItem, run);",
@@ -164,7 +168,7 @@ describe("generateQueryShell", () => {
164
168
  const result = generateQueryShell(doc);
165
169
 
166
170
  expect(result).toContain("// @generated — do not edit");
167
- expect(result).toContain('import { defineQuery } from "../../../shared";');
171
+ expect(result).toContain('import { defineQuery } from "@tailor-platform/erp-kit/module";');
168
172
  expect(result).toContain('import { run } from "./getTaxonomyNode";');
169
173
  expect(result).toContain("export const getTaxonomyNode = defineQuery(run);");
170
174
  });
@@ -180,7 +184,7 @@ describe("generateQueryStub", () => {
180
184
 
181
185
  const result = generateQueryStub(doc);
182
186
 
183
- expect(result).toContain('import type { ReadonlyDB } from "../../../shared";');
187
+ expect(result).toContain('import type { ReadonlyDB } from "@tailor-platform/erp-kit/module";');
184
188
  expect(result).toContain('import type { DB } from "../generated/kysely-tailordb";');
185
189
  expect(result).toContain("export interface GetTaxonomyNodeInput {");
186
190
  expect(result).toContain(
@@ -28,7 +28,7 @@ export function generateErrors(moduleName: string, docs: ParsedCommandDoc[]): st
28
28
  if (lines.length === 0) return "";
29
29
 
30
30
  return `// @generated — do not edit
31
- import { createDomainError } from "../../../shared";
31
+ import { createDomainError } from "@tailor-platform/erp-kit/module";
32
32
 
33
33
  ${lines.join("\n")}`;
34
34
  }
@@ -3,7 +3,7 @@ export function generatePermissions(moduleName: string, commandNames: string[]):
3
3
  const entries = sorted.map((name) => ` "${name}",`).join("\n");
4
4
 
5
5
  return `// @generated — do not edit
6
- import { definePermissions } from "../../../shared";
6
+ import { definePermissions } from "@tailor-platform/erp-kit/module";
7
7
 
8
8
  export const { permissions, own, all } = definePermissions("${moduleName}", [
9
9
  ${entries}
@@ -3,9 +3,9 @@ import type { ParsedCommandDoc } from "./parse-command-doc";
3
3
  export function generateCommandShell(doc: ParsedCommandDoc): string {
4
4
  const lines: string[] = [
5
5
  `// @generated — do not edit`,
6
- `import { defineCommand } from "../../../shared";`,
7
6
  `import { permissions } from "../lib/permissions.generated";`,
8
7
  `import { run } from "./${doc.commandName}";`,
8
+ `import { defineCommand } from "@tailor-platform/erp-kit/module";`,
9
9
  ``,
10
10
  `export const ${doc.commandName} = defineCommand(permissions.${doc.commandName}, run);`,
11
11
  ``,
@@ -17,8 +17,8 @@ export function generateCommandShell(doc: ParsedCommandDoc): string {
17
17
  export function generateQueryShell(doc: ParsedCommandDoc): string {
18
18
  const lines: string[] = [
19
19
  `// @generated — do not edit`,
20
- `import { defineQuery } from "../../../shared";`,
21
20
  `import { run } from "./${doc.commandName}";`,
21
+ `import { defineQuery } from "@tailor-platform/erp-kit/module";`,
22
22
  ``,
23
23
  `export const ${doc.commandName} = defineQuery(run);`,
24
24
  ``,
@@ -6,8 +6,8 @@ const templates = {
6
6
  command: {
7
7
  render: (name: string) => {
8
8
  const inputType = `${toPascal(name)}Input`;
9
- return `import { ok, type CommandContext } from "../../../shared";
10
- import type { Transaction } from "../generated/kysely-tailordb";
9
+ return `import type { Transaction } from "../generated/kysely-tailordb";
10
+ import { ok, type CommandContext } from "@tailor-platform/erp-kit/module";
11
11
 
12
12
  export interface ${inputType} {
13
13
  // TODO: define input fields
@@ -25,9 +25,9 @@ export async function run(db: Transaction, input: ${inputType}, ctx: CommandCont
25
25
  const pascal = toPascal(name);
26
26
  return `import { describe, expect, it } from "vitest";
27
27
  import { createMockDb } from "../../../testing/index";
28
- import type { CommandContext } from "../../../shared";
29
28
  import type { Transaction } from "../generated/kysely-tailordb";
30
29
  import { run, ${pascal}Input } from "./${name}";
30
+ import type { CommandContext } from "@tailor-platform/erp-kit/module";
31
31
 
32
32
  describe("${name} - test scenario", () => {
33
33
  const ctx: CommandContext = {
@@ -47,8 +47,8 @@ describe("${name} - test scenario", () => {
47
47
  query: {
48
48
  render: (name: string) => {
49
49
  const inputType = `${toPascal(name)}Input`;
50
- return `import type { ReadonlyDB } from "../../../shared";
51
- import type { DB } from "../generated/kysely-tailordb";
50
+ return `import type { DB } from "../generated/kysely-tailordb";
51
+ import type { ReadonlyDB } from "@tailor-platform/erp-kit/module";
52
52
 
53
53
  export interface ${inputType} {
54
54
  // TODO: define input fields
package/src/module.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  // shared
2
2
  export { defineCommand, type Command } from "./shared/defineCommand";
3
+ export { ok, err, type Result, type ValueOf, type ErrorOf } from "./shared/result";
3
4
  export { defineQuery, type Query } from "./shared/defineQuery";
4
5
  export { definePermissions } from "./shared/definePermissions";
5
6
  export { requirePermission } from "./shared/requirePermission";
@@ -11,12 +12,14 @@ export type {
11
12
  PaginationInput,
12
13
  PaginatedResult,
13
14
  } from "./shared/types";
15
+ export { buildPaginatedResult, DEFAULT_PAGE_SIZE } from "./shared/pagination";
14
16
  export type {
15
17
  InferSchema,
16
18
  Selectable,
17
19
  Insertable,
18
20
  Updateable,
19
21
  FieldsToInsertable,
22
+ EmptyFields,
20
23
  } from "./shared/entityTypes";
21
24
 
22
25
  // primitives
@@ -1,6 +1,6 @@
1
1
  // @generated — do not edit
2
- import { defineCommand } from "../../../shared";
3
2
  import { permissions } from "../lib/permissions.generated";
4
3
  import { run } from "./activateAuditPolicy";
4
+ import { defineCommand } from "@tailor-platform/erp-kit/module";
5
5
 
6
6
  export const activateAuditPolicy = defineCommand(permissions.activateAuditPolicy, run);
@@ -1,6 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { createMockDb } from "../../../testing/index";
3
- import { type CommandContext, InsufficientPermissionError } from "../../../shared";
4
3
  import type { Transaction } from "../generated/kysely-tailordb";
5
4
  import {
6
5
  PolicyNotFoundError,
@@ -13,6 +12,7 @@ import {
13
12
  import { draftPolicy, activePolicy, inactivePolicy, companyBoundEntity } from "../testing/fixtures";
14
13
  import { run } from "./activateAuditPolicy";
15
14
  import { activateAuditPolicy } from "./activateAuditPolicy.generated";
15
+ import { type CommandContext, InsufficientPermissionError } from "@tailor-platform/erp-kit/module";
16
16
 
17
17
  const ctx: CommandContext = {
18
18
  actorId: "test-actor",
@@ -1,4 +1,3 @@
1
- import { ok, err, type CommandContext } from "../../../shared";
2
1
  import type { Transaction } from "../generated/kysely-tailordb";
3
2
  import {
4
3
  PolicyNotFoundError,
@@ -8,6 +7,7 @@ import {
8
7
  EntityTypeNotRegisteredError,
9
8
  UnauthorizedError,
10
9
  } from "../lib/errors.generated";
10
+ import { ok, err, type CommandContext } from "@tailor-platform/erp-kit/module";
11
11
 
12
12
  export interface ActivateAuditPolicyInput {
13
13
  policyId: string;
@@ -1,6 +1,6 @@
1
1
  // @generated — do not edit
2
- import { defineCommand } from "../../../shared";
3
2
  import { permissions } from "../lib/permissions.generated";
4
3
  import { run } from "./createAuditPolicy";
4
+ import { defineCommand } from "@tailor-platform/erp-kit/module";
5
5
 
6
6
  export const createAuditPolicy = defineCommand(permissions.createAuditPolicy, run);
@@ -1,6 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { createMockDb, testPermissionDenied } from "../../../testing/index";
3
- import type { CommandContext } from "../../../shared";
4
3
  import type { Transaction } from "../generated/kysely-tailordb";
5
4
  import {
6
5
  EntityTypeNotRegisteredError,
@@ -19,6 +18,7 @@ import {
19
18
  } from "../testing/fixtures";
20
19
  import { run } from "./createAuditPolicy";
21
20
  import { createAuditPolicy } from "./createAuditPolicy.generated";
21
+ import type { CommandContext } from "@tailor-platform/erp-kit/module";
22
22
 
23
23
  const ctx: CommandContext = {
24
24
  actorId: "test-actor",
@@ -1,4 +1,3 @@
1
- import { ok, err, type CommandContext } from "../../../shared";
2
1
  import type { Transaction } from "../generated/kysely-tailordb";
3
2
  import {
4
3
  EntityTypeNotRegisteredError,
@@ -9,6 +8,7 @@ import {
9
8
  InvalidSensitivityModeError,
10
9
  UnauthorizedError,
11
10
  } from "../lib/errors.generated";
11
+ import { ok, err, type CommandContext } from "@tailor-platform/erp-kit/module";
12
12
 
13
13
  const VALID_OPERATION_TYPES = ["CREATE", "UPDATE", "DELETE"];
14
14
  const VALID_SENSITIVITY_MODES = ["CAPTURE", "MASK", "HASH", "EXCLUDE"];
@@ -1,6 +1,6 @@
1
1
  // @generated — do not edit
2
- import { defineCommand } from "../../../shared";
3
2
  import { permissions } from "../lib/permissions.generated";
4
3
  import { run } from "./deactivateAuditPolicy";
4
+ import { defineCommand } from "@tailor-platform/erp-kit/module";
5
5
 
6
6
  export const deactivateAuditPolicy = defineCommand(permissions.deactivateAuditPolicy, run);
@@ -1,12 +1,12 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { createMockDb } from "../../../testing/index";
3
- import type { CommandContext } from "../../../shared";
4
- import { InsufficientPermissionError } from "../../../shared/errors";
5
3
  import type { Transaction } from "../generated/kysely-tailordb";
6
4
  import { PolicyNotFoundError, InvalidStateError, UnauthorizedError } from "../lib/errors.generated";
7
5
  import { draftPolicy, activePolicy, inactivePolicy } from "../testing/fixtures";
8
6
  import { run } from "./deactivateAuditPolicy";
9
7
  import { deactivateAuditPolicy } from "./deactivateAuditPolicy.generated";
8
+ import { InsufficientPermissionError } from "@tailor-platform/erp-kit/module";
9
+ import type { CommandContext } from "@tailor-platform/erp-kit/module";
10
10
 
11
11
  const ctx: CommandContext = {
12
12
  actorId: "test-actor",
@@ -1,6 +1,6 @@
1
- import { ok, err, type CommandContext } from "../../../shared";
2
1
  import type { Transaction } from "../generated/kysely-tailordb";
3
2
  import { PolicyNotFoundError, InvalidStateError, UnauthorizedError } from "../lib/errors.generated";
3
+ import { ok, err, type CommandContext } from "@tailor-platform/erp-kit/module";
4
4
 
5
5
  export interface DeactivateAuditPolicyInput {
6
6
  policyId: string;
@@ -1,6 +1,6 @@
1
1
  // @generated — do not edit
2
- import { defineCommand } from "../../../shared";
3
2
  import { permissions } from "../lib/permissions.generated";
4
3
  import { run } from "./deleteAuditPolicy";
4
+ import { defineCommand } from "@tailor-platform/erp-kit/module";
5
5
 
6
6
  export const deleteAuditPolicy = defineCommand(permissions.deleteAuditPolicy, run);
@@ -2,10 +2,10 @@ import { describe, expect, it } from "vitest";
2
2
  import { createMockDb } from "../../../testing/index";
3
3
  import type { Transaction } from "../generated/kysely-tailordb";
4
4
  import { PolicyNotFoundError, InvalidStateError, UnauthorizedError } from "../lib/errors.generated";
5
- import { InsufficientPermissionError } from "../../../shared";
6
5
  import { draftPolicy, activePolicy, inactivePolicy } from "../testing/fixtures";
7
6
  import { run } from "./deleteAuditPolicy";
8
7
  import { deleteAuditPolicy } from "./deleteAuditPolicy.generated";
8
+ import { InsufficientPermissionError } from "@tailor-platform/erp-kit/module";
9
9
 
10
10
  const ctx = { actorId: "test-actor", permissions: ["audit:deleteAuditPolicy"] };
11
11
 
@@ -1,6 +1,6 @@
1
- import { ok, err, type CommandContext } from "../../../shared";
2
1
  import type { Transaction } from "../generated/kysely-tailordb";
3
2
  import { PolicyNotFoundError, InvalidStateError, UnauthorizedError } from "../lib/errors.generated";
3
+ import { ok, err, type CommandContext } from "@tailor-platform/erp-kit/module";
4
4
 
5
5
  export interface DeleteAuditPolicyInput {
6
6
  policyId: string;
@@ -1,6 +1,6 @@
1
1
  // @generated — do not edit
2
- import { defineCommand } from "../../../shared";
3
2
  import { permissions } from "../lib/permissions.generated";
4
3
  import { run } from "./logAuditEvent";
4
+ import { defineCommand } from "@tailor-platform/erp-kit/module";
5
5
 
6
6
  export const logAuditEvent = defineCommand(permissions.logAuditEvent, run);
@@ -1,6 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { createMockDb } from "../../../testing/index";
3
- import { type CommandContext, InsufficientPermissionError } from "../../../shared";
4
3
  import type { Transaction } from "../generated/kysely-tailordb";
5
4
  import {
6
5
  EntityTypeNotRegisteredError,
@@ -23,6 +22,7 @@ import {
23
22
  } from "../testing/fixtures";
24
23
  import { run, type LogAuditEventInput } from "./logAuditEvent";
25
24
  import { logAuditEvent } from "./logAuditEvent.generated";
25
+ import { type CommandContext, InsufficientPermissionError } from "@tailor-platform/erp-kit/module";
26
26
 
27
27
  const ctx: CommandContext = {
28
28
  actorId: "test-actor",
@@ -1,5 +1,4 @@
1
1
  import { createHash } from "node:crypto";
2
- import { ok, err, type CommandContext } from "../../../shared";
3
2
  import type { Transaction } from "../generated/kysely-tailordb";
4
3
  import {
5
4
  EntityTypeNotRegisteredError,
@@ -10,6 +9,7 @@ import {
10
9
  MissingEventIdError,
11
10
  ValidationErrorError,
12
11
  } from "../lib/errors.generated";
12
+ import { ok, err, type CommandContext } from "@tailor-platform/erp-kit/module";
13
13
 
14
14
  const VALID_ACTOR_TYPES = ["USER", "SYSTEM", "SERVICE"];
15
15
  const VALID_OPERATION_TYPES = ["CREATE", "UPDATE", "DELETE"];
@@ -1,6 +1,6 @@
1
1
  // @generated — do not edit
2
- import { defineCommand } from "../../../shared";
3
2
  import { permissions } from "../lib/permissions.generated";
4
3
  import { run } from "./reactivateAuditPolicy";
4
+ import { defineCommand } from "@tailor-platform/erp-kit/module";
5
5
 
6
6
  export const reactivateAuditPolicy = defineCommand(permissions.reactivateAuditPolicy, run);
@@ -1,7 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { createMockDb } from "../../../testing/index";
3
- import type { CommandContext } from "../../../shared";
4
- import { InsufficientPermissionError } from "../../../shared/errors";
5
3
  import type { Transaction } from "../generated/kysely-tailordb";
6
4
  import {
7
5
  PolicyNotFoundError,
@@ -12,6 +10,8 @@ import {
12
10
  import { draftPolicy, activePolicy, inactivePolicy } from "../testing/fixtures";
13
11
  import { run } from "./reactivateAuditPolicy";
14
12
  import { reactivateAuditPolicy } from "./reactivateAuditPolicy.generated";
13
+ import { InsufficientPermissionError } from "@tailor-platform/erp-kit/module";
14
+ import type { CommandContext } from "@tailor-platform/erp-kit/module";
15
15
 
16
16
  const ctx: CommandContext = {
17
17
  actorId: "test-actor",
@@ -1,4 +1,3 @@
1
- import { ok, err, type CommandContext } from "../../../shared";
2
1
  import type { Transaction } from "../generated/kysely-tailordb";
3
2
  import {
4
3
  PolicyNotFoundError,
@@ -6,6 +5,7 @@ import {
6
5
  ConflictingActivePolicyError,
7
6
  UnauthorizedError,
8
7
  } from "../lib/errors.generated";
8
+ import { ok, err, type CommandContext } from "@tailor-platform/erp-kit/module";
9
9
 
10
10
  export interface ReactivateAuditPolicyInput {
11
11
  policyId: string;
@@ -1,6 +1,6 @@
1
1
  // @generated — do not edit
2
- import { defineCommand } from "../../../shared";
3
2
  import { permissions } from "../lib/permissions.generated";
4
3
  import { run } from "./registerAuditableEntity";
4
+ import { defineCommand } from "@tailor-platform/erp-kit/module";
5
5
 
6
6
  export const registerAuditableEntity = defineCommand(permissions.registerAuditableEntity, run);
@@ -1,6 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { createMockDb } from "../../../testing/index";
3
- import { type CommandContext, InsufficientPermissionError } from "../../../shared";
4
3
  import type { Transaction } from "../generated/kysely-tailordb";
5
4
  import {
6
5
  InvalidEntityNameError,
@@ -11,6 +10,7 @@ import {
11
10
  import { companyBoundEntity, globalEntity } from "../testing/fixtures";
12
11
  import { run } from "./registerAuditableEntity";
13
12
  import { registerAuditableEntity } from "./registerAuditableEntity.generated";
13
+ import { type CommandContext, InsufficientPermissionError } from "@tailor-platform/erp-kit/module";
14
14
 
15
15
  const ctx: CommandContext = {
16
16
  actorId: "test-actor",
@@ -1,4 +1,3 @@
1
- import { ok, err, type CommandContext } from "../../../shared";
2
1
  import type { Transaction } from "../generated/kysely-tailordb";
3
2
  import {
4
3
  InvalidEntityNameError,
@@ -6,6 +5,7 @@ import {
6
5
  InvalidEntityScopeError,
7
6
  InvalidAuditableFieldsError,
8
7
  } from "../lib/errors.generated";
8
+ import { ok, err, type CommandContext } from "@tailor-platform/erp-kit/module";
9
9
 
10
10
  interface AuditableFieldDef {
11
11
  fieldName: string;
@@ -1,6 +1,6 @@
1
1
  // @generated — do not edit
2
- import { defineCommand } from "../../../shared";
3
2
  import { permissions } from "../lib/permissions.generated";
4
3
  import { run } from "./replaceAuditPolicy";
4
+ import { defineCommand } from "@tailor-platform/erp-kit/module";
5
5
 
6
6
  export const replaceAuditPolicy = defineCommand(permissions.replaceAuditPolicy, run);