@tailor-platform/erp-kit 0.3.0 → 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 (616) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +35 -7
  3. package/dist/cli.mjs +779 -268
  4. package/package.json +5 -4
  5. package/skills/erp-kit-app-1-requirements/SKILL.md +8 -9
  6. package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +4 -0
  7. package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +4 -0
  8. package/skills/erp-kit-app-3-plan/SKILL.md +27 -27
  9. package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +21 -17
  10. package/skills/erp-kit-app-3-plan/references/screen-extraction.md +15 -1
  11. package/skills/erp-kit-app-3-plan/references/story-extraction.md +8 -2
  12. package/skills/erp-kit-app-5-impl-backend/SKILL.md +9 -11
  13. package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -22
  14. package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +0 -1
  15. package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +13 -4
  16. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +5 -0
  17. package/skills/erp-kit-app-6-impl-frontend/references/pages.md +16 -46
  18. package/skills/erp-kit-app-7-impl-review/SKILL.md +13 -11
  19. package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +16 -17
  20. package/skills/erp-kit-module-1-requirements/SKILL.md +6 -12
  21. package/skills/erp-kit-module-2-requirements-review/SKILL.md +21 -5
  22. package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +19 -0
  23. package/skills/erp-kit-module-3-plan/SKILL.md +2 -4
  24. package/skills/erp-kit-module-4-plan-review/SKILL.md +21 -5
  25. package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +15 -0
  26. package/skills/erp-kit-module-6-impl-review/SKILL.md +21 -7
  27. package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +15 -0
  28. package/skills/erp-kit-module-shared/SKILL.md +4 -0
  29. package/src/commands/app/index.ts +28 -17
  30. package/src/commands/check.test.ts +1 -1
  31. package/src/commands/check.ts +2 -35
  32. package/src/commands/doc/index.ts +83 -0
  33. package/src/commands/doc/module.test.ts +119 -0
  34. package/src/commands/doc/module.ts +114 -0
  35. package/src/commands/doc/modules.test.ts +103 -0
  36. package/src/commands/doc/modules.ts +98 -0
  37. package/src/commands/doc/search.test.ts +94 -0
  38. package/src/commands/doc/search.ts +111 -0
  39. package/src/commands/generate-doc.ts +17 -10
  40. package/src/commands/index.ts +20 -8
  41. package/src/commands/lib/command-result.ts +30 -0
  42. package/src/commands/lib/discovery.test.ts +74 -0
  43. package/src/commands/lib/discovery.ts +106 -0
  44. package/src/commands/lib/paths.ts +22 -0
  45. package/src/commands/lib/sync-check-source.test.ts +197 -0
  46. package/src/commands/lib/sync-check-source.ts +100 -0
  47. package/src/commands/lib/sync-check-tests.test.ts +178 -0
  48. package/src/commands/lib/sync-check-tests.ts +69 -0
  49. package/src/commands/mock/index.ts +11 -6
  50. package/src/commands/module/generate.ts +13 -8
  51. package/src/commands/module/index.ts +17 -21
  52. package/src/commands/parse-doc-test-cases.ts +13 -2
  53. package/src/commands/sync-check.test.ts +6 -364
  54. package/src/commands/sync-check.ts +7 -251
  55. package/src/generator/generate-app-code.test.ts +121 -0
  56. package/src/generator/generate-app-code.ts +51 -0
  57. package/src/generator/generate-code-boilerplate.test.ts +1 -1
  58. package/src/generator/generate-code.test.ts +33 -6
  59. package/src/generator/generate-code.ts +12 -226
  60. package/src/generator/generate-errors.ts +34 -0
  61. package/src/generator/generate-permissions.ts +12 -0
  62. package/src/generator/generate-shells.ts +28 -0
  63. package/src/generator/generate-stubs.ts +31 -0
  64. package/src/generator/parse-resolver-doc.test.ts +89 -0
  65. package/src/generator/parse-resolver-doc.ts +125 -0
  66. package/src/generator/scaffold.ts +57 -0
  67. package/src/generator/stub-templates.test.ts +55 -0
  68. package/src/generator/stub-templates.ts +145 -0
  69. package/src/modules/audit/README.md +46 -0
  70. package/src/modules/audit/command/activateAuditPolicy.generated.ts +6 -0
  71. package/src/modules/audit/command/activateAuditPolicy.test.ts +186 -0
  72. package/src/modules/audit/command/activateAuditPolicy.ts +97 -0
  73. package/src/modules/audit/command/createAuditPolicy.generated.ts +6 -0
  74. package/src/modules/audit/command/createAuditPolicy.test.ts +395 -0
  75. package/src/modules/audit/command/createAuditPolicy.ts +131 -0
  76. package/src/modules/audit/command/deactivateAuditPolicy.generated.ts +6 -0
  77. package/src/modules/audit/command/deactivateAuditPolicy.test.ts +138 -0
  78. package/src/modules/audit/command/deactivateAuditPolicy.ts +58 -0
  79. package/src/modules/audit/command/deleteAuditPolicy.generated.ts +6 -0
  80. package/src/modules/audit/command/deleteAuditPolicy.test.ts +121 -0
  81. package/src/modules/audit/command/deleteAuditPolicy.ts +52 -0
  82. package/src/modules/audit/command/logAuditEvent.generated.ts +6 -0
  83. package/src/modules/audit/command/logAuditEvent.test.ts +991 -0
  84. package/src/modules/audit/command/logAuditEvent.ts +357 -0
  85. package/src/modules/audit/command/reactivateAuditPolicy.generated.ts +6 -0
  86. package/src/modules/audit/command/reactivateAuditPolicy.test.ts +143 -0
  87. package/src/modules/audit/command/reactivateAuditPolicy.ts +79 -0
  88. package/src/modules/audit/command/registerAuditableEntity.generated.ts +6 -0
  89. package/src/modules/audit/command/registerAuditableEntity.test.ts +268 -0
  90. package/src/modules/audit/command/registerAuditableEntity.ts +94 -0
  91. package/src/modules/audit/command/replaceAuditPolicy.generated.ts +6 -0
  92. package/src/modules/audit/command/replaceAuditPolicy.test.ts +242 -0
  93. package/src/modules/audit/command/replaceAuditPolicy.ts +91 -0
  94. package/src/modules/audit/command/updateAuditPolicy.generated.ts +6 -0
  95. package/src/modules/audit/command/updateAuditPolicy.test.ts +284 -0
  96. package/src/modules/audit/command/updateAuditPolicy.ts +151 -0
  97. package/src/modules/audit/db/auditEntry.ts +47 -0
  98. package/src/modules/audit/db/auditPolicy.ts +33 -0
  99. package/src/modules/audit/db/auditableEntity.ts +22 -0
  100. package/src/modules/audit/db/changeDetail.ts +28 -0
  101. package/src/modules/audit/db/policyFieldRule.ts +23 -0
  102. package/src/modules/audit/docs/commands/ActivateAuditPolicy.md +69 -0
  103. package/src/modules/audit/docs/commands/CreateAuditPolicy.md +79 -0
  104. package/src/modules/audit/docs/commands/DeactivateAuditPolicy.md +55 -0
  105. package/src/modules/audit/docs/commands/DeleteAuditPolicy.md +55 -0
  106. package/src/modules/audit/docs/commands/LogAuditEvent.md +137 -0
  107. package/src/modules/audit/docs/commands/ReactivateAuditPolicy.md +58 -0
  108. package/src/modules/audit/docs/commands/RegisterAuditableEntity.md +62 -0
  109. package/src/modules/audit/docs/commands/ReplaceAuditPolicy.md +72 -0
  110. package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +77 -0
  111. package/src/modules/audit/docs/features/audit-event-logging.md +126 -0
  112. package/src/modules/audit/docs/features/audit-policy-configuration.md +135 -0
  113. package/src/modules/audit/docs/features/field-level-change-tracking.md +95 -0
  114. package/src/modules/audit/docs/models/AuditEntry.md +55 -0
  115. package/src/modules/audit/docs/models/AuditPolicy.md +79 -0
  116. package/src/modules/audit/docs/models/AuditableEntity.md +38 -0
  117. package/src/modules/audit/docs/models/ChangeDetail.md +55 -0
  118. package/src/modules/audit/docs/models/PolicyFieldRule.md +45 -0
  119. package/src/modules/audit/docs/queries/GetAuditEntry.md +49 -0
  120. package/src/modules/audit/docs/queries/GetAuditPolicy.md +54 -0
  121. package/src/modules/audit/docs/queries/GetAuditSummary.md +84 -0
  122. package/src/modules/audit/docs/queries/GetChangeDetails.md +56 -0
  123. package/src/modules/audit/docs/queries/ListAuditPolicies.md +58 -0
  124. package/src/modules/audit/docs/queries/SearchAuditEntries.md +91 -0
  125. package/src/modules/audit/generated/kysely-tailordb.ts +92 -0
  126. package/src/modules/audit/index.ts +2 -0
  127. package/src/modules/audit/lib/_db_deps.ts +13 -0
  128. package/src/modules/audit/lib/errors.generated.ts +120 -0
  129. package/src/modules/audit/lib/permissions.generated.ts +14 -0
  130. package/src/modules/audit/lib/types.ts +28 -0
  131. package/src/modules/audit/module.ts +57 -0
  132. package/src/modules/audit/permissions.ts +39 -0
  133. package/src/modules/audit/query/getAuditEntry.generated.ts +5 -0
  134. package/src/modules/audit/query/getAuditEntry.test.ts +123 -0
  135. package/src/modules/audit/query/getAuditEntry.ts +36 -0
  136. package/src/modules/audit/query/getAuditPolicy.generated.ts +5 -0
  137. package/src/modules/audit/query/getAuditPolicy.test.ts +169 -0
  138. package/src/modules/audit/query/getAuditPolicy.ts +42 -0
  139. package/src/modules/audit/query/getAuditSummary.generated.ts +5 -0
  140. package/src/modules/audit/query/getAuditSummary.test.ts +632 -0
  141. package/src/modules/audit/query/getAuditSummary.ts +164 -0
  142. package/src/modules/audit/query/getChangeDetails.generated.ts +5 -0
  143. package/src/modules/audit/query/getChangeDetails.test.ts +195 -0
  144. package/src/modules/audit/query/getChangeDetails.ts +42 -0
  145. package/src/modules/audit/query/listAuditPolicies.generated.ts +5 -0
  146. package/src/modules/audit/query/listAuditPolicies.test.ts +239 -0
  147. package/src/modules/audit/query/listAuditPolicies.ts +100 -0
  148. package/src/modules/audit/query/searchAuditEntries.generated.ts +5 -0
  149. package/src/modules/audit/query/searchAuditEntries.test.ts +424 -0
  150. package/src/modules/audit/query/searchAuditEntries.ts +121 -0
  151. package/src/modules/audit/tailor.config.ts +13 -0
  152. package/src/modules/audit/tailor.d.ts +13 -0
  153. package/src/modules/audit/testing/fixtures.ts +215 -0
  154. package/src/modules/business-partner/README.md +60 -0
  155. package/src/modules/business-partner/command/.gitkeep +0 -0
  156. package/src/modules/business-partner/command/activatePartner.generated.ts +6 -0
  157. package/src/modules/business-partner/command/activatePartner.test.ts +59 -0
  158. package/src/modules/business-partner/command/activatePartner.ts +45 -0
  159. package/src/modules/business-partner/command/assignRoleToPartner.generated.ts +6 -0
  160. package/src/modules/business-partner/command/assignRoleToPartner.test.ts +113 -0
  161. package/src/modules/business-partner/command/assignRoleToPartner.ts +72 -0
  162. package/src/modules/business-partner/command/createContactPerson.generated.ts +6 -0
  163. package/src/modules/business-partner/command/createContactPerson.test.ts +193 -0
  164. package/src/modules/business-partner/command/createContactPerson.ts +98 -0
  165. package/src/modules/business-partner/command/createPartner.generated.ts +6 -0
  166. package/src/modules/business-partner/command/createPartner.test.ts +179 -0
  167. package/src/modules/business-partner/command/createPartner.ts +83 -0
  168. package/src/modules/business-partner/command/createPartnerAddress.generated.ts +6 -0
  169. package/src/modules/business-partner/command/createPartnerAddress.test.ts +195 -0
  170. package/src/modules/business-partner/command/createPartnerAddress.ts +119 -0
  171. package/src/modules/business-partner/command/createPartnerBankAccount.generated.ts +6 -0
  172. package/src/modules/business-partner/command/createPartnerBankAccount.test.ts +297 -0
  173. package/src/modules/business-partner/command/createPartnerBankAccount.ts +114 -0
  174. package/src/modules/business-partner/command/createPartnerIdentification.generated.ts +6 -0
  175. package/src/modules/business-partner/command/createPartnerIdentification.test.ts +255 -0
  176. package/src/modules/business-partner/command/createPartnerIdentification.ts +97 -0
  177. package/src/modules/business-partner/command/deactivateContactPerson.generated.ts +6 -0
  178. package/src/modules/business-partner/command/deactivateContactPerson.test.ts +70 -0
  179. package/src/modules/business-partner/command/deactivateContactPerson.ts +54 -0
  180. package/src/modules/business-partner/command/deactivatePartner.generated.ts +6 -0
  181. package/src/modules/business-partner/command/deactivatePartner.test.ts +59 -0
  182. package/src/modules/business-partner/command/deactivatePartner.ts +46 -0
  183. package/src/modules/business-partner/command/deleteContactPerson.generated.ts +6 -0
  184. package/src/modules/business-partner/command/deleteContactPerson.test.ts +61 -0
  185. package/src/modules/business-partner/command/deleteContactPerson.ts +48 -0
  186. package/src/modules/business-partner/command/deletePartner.generated.ts +6 -0
  187. package/src/modules/business-partner/command/deletePartner.test.ts +58 -0
  188. package/src/modules/business-partner/command/deletePartner.ts +46 -0
  189. package/src/modules/business-partner/command/deletePartnerAddress.generated.ts +6 -0
  190. package/src/modules/business-partner/command/deletePartnerAddress.test.ts +74 -0
  191. package/src/modules/business-partner/command/deletePartnerAddress.ts +52 -0
  192. package/src/modules/business-partner/command/deletePartnerBankAccount.generated.ts +6 -0
  193. package/src/modules/business-partner/command/deletePartnerBankAccount.test.ts +55 -0
  194. package/src/modules/business-partner/command/deletePartnerBankAccount.ts +36 -0
  195. package/src/modules/business-partner/command/deletePartnerIdentification.generated.ts +6 -0
  196. package/src/modules/business-partner/command/deletePartnerIdentification.test.ts +47 -0
  197. package/src/modules/business-partner/command/deletePartnerIdentification.ts +37 -0
  198. package/src/modules/business-partner/command/reactivateContactPerson.generated.ts +6 -0
  199. package/src/modules/business-partner/command/reactivateContactPerson.test.ts +48 -0
  200. package/src/modules/business-partner/command/reactivateContactPerson.ts +48 -0
  201. package/src/modules/business-partner/command/reactivatePartner.generated.ts +6 -0
  202. package/src/modules/business-partner/command/reactivatePartner.test.ts +59 -0
  203. package/src/modules/business-partner/command/reactivatePartner.ts +46 -0
  204. package/src/modules/business-partner/command/removeRoleFromPartner.generated.ts +6 -0
  205. package/src/modules/business-partner/command/removeRoleFromPartner.test.ts +82 -0
  206. package/src/modules/business-partner/command/removeRoleFromPartner.ts +73 -0
  207. package/src/modules/business-partner/command/setDefaultPartnerAddress.generated.ts +6 -0
  208. package/src/modules/business-partner/command/setDefaultPartnerAddress.test.ts +60 -0
  209. package/src/modules/business-partner/command/setDefaultPartnerAddress.ts +48 -0
  210. package/src/modules/business-partner/command/setDefaultPartnerBankAccount.generated.ts +6 -0
  211. package/src/modules/business-partner/command/setDefaultPartnerBankAccount.test.ts +56 -0
  212. package/src/modules/business-partner/command/setDefaultPartnerBankAccount.ts +51 -0
  213. package/src/modules/business-partner/command/setPrimaryContactPerson.generated.ts +6 -0
  214. package/src/modules/business-partner/command/setPrimaryContactPerson.test.ts +63 -0
  215. package/src/modules/business-partner/command/setPrimaryContactPerson.ts +55 -0
  216. package/src/modules/business-partner/command/updateContactPerson.generated.ts +6 -0
  217. package/src/modules/business-partner/command/updateContactPerson.test.ts +193 -0
  218. package/src/modules/business-partner/command/updateContactPerson.ts +92 -0
  219. package/src/modules/business-partner/command/updatePartner.generated.ts +6 -0
  220. package/src/modules/business-partner/command/updatePartner.test.ts +101 -0
  221. package/src/modules/business-partner/command/updatePartner.ts +76 -0
  222. package/src/modules/business-partner/command/updatePartnerAddress.generated.ts +6 -0
  223. package/src/modules/business-partner/command/updatePartnerAddress.test.ts +148 -0
  224. package/src/modules/business-partner/command/updatePartnerAddress.ts +64 -0
  225. package/src/modules/business-partner/command/updatePartnerBankAccount.generated.ts +6 -0
  226. package/src/modules/business-partner/command/updatePartnerBankAccount.test.ts +249 -0
  227. package/src/modules/business-partner/command/updatePartnerBankAccount.ts +109 -0
  228. package/src/modules/business-partner/command/updatePartnerIdentification.generated.ts +6 -0
  229. package/src/modules/business-partner/command/updatePartnerIdentification.test.ts +162 -0
  230. package/src/modules/business-partner/command/updatePartnerIdentification.ts +105 -0
  231. package/src/modules/business-partner/db/.gitkeep +0 -0
  232. package/src/modules/business-partner/db/businessPartner.ts +59 -0
  233. package/src/modules/business-partner/db/contactPerson.ts +49 -0
  234. package/src/modules/business-partner/db/partnerAddress.ts +45 -0
  235. package/src/modules/business-partner/db/partnerBankAccount.ts +53 -0
  236. package/src/modules/business-partner/db/partnerIdentification.ts +53 -0
  237. package/src/modules/business-partner/db/partnerRole.ts +43 -0
  238. package/src/modules/business-partner/docs/commands/ActivatePartner.md +39 -0
  239. package/src/modules/business-partner/docs/commands/AssignRoleToPartner.md +49 -0
  240. package/src/modules/business-partner/docs/commands/CreateContactPerson.md +59 -0
  241. package/src/modules/business-partner/docs/commands/CreatePartner.md +54 -0
  242. package/src/modules/business-partner/docs/commands/CreatePartnerAddress.md +60 -0
  243. package/src/modules/business-partner/docs/commands/CreatePartnerBankAccount.md +68 -0
  244. package/src/modules/business-partner/docs/commands/CreatePartnerIdentification.md +59 -0
  245. package/src/modules/business-partner/docs/commands/DeactivateContactPerson.md +42 -0
  246. package/src/modules/business-partner/docs/commands/DeactivatePartner.md +39 -0
  247. package/src/modules/business-partner/docs/commands/DeleteContactPerson.md +43 -0
  248. package/src/modules/business-partner/docs/commands/DeletePartner.md +40 -0
  249. package/src/modules/business-partner/docs/commands/DeletePartnerAddress.md +40 -0
  250. package/src/modules/business-partner/docs/commands/DeletePartnerBankAccount.md +35 -0
  251. package/src/modules/business-partner/docs/commands/DeletePartnerIdentification.md +33 -0
  252. package/src/modules/business-partner/docs/commands/ReactivateContactPerson.md +38 -0
  253. package/src/modules/business-partner/docs/commands/ReactivatePartner.md +39 -0
  254. package/src/modules/business-partner/docs/commands/RemoveRoleFromPartner.md +46 -0
  255. package/src/modules/business-partner/docs/commands/SetDefaultPartnerAddress.md +38 -0
  256. package/src/modules/business-partner/docs/commands/SetDefaultPartnerBankAccount.md +38 -0
  257. package/src/modules/business-partner/docs/commands/SetPrimaryContactPerson.md +43 -0
  258. package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +66 -0
  259. package/src/modules/business-partner/docs/commands/UpdatePartner.md +48 -0
  260. package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +46 -0
  261. package/src/modules/business-partner/docs/commands/UpdatePartnerBankAccount.md +64 -0
  262. package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +52 -0
  263. package/src/modules/business-partner/docs/features/contact-person-management.md +70 -0
  264. package/src/modules/business-partner/docs/features/partner-address-management.md +96 -0
  265. package/src/modules/business-partner/docs/features/partner-bank-account.md +70 -0
  266. package/src/modules/business-partner/docs/features/partner-identification.md +76 -0
  267. package/src/modules/business-partner/docs/features/partner-lifecycle.md +59 -0
  268. package/src/modules/business-partner/docs/features/partner-role-classification.md +73 -0
  269. package/src/modules/business-partner/docs/models/BusinessPartner.md +64 -0
  270. package/src/modules/business-partner/docs/models/ContactPerson.md +62 -0
  271. package/src/modules/business-partner/docs/models/PartnerAddress.md +52 -0
  272. package/src/modules/business-partner/docs/models/PartnerBankAccount.md +50 -0
  273. package/src/modules/business-partner/docs/models/PartnerIdentification.md +46 -0
  274. package/src/modules/business-partner/docs/models/PartnerRole.md +42 -0
  275. package/src/modules/business-partner/docs/queries/GetContactPerson.md +34 -0
  276. package/src/modules/business-partner/docs/queries/GetDefaultPartnerAddress.md +40 -0
  277. package/src/modules/business-partner/docs/queries/GetDefaultPartnerBankAccount.md +36 -0
  278. package/src/modules/business-partner/docs/queries/GetPartner.md +35 -0
  279. package/src/modules/business-partner/docs/queries/GetPartnerAddress.md +34 -0
  280. package/src/modules/business-partner/docs/queries/GetPartnerBankAccount.md +34 -0
  281. package/src/modules/business-partner/docs/queries/GetPartnerIdentification.md +34 -0
  282. package/src/modules/business-partner/docs/queries/GetPartnerRole.md +34 -0
  283. package/src/modules/business-partner/docs/queries/GetPrimaryContactPerson.md +36 -0
  284. package/src/modules/business-partner/docs/queries/ListContactPersonsByPartner.md +39 -0
  285. package/src/modules/business-partner/docs/queries/ListPartnerAddressesByPartner.md +41 -0
  286. package/src/modules/business-partner/docs/queries/ListPartnerBankAccountsByPartner.md +39 -0
  287. package/src/modules/business-partner/docs/queries/ListPartnerIdentificationsByPartner.md +41 -0
  288. package/src/modules/business-partner/docs/queries/ListPartnersByRole.md +47 -0
  289. package/src/modules/business-partner/executor/.gitkeep +0 -0
  290. package/src/modules/business-partner/generated/.gitkeep +0 -0
  291. package/src/modules/business-partner/generated/enums.ts +60 -0
  292. package/src/modules/business-partner/generated/kysely-tailordb.ts +114 -0
  293. package/src/modules/business-partner/index.ts +2 -0
  294. package/src/modules/business-partner/lib/_db_deps.ts +17 -0
  295. package/src/modules/business-partner/lib/errors.generated.ts +172 -0
  296. package/src/modules/business-partner/lib/errors.ts +2 -0
  297. package/src/modules/business-partner/lib/permissions.generated.ts +30 -0
  298. package/src/modules/business-partner/lib/types.ts +53 -0
  299. package/src/modules/business-partner/module.ts +181 -0
  300. package/src/modules/business-partner/permissions.ts +3 -0
  301. package/src/modules/business-partner/query/.gitkeep +0 -0
  302. package/src/modules/business-partner/query/getContactPerson.generated.ts +5 -0
  303. package/src/modules/business-partner/query/getContactPerson.test.ts +31 -0
  304. package/src/modules/business-partner/query/getContactPerson.ts +16 -0
  305. package/src/modules/business-partner/query/getDefaultPartnerAddress.generated.ts +5 -0
  306. package/src/modules/business-partner/query/getDefaultPartnerAddress.test.ts +45 -0
  307. package/src/modules/business-partner/query/getDefaultPartnerAddress.ts +30 -0
  308. package/src/modules/business-partner/query/getDefaultPartnerBankAccount.generated.ts +5 -0
  309. package/src/modules/business-partner/query/getDefaultPartnerBankAccount.test.ts +43 -0
  310. package/src/modules/business-partner/query/getDefaultPartnerBankAccount.ts +17 -0
  311. package/src/modules/business-partner/query/getPartner.generated.ts +5 -0
  312. package/src/modules/business-partner/query/getPartner.test.ts +31 -0
  313. package/src/modules/business-partner/query/getPartner.ts +16 -0
  314. package/src/modules/business-partner/query/getPartnerAddress.generated.ts +5 -0
  315. package/src/modules/business-partner/query/getPartnerAddress.test.ts +31 -0
  316. package/src/modules/business-partner/query/getPartnerAddress.ts +16 -0
  317. package/src/modules/business-partner/query/getPartnerBankAccount.generated.ts +5 -0
  318. package/src/modules/business-partner/query/getPartnerBankAccount.test.ts +31 -0
  319. package/src/modules/business-partner/query/getPartnerBankAccount.ts +16 -0
  320. package/src/modules/business-partner/query/getPartnerIdentification.generated.ts +5 -0
  321. package/src/modules/business-partner/query/getPartnerIdentification.test.ts +31 -0
  322. package/src/modules/business-partner/query/getPartnerIdentification.ts +16 -0
  323. package/src/modules/business-partner/query/getPartnerRole.generated.ts +5 -0
  324. package/src/modules/business-partner/query/getPartnerRole.test.ts +31 -0
  325. package/src/modules/business-partner/query/getPartnerRole.ts +19 -0
  326. package/src/modules/business-partner/query/getPrimaryContactPerson.generated.ts +5 -0
  327. package/src/modules/business-partner/query/getPrimaryContactPerson.test.ts +43 -0
  328. package/src/modules/business-partner/query/getPrimaryContactPerson.ts +17 -0
  329. package/src/modules/business-partner/query/listContactPersonsByPartner.generated.ts +5 -0
  330. package/src/modules/business-partner/query/listContactPersonsByPartner.test.ts +77 -0
  331. package/src/modules/business-partner/query/listContactPersonsByPartner.ts +32 -0
  332. package/src/modules/business-partner/query/listPartnerAddressesByPartner.generated.ts +5 -0
  333. package/src/modules/business-partner/query/listPartnerAddressesByPartner.test.ts +71 -0
  334. package/src/modules/business-partner/query/listPartnerAddressesByPartner.ts +37 -0
  335. package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.generated.ts +5 -0
  336. package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.test.ts +59 -0
  337. package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.ts +32 -0
  338. package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.generated.ts +5 -0
  339. package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.test.ts +72 -0
  340. package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.ts +40 -0
  341. package/src/modules/business-partner/query/listPartnersByRole.generated.ts +5 -0
  342. package/src/modules/business-partner/query/listPartnersByRole.test.ts +103 -0
  343. package/src/modules/business-partner/query/listPartnersByRole.ts +47 -0
  344. package/src/modules/business-partner/tailor.config.ts +13 -0
  345. package/src/modules/business-partner/tailor.d.ts +13 -0
  346. package/src/modules/business-partner/testing/fixtures.ts +204 -0
  347. package/src/modules/coa-management/README.md +61 -0
  348. package/src/modules/coa-management/command/.gitkeep +0 -0
  349. package/src/modules/coa-management/command/activateAccount.generated.ts +6 -0
  350. package/src/modules/coa-management/command/activateAccount.test.ts +125 -0
  351. package/src/modules/coa-management/command/activateAccount.ts +105 -0
  352. package/src/modules/coa-management/command/activateChartOfAccounts.generated.ts +6 -0
  353. package/src/modules/coa-management/command/activateChartOfAccounts.test.ts +113 -0
  354. package/src/modules/coa-management/command/activateChartOfAccounts.ts +104 -0
  355. package/src/modules/coa-management/command/createAccount.generated.ts +6 -0
  356. package/src/modules/coa-management/command/createAccount.test.ts +767 -0
  357. package/src/modules/coa-management/command/createAccount.ts +247 -0
  358. package/src/modules/coa-management/command/createAccountGroup.generated.ts +6 -0
  359. package/src/modules/coa-management/command/createAccountGroup.test.ts +494 -0
  360. package/src/modules/coa-management/command/createAccountGroup.ts +207 -0
  361. package/src/modules/coa-management/command/createChartOfAccounts.generated.ts +6 -0
  362. package/src/modules/coa-management/command/createChartOfAccounts.test.ts +502 -0
  363. package/src/modules/coa-management/command/createChartOfAccounts.ts +267 -0
  364. package/src/modules/coa-management/command/deactivateAccount.generated.ts +6 -0
  365. package/src/modules/coa-management/command/deactivateAccount.test.ts +199 -0
  366. package/src/modules/coa-management/command/deactivateAccount.ts +142 -0
  367. package/src/modules/coa-management/command/deactivateChartOfAccounts.generated.ts +6 -0
  368. package/src/modules/coa-management/command/deactivateChartOfAccounts.test.ts +91 -0
  369. package/src/modules/coa-management/command/deactivateChartOfAccounts.ts +88 -0
  370. package/src/modules/coa-management/command/deleteAccount.generated.ts +6 -0
  371. package/src/modules/coa-management/command/deleteAccount.test.ts +122 -0
  372. package/src/modules/coa-management/command/deleteAccount.ts +103 -0
  373. package/src/modules/coa-management/command/deleteAccountGroup.generated.ts +6 -0
  374. package/src/modules/coa-management/command/deleteAccountGroup.test.ts +120 -0
  375. package/src/modules/coa-management/command/deleteAccountGroup.ts +113 -0
  376. package/src/modules/coa-management/command/deleteChartOfAccounts.generated.ts +6 -0
  377. package/src/modules/coa-management/command/deleteChartOfAccounts.test.ts +154 -0
  378. package/src/modules/coa-management/command/deleteChartOfAccounts.ts +133 -0
  379. package/src/modules/coa-management/command/moveAccountGroup.generated.ts +6 -0
  380. package/src/modules/coa-management/command/moveAccountGroup.test.ts +199 -0
  381. package/src/modules/coa-management/command/moveAccountGroup.ts +145 -0
  382. package/src/modules/coa-management/command/reactivateAccount.generated.ts +6 -0
  383. package/src/modules/coa-management/command/reactivateAccount.test.ts +126 -0
  384. package/src/modules/coa-management/command/reactivateAccount.ts +123 -0
  385. package/src/modules/coa-management/command/updateAccount.generated.ts +6 -0
  386. package/src/modules/coa-management/command/updateAccount.test.ts +669 -0
  387. package/src/modules/coa-management/command/updateAccount.ts +370 -0
  388. package/src/modules/coa-management/command/updateAccountGroup.generated.ts +6 -0
  389. package/src/modules/coa-management/command/updateAccountGroup.test.ts +253 -0
  390. package/src/modules/coa-management/command/updateAccountGroup.ts +191 -0
  391. package/src/modules/coa-management/command/updateChartOfAccounts.generated.ts +6 -0
  392. package/src/modules/coa-management/command/updateChartOfAccounts.test.ts +153 -0
  393. package/src/modules/coa-management/command/updateChartOfAccounts.ts +133 -0
  394. package/src/modules/coa-management/db/.gitkeep +0 -0
  395. package/src/modules/coa-management/db/account.ts +119 -0
  396. package/src/modules/coa-management/db/accountGroup.ts +57 -0
  397. package/src/modules/coa-management/db/chartOfAccounts.ts +55 -0
  398. package/src/modules/coa-management/docs/commands/ActivateAccount.md +49 -0
  399. package/src/modules/coa-management/docs/commands/ActivateChartOfAccounts.md +47 -0
  400. package/src/modules/coa-management/docs/commands/CreateAccount.md +94 -0
  401. package/src/modules/coa-management/docs/commands/CreateAccountGroup.md +70 -0
  402. package/src/modules/coa-management/docs/commands/CreateChartOfAccounts.md +72 -0
  403. package/src/modules/coa-management/docs/commands/DeactivateAccount.md +65 -0
  404. package/src/modules/coa-management/docs/commands/DeactivateChartOfAccounts.md +44 -0
  405. package/src/modules/coa-management/docs/commands/DeleteAccount.md +52 -0
  406. package/src/modules/coa-management/docs/commands/DeleteAccountGroup.md +50 -0
  407. package/src/modules/coa-management/docs/commands/DeleteChartOfAccounts.md +48 -0
  408. package/src/modules/coa-management/docs/commands/MoveAccountGroup.md +57 -0
  409. package/src/modules/coa-management/docs/commands/ReactivateAccount.md +50 -0
  410. package/src/modules/coa-management/docs/commands/UpdateAccount.md +102 -0
  411. package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +62 -0
  412. package/src/modules/coa-management/docs/commands/UpdateChartOfAccounts.md +49 -0
  413. package/src/modules/coa-management/docs/features/account-group-hierarchy.md +81 -0
  414. package/src/modules/coa-management/docs/features/account-lifecycle.md +80 -0
  415. package/src/modules/coa-management/docs/features/account-management.md +114 -0
  416. package/src/modules/coa-management/docs/features/chart-of-accounts-setup.md +86 -0
  417. package/src/modules/coa-management/docs/models/Account.md +84 -0
  418. package/src/modules/coa-management/docs/models/AccountGroup.md +55 -0
  419. package/src/modules/coa-management/docs/models/ChartOfAccounts.md +65 -0
  420. package/src/modules/coa-management/docs/queries/DetectCircularReference.md +52 -0
  421. package/src/modules/coa-management/docs/queries/GetAccount.md +42 -0
  422. package/src/modules/coa-management/docs/queries/GetAccountGroup.md +42 -0
  423. package/src/modules/coa-management/docs/queries/GetChartOfAccounts.md +48 -0
  424. package/src/modules/coa-management/docs/queries/ListAccountGroups.md +42 -0
  425. package/src/modules/coa-management/docs/queries/ListAccounts.md +54 -0
  426. package/src/modules/coa-management/docs/queries/ListUnassignedAccounts.md +40 -0
  427. package/src/modules/coa-management/executor/.gitkeep +0 -0
  428. package/src/modules/coa-management/generated/.gitkeep +0 -0
  429. package/src/modules/coa-management/generated/enums.ts +45 -0
  430. package/src/modules/coa-management/generated/kysely-tailordb.ts +81 -0
  431. package/src/modules/coa-management/index.ts +2 -0
  432. package/src/modules/coa-management/lib/_db_deps.ts +17 -0
  433. package/src/modules/coa-management/lib/errors.generated.ts +162 -0
  434. package/src/modules/coa-management/lib/errors.ts +0 -0
  435. package/src/modules/coa-management/lib/permissions.generated.ts +20 -0
  436. package/src/modules/coa-management/lib/types.ts +22 -0
  437. package/src/modules/coa-management/module.ts +136 -0
  438. package/src/modules/coa-management/permissions.ts +3 -0
  439. package/src/modules/coa-management/query/.gitkeep +0 -0
  440. package/src/modules/coa-management/query/detectCircularReference.generated.ts +5 -0
  441. package/src/modules/coa-management/query/detectCircularReference.test.ts +88 -0
  442. package/src/modules/coa-management/query/detectCircularReference.ts +46 -0
  443. package/src/modules/coa-management/query/getAccount.generated.ts +5 -0
  444. package/src/modules/coa-management/query/getAccount.test.ts +55 -0
  445. package/src/modules/coa-management/query/getAccount.ts +25 -0
  446. package/src/modules/coa-management/query/getAccountGroup.generated.ts +5 -0
  447. package/src/modules/coa-management/query/getAccountGroup.test.ts +55 -0
  448. package/src/modules/coa-management/query/getAccountGroup.ts +25 -0
  449. package/src/modules/coa-management/query/getChartOfAccounts.generated.ts +5 -0
  450. package/src/modules/coa-management/query/getChartOfAccounts.test.ts +79 -0
  451. package/src/modules/coa-management/query/getChartOfAccounts.ts +28 -0
  452. package/src/modules/coa-management/query/listAccountGroups.generated.ts +5 -0
  453. package/src/modules/coa-management/query/listAccountGroups.test.ts +72 -0
  454. package/src/modules/coa-management/query/listAccountGroups.ts +49 -0
  455. package/src/modules/coa-management/query/listAccounts.generated.ts +5 -0
  456. package/src/modules/coa-management/query/listAccounts.test.ts +136 -0
  457. package/src/modules/coa-management/query/listAccounts.ts +82 -0
  458. package/src/modules/coa-management/query/listUnassignedAccounts.generated.ts +5 -0
  459. package/src/modules/coa-management/query/listUnassignedAccounts.test.ts +96 -0
  460. package/src/modules/coa-management/query/listUnassignedAccounts.ts +39 -0
  461. package/src/modules/coa-management/tailor.config.ts +13 -0
  462. package/src/modules/coa-management/tailor.d.ts +13 -0
  463. package/src/modules/coa-management/testing/fixtures.ts +201 -0
  464. package/src/modules/item-management/README.md +1 -1
  465. package/src/modules/organization/README.md +57 -0
  466. package/src/modules/organization/command/.gitkeep +0 -0
  467. package/src/modules/organization/command/activateCompany.generated.ts +6 -0
  468. package/src/modules/organization/command/activateCompany.test.ts +184 -0
  469. package/src/modules/organization/command/activateCompany.ts +92 -0
  470. package/src/modules/organization/command/createCompany.generated.ts +6 -0
  471. package/src/modules/organization/command/createCompany.test.ts +156 -0
  472. package/src/modules/organization/command/createCompany.ts +80 -0
  473. package/src/modules/organization/command/createDepartment.generated.ts +6 -0
  474. package/src/modules/organization/command/createDepartment.test.ts +239 -0
  475. package/src/modules/organization/command/createDepartment.ts +98 -0
  476. package/src/modules/organization/command/createSite.generated.ts +6 -0
  477. package/src/modules/organization/command/createSite.test.ts +262 -0
  478. package/src/modules/organization/command/createSite.ts +155 -0
  479. package/src/modules/organization/command/deactivateCompany.generated.ts +6 -0
  480. package/src/modules/organization/command/deactivateCompany.test.ts +58 -0
  481. package/src/modules/organization/command/deactivateCompany.ts +47 -0
  482. package/src/modules/organization/command/deactivateDepartment.generated.ts +6 -0
  483. package/src/modules/organization/command/deactivateDepartment.test.ts +115 -0
  484. package/src/modules/organization/command/deactivateDepartment.ts +63 -0
  485. package/src/modules/organization/command/deactivateSite.generated.ts +6 -0
  486. package/src/modules/organization/command/deactivateSite.test.ts +53 -0
  487. package/src/modules/organization/command/deactivateSite.ts +47 -0
  488. package/src/modules/organization/command/deleteCompany.generated.ts +6 -0
  489. package/src/modules/organization/command/deleteCompany.test.ts +99 -0
  490. package/src/modules/organization/command/deleteCompany.ts +66 -0
  491. package/src/modules/organization/command/reactivateCompany.generated.ts +6 -0
  492. package/src/modules/organization/command/reactivateCompany.test.ts +58 -0
  493. package/src/modules/organization/command/reactivateCompany.ts +47 -0
  494. package/src/modules/organization/command/reactivateDepartment.generated.ts +6 -0
  495. package/src/modules/organization/command/reactivateDepartment.test.ts +59 -0
  496. package/src/modules/organization/command/reactivateDepartment.ts +47 -0
  497. package/src/modules/organization/command/reactivateSite.generated.ts +6 -0
  498. package/src/modules/organization/command/reactivateSite.test.ts +53 -0
  499. package/src/modules/organization/command/reactivateSite.ts +47 -0
  500. package/src/modules/organization/command/updateCompany.generated.ts +6 -0
  501. package/src/modules/organization/command/updateCompany.test.ts +239 -0
  502. package/src/modules/organization/command/updateCompany.ts +127 -0
  503. package/src/modules/organization/command/updateDepartment.generated.ts +6 -0
  504. package/src/modules/organization/command/updateDepartment.test.ts +232 -0
  505. package/src/modules/organization/command/updateDepartment.ts +120 -0
  506. package/src/modules/organization/command/updateSite.generated.ts +6 -0
  507. package/src/modules/organization/command/updateSite.test.ts +274 -0
  508. package/src/modules/organization/command/updateSite.ts +176 -0
  509. package/src/modules/organization/db/.gitkeep +0 -0
  510. package/src/modules/organization/db/company.ts +44 -0
  511. package/src/modules/organization/db/department.ts +46 -0
  512. package/src/modules/organization/db/site.ts +44 -0
  513. package/src/modules/organization/docs/commands/ActivateCompany.md +62 -0
  514. package/src/modules/organization/docs/commands/CreateCompany.md +49 -0
  515. package/src/modules/organization/docs/commands/CreateDepartment.md +62 -0
  516. package/src/modules/organization/docs/commands/CreateSite.md +74 -0
  517. package/src/modules/organization/docs/commands/DeactivateCompany.md +40 -0
  518. package/src/modules/organization/docs/commands/DeactivateDepartment.md +44 -0
  519. package/src/modules/organization/docs/commands/DeactivateSite.md +38 -0
  520. package/src/modules/organization/docs/commands/DeleteCompany.md +50 -0
  521. package/src/modules/organization/docs/commands/ReactivateCompany.md +39 -0
  522. package/src/modules/organization/docs/commands/ReactivateDepartment.md +37 -0
  523. package/src/modules/organization/docs/commands/ReactivateSite.md +37 -0
  524. package/src/modules/organization/docs/commands/UpdateCompany.md +58 -0
  525. package/src/modules/organization/docs/commands/UpdateDepartment.md +64 -0
  526. package/src/modules/organization/docs/commands/UpdateSite.md +80 -0
  527. package/src/modules/organization/docs/features/company-lifecycle.md +76 -0
  528. package/src/modules/organization/docs/features/department-management.md +66 -0
  529. package/src/modules/organization/docs/features/site-management.md +86 -0
  530. package/src/modules/organization/docs/models/Company.md +60 -0
  531. package/src/modules/organization/docs/models/Department.md +57 -0
  532. package/src/modules/organization/docs/models/Site.md +57 -0
  533. package/src/modules/organization/docs/queries/DetectDepartmentCircularReference.md +50 -0
  534. package/src/modules/organization/docs/queries/GetCompany.md +40 -0
  535. package/src/modules/organization/docs/queries/GetDepartment.md +44 -0
  536. package/src/modules/organization/docs/queries/GetDepartmentChildren.md +40 -0
  537. package/src/modules/organization/docs/queries/GetSite.md +37 -0
  538. package/src/modules/organization/docs/queries/ListDepartmentsByCompany.md +54 -0
  539. package/src/modules/organization/docs/queries/ListSitesByCompany.md +54 -0
  540. package/src/modules/organization/executor/.gitkeep +0 -0
  541. package/src/modules/organization/generated/.gitkeep +0 -0
  542. package/src/modules/organization/generated/kysely-tailordb.ts +77 -0
  543. package/src/modules/organization/index.ts +2 -0
  544. package/src/modules/organization/lib/_db_deps.ts +10 -0
  545. package/src/modules/organization/lib/errors.generated.ts +117 -0
  546. package/src/modules/organization/lib/errors.ts +1 -0
  547. package/src/modules/organization/lib/permissions.generated.ts +19 -0
  548. package/src/modules/organization/lib/types.ts +16 -0
  549. package/src/modules/organization/module.ts +89 -0
  550. package/src/modules/organization/permissions.ts +3 -0
  551. package/src/modules/organization/query/.gitkeep +0 -0
  552. package/src/modules/organization/query/detectDepartmentCircularReference.generated.ts +5 -0
  553. package/src/modules/organization/query/detectDepartmentCircularReference.test.ts +102 -0
  554. package/src/modules/organization/query/detectDepartmentCircularReference.ts +27 -0
  555. package/src/modules/organization/query/getCompany.generated.ts +5 -0
  556. package/src/modules/organization/query/getCompany.test.ts +70 -0
  557. package/src/modules/organization/query/getCompany.ts +16 -0
  558. package/src/modules/organization/query/getDepartment.generated.ts +5 -0
  559. package/src/modules/organization/query/getDepartment.test.ts +85 -0
  560. package/src/modules/organization/query/getDepartment.ts +17 -0
  561. package/src/modules/organization/query/getDepartmentChildren.generated.ts +5 -0
  562. package/src/modules/organization/query/getDepartmentChildren.test.ts +75 -0
  563. package/src/modules/organization/query/getDepartmentChildren.ts +21 -0
  564. package/src/modules/organization/query/getSite.generated.ts +5 -0
  565. package/src/modules/organization/query/getSite.test.ts +55 -0
  566. package/src/modules/organization/query/getSite.ts +16 -0
  567. package/src/modules/organization/query/listDepartmentsByCompany.generated.ts +5 -0
  568. package/src/modules/organization/query/listDepartmentsByCompany.test.ts +124 -0
  569. package/src/modules/organization/query/listDepartmentsByCompany.ts +43 -0
  570. package/src/modules/organization/query/listSitesByCompany.generated.ts +5 -0
  571. package/src/modules/organization/query/listSitesByCompany.test.ts +126 -0
  572. package/src/modules/organization/query/listSitesByCompany.ts +41 -0
  573. package/src/modules/organization/tailor.config.ts +13 -0
  574. package/src/modules/organization/tailor.d.ts +13 -0
  575. package/src/modules/organization/testing/fixtures.ts +155 -0
  576. package/src/modules/primitives/README.md +1 -1
  577. package/src/modules/primitives/command/setBaseCurrency.test.ts +8 -64
  578. package/src/modules/primitives/command/setBaseCurrency.ts +6 -64
  579. package/src/modules/primitives/docs/commands/ActivateCategory.md +1 -1
  580. package/src/modules/primitives/docs/commands/ActivateCurrency.md +1 -1
  581. package/src/modules/primitives/docs/commands/ActivateUnit.md +1 -1
  582. package/src/modules/primitives/docs/commands/CreateExchangeRate.md +2 -2
  583. package/src/modules/primitives/docs/commands/CreateUnit.md +1 -1
  584. package/src/modules/primitives/docs/commands/DeactivateCategory.md +1 -1
  585. package/src/modules/primitives/docs/commands/DeactivateCurrency.md +1 -1
  586. package/src/modules/primitives/docs/commands/DeactivateUnit.md +1 -1
  587. package/src/modules/primitives/docs/commands/SetBaseCurrency.md +13 -23
  588. package/src/modules/primitives/docs/commands/SetReferenceUnit.md +1 -1
  589. package/src/modules/primitives/docs/features/currency-definitions.md +13 -14
  590. package/src/modules/primitives/docs/models/Currency.md +3 -4
  591. package/src/modules/primitives/docs/queries/ConvertAmount.md +2 -2
  592. package/src/modules/primitives/docs/queries/ConvertQuantity.md +2 -2
  593. package/src/modules/primitives/lib/errors.generated.ts +5 -0
  594. package/src/modules/product-management/README.md +1 -1
  595. package/src/modules/user-management/docs/commands/CreatePermission.md +3 -3
  596. package/src/modules/user-management/docs/commands/CreateRole.md +1 -1
  597. package/src/modules/user-management/docs/queries/ListRolePermissionsByRole.md +39 -0
  598. package/src/modules/user-management/docs/queries/ListUserRolesByUser.md +39 -0
  599. package/src/modules/user-management/generated/enums.ts +0 -15
  600. package/src/modules/user-management/generated/kysely-tailordb.ts +0 -11
  601. package/src/shared/createContext.ts +2 -1
  602. package/src/shared/defineQuery.ts +36 -1
  603. package/src/shared/requirePermission.ts +3 -3
  604. package/src/shared/types.ts +3 -0
  605. package/templates/scaffold/app/backend/package.json +4 -3
  606. package/templates/scaffold/app/frontend/eslint.config.js +12 -0
  607. package/templates/scaffold/app/frontend/package.json +10 -7
  608. package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +30 -0
  609. package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +3 -2
  610. package/templates/scaffold/app/frontend/vite.config.ts +5 -5
  611. package/src/commands/module/list.test.ts +0 -57
  612. package/src/commands/module/list.ts +0 -64
  613. /package/src/modules/{accounting → audit/db}/.gitkeep +0 -0
  614. /package/src/modules/audit/{.gitkeep → executor/.gitkeep} +0 -0
  615. /package/src/modules/{coa-management/.gitkeep → audit/lib/errors.ts} +0 -0
  616. /package/src/modules/{supplier-management → business-partner}/.gitkeep +0 -0
@@ -28,7 +28,7 @@ From each resolver doc, extract:
28
28
 
29
29
  ## Extraction: Backend Code
30
30
 
31
- From each resolver file (`src/modules/*/resolvers/*.ts`), extract:
31
+ From each resolver file (`src/resolvers/*.ts`), extract:
32
32
 
33
33
  - Resolver name (from `createResolver()` call or filename)
34
34
  - Module command called (import path and function name)
@@ -42,28 +42,27 @@ From each executor file (`executors/*.ts`), extract:
42
42
 
43
43
  ## Parity Checks
44
44
 
45
- | Check ID | Question |
46
- | -------------------- | --------------------------------------------------------------- |
47
- | resolver_impl_exists | Does a backend resolver file exist for each resolver doc? |
48
- | command_reference | Does the resolver code call the correct module command? |
49
- | input_coverage | Does the resolver handle all documented input parameters? |
50
- | error_handling | Does the resolver handle all documented error scenarios? |
51
- | return_shape | Does the resolver return the documented output shape? |
52
- | executor_exists | Does an executor exist for each module that has event handlers? |
53
- | no_direct_mutation | Does the resolver avoid directly mutating module-owned tables? |
45
+ | Check ID | Question |
46
+ | ------------------ | --------------------------------------------------------------- |
47
+ | command_reference | Does the resolver code call the correct module command? |
48
+ | input_coverage | Does the resolver handle all documented input parameters? |
49
+ | error_handling | Does the resolver handle all documented error scenarios? |
50
+ | return_shape | Does the resolver return the documented output shape? |
51
+ | executor_exists | Does an executor exist for each module that has event handlers? |
52
+ | no_direct_mutation | Does the resolver avoid directly mutating module-owned tables? |
53
+
54
+ File existence checks (`resolver_impl_exists`) are handled by `erp-kit app sync-check` in the build verification step. This agent focuses on content parity only.
54
55
 
55
56
  ### How to Check
56
57
 
57
- 1. For each resolver doc, find the corresponding code file by name
58
- 2. Verify the code imports and calls the documented module command
59
- 3. Check that `context.input.*` accesses match documented inputs
60
- 4. Check that error `switch` cases cover all documented error codes
61
- 5. Verify return value structure matches documentation
62
- 6. Check executors re-export module event handlers without custom logic
58
+ 1. For each resolver doc that has a corresponding code file, verify the code imports and calls the documented module command
59
+ 2. Check that `context.input.*` accesses match documented inputs
60
+ 3. Check that error `switch` cases cover all documented error codes
61
+ 4. Verify return value structure matches documentation
62
+ 5. Check executors re-export module event handlers without custom logic
63
63
 
64
64
  ## Common Gap Patterns
65
65
 
66
- - **Missing resolver file**: Doc exists but no code file
67
66
  - **Wrong command**: Code calls a different module command than documented
68
67
  - **Missing input handling**: Doc specifies an input parameter not accessed in code
69
68
  - **Missing error cases**: Error scenario in doc not handled in code's switch
@@ -5,7 +5,7 @@ description: Create ERP module requirements and feature documentation. Use when
5
5
 
6
6
  # Module Requirements Workflow
7
7
 
8
- Collaborative workflow for creating ERP module requirements. Uses parallel agents for research, then human validates and decides scope.
8
+ Autonomous workflow for creating ERP module requirements. Uses parallel agents for research, then automatically decides scope based on recommendations.
9
9
 
10
10
  ## Workflow
11
11
 
@@ -22,7 +22,7 @@ Define shared context for all agents:
22
22
  - `DOMAIN`: the business domain (e.g., "inventory management", "purchasing")
23
23
  - `OTHER_MODULES`: glob `<MODULES_ROOT>/*/README.md` (to understand existing module landscape)
24
24
 
25
- Ask the user for the MODULE_NAME and DOMAIN if not provided.
25
+ Infer MODULE_NAME and DOMAIN from the current working directory or argument context. If insufficient, use the module's README or directory name.
26
26
 
27
27
  ## Step 2: Dispatch Agents (parallelize if possible)
28
28
 
@@ -63,9 +63,7 @@ For each feature:
63
63
  - **Recommendation:** `Include` or `Skip`
64
64
  - **Why:** reasoning for the recommendation
65
65
 
66
- Then ask the user: "推薦を変更したい機能はありますか?"
67
-
68
- The final feature set becomes the union of all `Include` features. Iterate until the user approves.
66
+ The final feature set becomes the union of all `Include` features. Proceed with the recommended scope.
69
67
 
70
68
  ## Step 4: Create — Agent per feature
71
69
 
@@ -96,19 +94,15 @@ pnpm run module:doc:check
96
94
 
97
95
  ## Step 5: Review
98
96
 
99
- User reviews generated feature docs and may request changes.
100
-
101
- **Split detection**: If a feature covers multiple distinct workflows, split into separate feature files.
97
+ **Split detection**: If a feature covers multiple distinct workflows, split into separate feature files automatically.
102
98
 
103
- **Iteration pattern:**
99
+ **Auto-split pattern:**
104
100
 
105
- 1. User identifies issue (e.g., "X is too broad, split it")
101
+ 1. Detect features that cover multiple distinct workflows
106
102
  2. Create new feature file for split-out content
107
103
  3. Remove split content from original file
108
104
  4. Update README.md feature list if needed
109
105
 
110
- Continue iterating until user approves.
111
-
112
106
  # Framework Schemas Reference
113
107
 
114
108
  Schemas are bundled in `@tailor-platform/erp-kit`.
@@ -52,7 +52,14 @@ After ALL agents return:
52
52
  2. Merge all `issues[]` arrays into a single list
53
53
  3. Merge all `recommendations[]` arrays into a single list
54
54
  4. Calculate totals across all summaries
55
- 5. Render the final report below
55
+ 5. **Classify severity** — for each non-pass finding, the router assigns a severity based on the finding's `status`, `check`, and `detail`:
56
+ - `critical`: fundamental design flaw, missing required capability, boundary violation — blocks progress
57
+ - `major`: significant gap that will likely cause downstream issues — should fix
58
+ - `nit`: cosmetic, stylistic, or minor improvement — does NOT block the review
59
+ 6. **Determine verdict**:
60
+ - **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
61
+ - **NEEDS CHANGES**: one or more `critical` or `major` findings
62
+ 7. Render the final report below
56
63
 
57
64
  ## Report Format
58
65
 
@@ -100,11 +107,20 @@ Render the aggregated results as markdown:
100
107
 
101
108
  ### 5. Recommendations
102
109
 
103
- Numbered list of actionable fixes, grouped by priority:
110
+ Numbered list of actionable fixes, grouped by severity:
104
111
 
105
- 1. Critical boundary issues (highest priority)
106
- 2. Best practice violations
107
- 3. Improvement suggestions
112
+ 1. `critical` boundary issues, fundamental design flaws (must fix)
113
+ 2. `major` — best practice violations, missing capabilities (should fix)
114
+ 3. `nit` — cosmetic, stylistic, minor improvements (informational only)
115
+
116
+ ### 6. Verdict
117
+
118
+ **Verdict: APPROVED / NEEDS CHANGES**
119
+
120
+ - If APPROVED with nits: "Review passed. The following nits are informational and do not block progress:" followed by the nit list.
121
+ - If NEEDS CHANGES: "Review requires changes. Fix all critical and major issues, then re-run the review."
122
+
123
+ Severity counts: `critical: N, major: N, nit: N`
108
124
 
109
125
  ## References
110
126
 
@@ -23,3 +23,22 @@ A numbered list of actionable suggestions, grouped by priority:
23
23
  ### Summary
24
24
 
25
25
  A summary table with aggregate counts: total checks, passed, failed, warned.
26
+
27
+ ## Router-Level Severity and Verdict
28
+
29
+ The router (SKILL.md Step 3) assigns severity to each non-pass finding after collecting all agent results. Agents do NOT assign severity — they only report `status` and `detail`.
30
+
31
+ The router classifies each finding as:
32
+
33
+ | Severity | Meaning | Examples |
34
+ | ---------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
35
+ | `critical` | Blocks progress — fundamental design flaw, missing required capability, or boundary violation | Missing entity ownership, overlapping CRUD with another module, broken state machine |
36
+ | `major` | Should fix — will likely cause issues downstream but not a design blocker | Missing standard ERP state, unclear dependency direction, incomplete business rules |
37
+ | `nit` | Nice to have — cosmetic, stylistic, or minor improvement suggestion | Naming convention preference, optional field suggestion, documentation wording improvement |
38
+
39
+ Verdict rule:
40
+
41
+ - **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
42
+ - **NEEDS CHANGES**: one or more `critical` or `major` findings
43
+
44
+ When verdict is APPROVED with nits, list the nits as informational notes — they do NOT block the review.
@@ -33,17 +33,15 @@ Use the extraction rules from:
33
33
  - [references/command-extraction.md](references/command-extraction.md) — write operations, business rules, error scenarios, process flows
34
34
  - [references/query-extraction.md](references/query-extraction.md) — read operations, lookups, aggregations, conversions
35
35
 
36
- Present consolidated plan to user:
36
+ Produce consolidated plan:
37
37
 
38
38
  - Models to create (with fields, relationships, states)
39
39
  - Commands to create (with business rules, error scenarios)
40
40
  - Queries to create (with inputs, outputs)
41
41
 
42
- Wait for user approval.
43
-
44
42
  ## Step 3: Scaffold & Populate
45
43
 
46
- After approval, scaffold using `erp-kit` CLI. **Names must be PascalCase** (see [naming convention](references/naming.md)):
44
+ Scaffold using `erp-kit` CLI. **Names must be PascalCase** (see [naming convention](references/naming.md)):
47
45
 
48
46
  ```bash
49
47
  erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
@@ -57,7 +57,14 @@ After ALL agents return:
57
57
  3. Merge all `inconsistencies[]` arrays into a single list
58
58
  4. Deduplicate: if two gaps share the same `source + target + check`, keep only one
59
59
  5. Calculate totals across all summaries
60
- 6. Render the final report below
60
+ 6. **Classify severity** — for each non-pass gap and inconsistency, the router assigns a severity based on the finding's `check`, `status`, and `detail`:
61
+ - `critical`: missing required doc, fundamental parity break — blocks progress
62
+ - `major`: incomplete coverage, missing business rules — should fix
63
+ - `nit`: minor naming inconsistency, optional improvement — does NOT block the review
64
+ 7. **Determine verdict**:
65
+ - **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
66
+ - **NEEDS CHANGES**: one or more `critical` or `major` findings
67
+ 8. Render the final report below
61
68
 
62
69
  ## Report Format
63
70
 
@@ -146,11 +153,20 @@ Render the aggregated results as markdown:
146
153
 
147
154
  ### 8. Recommendations
148
155
 
149
- Numbered list of actionable fixes, grouped by priority:
156
+ Numbered list of actionable fixes, grouped by severity:
150
157
 
151
- 1. Create missing docs (highest priority)
152
- 2. Add missing business rules / error scenarios
153
- 3. Resolve inconsistencies
158
+ 1. `critical` missing required docs, fundamental parity gaps (must fix)
159
+ 2. `major` missing business rules, incomplete error scenarios (should fix)
160
+ 3. `nit` — minor naming inconsistencies, optional improvements (informational only)
161
+
162
+ ### 9. Verdict
163
+
164
+ **Verdict: APPROVED / NEEDS CHANGES**
165
+
166
+ - If APPROVED with nits: "Review passed. The following nits are informational and do not block progress:" followed by the nit list.
167
+ - If NEEDS CHANGES: "Review requires changes. Fix all critical and major issues, then re-run the review."
168
+
169
+ Severity counts: `critical: N, major: N, nit: N`
154
170
 
155
171
  ## References
156
172
 
@@ -50,3 +50,18 @@ Cross-cutting issues found during the check that don't fit a single gap entry (e
50
50
  ### summary
51
51
 
52
52
  Aggregate counts. `total_checks = passed + failed + skipped`.
53
+
54
+ ## Router-Level Severity and Verdict
55
+
56
+ The router (SKILL.md Step 3) assigns severity to each non-pass finding after collecting all agent results. Agents do NOT assign severity — they only report `status` and `detail`.
57
+
58
+ The router classifies each finding as:
59
+
60
+ - `critical`: blocks progress — missing required doc, fundamental design mismatch
61
+ - `major`: should fix — incomplete coverage, unclear mapping, missing business rules
62
+ - `nit`: nice to have — minor naming inconsistency, optional doc improvement, cosmetic issue
63
+
64
+ Verdict rule:
65
+
66
+ - `APPROVED`: zero `critical` and zero `major` findings (nits only, or all pass)
67
+ - `NEEDS_CHANGES`: one or more `critical` or `major` findings
@@ -59,7 +59,14 @@ After ALL agents return:
59
59
  3. Merge all `inconsistencies[]` arrays into a single list
60
60
  4. Deduplicate: if two gaps share the same `source + target + check`, keep only one
61
61
  5. Calculate totals across all summaries
62
- 6. Render the final report below
62
+ 6. **Classify severity** — for each non-pass gap and inconsistency, the router assigns a severity based on the finding's `check`, `status`, and `detail`:
63
+ - `critical`: missing implementation of documented feature, broken doc-code contract — blocks progress
64
+ - `major`: incomplete implementation, missing test case for documented business rule — should fix
65
+ - `nit`: minor naming difference, optional JSDoc, cosmetic issue — does NOT block the review
66
+ 7. **Determine verdict**:
67
+ - **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
68
+ - **NEEDS CHANGES**: one or more `critical` or `major` findings
69
+ 8. Render the final report below
63
70
 
64
71
  ## Report Format
65
72
 
@@ -171,13 +178,20 @@ Render the aggregated results as markdown:
171
178
 
172
179
  ### 10. Recommendations
173
180
 
174
- Numbered list of actionable fixes, grouped by priority:
181
+ Numbered list of actionable fixes, grouped by severity:
175
182
 
176
- 1. Add missing model fields/states (highest priority)
177
- 2. Implement missing business rules
178
- 3. Define missing error classes (re-run `erp-kit module generate code -p <path>`)
179
- 4. Add missing test cases
180
- 5. Fix inconsistencies
183
+ 1. `critical` missing model fields/states, broken doc-code contract (must fix)
184
+ 2. `major` missing business rules, incomplete test coverage (should fix)
185
+ 3. `nit` minor naming differences, optional JSDoc, cosmetic issues (informational only)
186
+
187
+ ### 11. Verdict
188
+
189
+ **Verdict: APPROVED / NEEDS CHANGES**
190
+
191
+ - If APPROVED with nits: "Review passed. The following nits are informational and do not block progress:" followed by the nit list.
192
+ - If NEEDS CHANGES: "Review requires changes. Fix all critical and major issues, then re-run the review."
193
+
194
+ Severity counts: `critical: N, major: N, nit: N`
181
195
 
182
196
  ## References
183
197
 
@@ -50,3 +50,18 @@ Cross-cutting issues found during the check that don't fit a single gap entry (e
50
50
  ### summary
51
51
 
52
52
  Aggregate counts. `total_checks = passed + failed + skipped`.
53
+
54
+ ## Router-Level Severity and Verdict
55
+
56
+ The router (SKILL.md Step 3) assigns severity to each non-pass finding after collecting all agent results. Agents do NOT assign severity — they only report `status` and `detail`.
57
+
58
+ The router classifies each finding as:
59
+
60
+ - `critical`: blocks progress — missing implementation of documented feature, broken contract between doc and code
61
+ - `major`: should fix — incomplete implementation, missing test case for documented business rule
62
+ - `nit`: nice to have — minor naming difference, optional JSDoc improvement, cosmetic code style issue
63
+
64
+ Verdict rule:
65
+
66
+ - `APPROVED`: zero `critical` and zero `major` findings (nits only, or all pass)
67
+ - `NEEDS_CHANGES`: one or more `critical` or `major` findings
@@ -7,6 +7,10 @@ description: Shared references for erp-kit module skills. Not invoked directly
7
7
 
8
8
  Canonical reference files shared across module skills. Individual skills reference these instead of maintaining their own copies.
9
9
 
10
+ ## Design Philosophy
11
+
12
+ Modules are intentionally simple. Each module is a thin layer of domain logic over the database — avoid introducing unnecessary abstractions, deep inheritance hierarchies, or complex patterns. Over-engineering is actively harmful: it makes modules harder to understand, test, and maintain. When in doubt, choose the straightforward approach. A few lines of duplicated code is better than a premature abstraction.
13
+
10
14
  ## References
11
15
 
12
16
  - [Module structure](references/structure.md)
@@ -4,8 +4,9 @@ import { defineCommand, arg } from "politty";
4
4
  import { runCheck } from "../check";
5
5
  import { runSyncCheck, formatSyncCheckReport } from "../sync-check";
6
6
  import { runGenerateDoc, APP_DOC_TYPES, type DocType } from "../generate-doc";
7
- import { runGenerateAppCode } from "../../generator/generate-code";
7
+ import { runGenerateAppCode } from "../../generator/generate-app-code";
8
8
  import { runInitAppWithReadme } from "../init-module";
9
+ import { executeCommand, success, silentFailure } from "../lib/command-result";
9
10
 
10
11
  const cwd = process.cwd();
11
12
 
@@ -20,9 +21,11 @@ const checkCommand = defineCommand({
20
21
  name: "check",
21
22
  description: "Validate app docs against schemas",
22
23
  args: pathArgs,
23
- run: async (args) => {
24
- const exitCode = await runCheck({ appRoot: args.path }, cwd);
25
- process.exit(exitCode);
24
+ run: (args) => {
25
+ return executeCommand(async () => {
26
+ const exitCode = await runCheck({ appRoot: args.path }, cwd);
27
+ return exitCode === 0 ? success() : silentFailure(exitCode);
28
+ });
26
29
  },
27
30
  });
28
31
 
@@ -30,10 +33,12 @@ const syncCheckCommand = defineCommand({
30
33
  name: "sync-check",
31
34
  description: "Validate source <-> doc correspondence",
32
35
  args: pathArgs,
33
- run: async (args) => {
34
- const result = await runSyncCheck({ appRoot: args.path }, cwd);
35
- console.log(formatSyncCheckReport(result));
36
- process.exit(result.exitCode);
36
+ run: (args) => {
37
+ return executeCommand(async () => {
38
+ const result = await runSyncCheck({ appRoot: args.path }, cwd);
39
+ console.log(formatSyncCheckReport(result));
40
+ return result.exitCode === 0 ? success() : silentFailure(result.exitCode);
41
+ });
37
42
  },
38
43
  });
39
44
 
@@ -50,9 +55,11 @@ const initCommand = defineCommand({
50
55
  description: "Parent directory where the app will be created",
51
56
  }),
52
57
  }),
53
- run: async (args) => {
54
- const exitCode = await runInitAppWithReadme(args.name, args.dir, cwd);
55
- process.exit(exitCode);
58
+ run: (args) => {
59
+ return executeCommand(async () => {
60
+ const exitCode = await runInitAppWithReadme(args.name, args.dir, cwd);
61
+ return exitCode === 0 ? success() : silentFailure(exitCode);
62
+ });
56
63
  },
57
64
  });
58
65
 
@@ -69,9 +76,11 @@ const docCommand = defineCommand({
69
76
  description: "Item name (required for most types)",
70
77
  }),
71
78
  }),
72
- run: async (args) => {
73
- const exitCode = await runGenerateDoc(args.type as DocType, args.name, args.path, cwd);
74
- process.exit(exitCode);
79
+ run: (args) => {
80
+ return executeCommand(async () => {
81
+ const exitCode = await runGenerateDoc(args.type as DocType, args.name, args.path, cwd);
82
+ return exitCode === 0 ? success() : silentFailure(exitCode);
83
+ });
75
84
  },
76
85
  });
77
86
 
@@ -80,9 +89,11 @@ const codeCommand = defineCommand({
80
89
  description: "Generate boilerplate source files from docs",
81
90
  args: pathArgs,
82
91
  run: (args) => {
83
- const appPath = path.resolve(cwd, args.path);
84
- const exitCode = runGenerateAppCode(appPath);
85
- process.exit(exitCode);
92
+ return executeCommand(() => {
93
+ const appPath = path.resolve(cwd, args.path);
94
+ const exitCode = runGenerateAppCode(appPath);
95
+ return exitCode === 0 ? success() : silentFailure(exitCode);
96
+ });
86
97
  },
87
98
  });
88
99
 
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import { buildCheckTargets } from "./check";
2
+ import { buildCheckTargets } from "./lib/discovery";
3
3
 
4
4
  describe("buildCheckTargets", () => {
5
5
  it("generates module targets when modulesRoot is set", () => {
@@ -1,41 +1,8 @@
1
1
  import { runMdschema } from "../mdschema";
2
2
  import { ALL_SCHEMAS } from "../schemas";
3
- export interface CheckTarget {
4
- glob: string;
5
- schemaKey: string;
6
- }
7
-
8
- export function buildCheckTargets(config: {
9
- modulesRoot?: string;
10
- appRoot?: string;
11
- }): CheckTarget[] {
12
- const targets: CheckTarget[] = [];
13
-
14
- if (config.modulesRoot) {
15
- const m = config.modulesRoot;
16
- targets.push(
17
- { glob: `${m}/[a-zA-Z]*/docs/features/*.md`, schemaKey: "feature" },
18
- { glob: `${m}/[a-zA-Z]*/docs/commands/*.md`, schemaKey: "command" },
19
- { glob: `${m}/[a-zA-Z]*/docs/models/*.md`, schemaKey: "model" },
20
- { glob: `${m}/[a-zA-Z]*/docs/queries/*.md`, schemaKey: "query" },
21
- { glob: `${m}/[a-zA-Z]*/README.md`, schemaKey: "module" },
22
- );
23
- }
3
+ import { buildCheckTargets } from "./lib/discovery";
24
4
 
25
- if (config.appRoot) {
26
- const a = config.appRoot;
27
- targets.push(
28
- { glob: `${a}/[a-zA-Z]*/README.md`, schemaKey: "app" },
29
- { glob: `${a}/[a-zA-Z]*/docs/actors/*.md`, schemaKey: "actors" },
30
- { glob: `${a}/[a-zA-Z]*/docs/business-flow/*/README.md`, schemaKey: "business-flow" },
31
- { glob: `${a}/[a-zA-Z]*/docs/business-flow/*/story/*.md`, schemaKey: "story" },
32
- { glob: `${a}/[a-zA-Z]*/docs/screen/*.md`, schemaKey: "screen" },
33
- { glob: `${a}/[a-zA-Z]*/docs/resolver/*.md`, schemaKey: "resolver" },
34
- );
35
- }
36
-
37
- return targets;
38
- }
5
+ export type { CheckTarget } from "./lib/discovery";
39
6
 
40
7
  export async function runCheck(
41
8
  config: { modulesRoot?: string; appRoot?: string },
@@ -0,0 +1,83 @@
1
+ import { z } from "zod";
2
+ import { defineCommand, arg } from "politty";
3
+ import { executeCommand, success, silentFailure } from "../lib/command-result";
4
+ import { runDocModules } from "./modules";
5
+ import { runDocModule } from "./module";
6
+ import { runDocSearch } from "./search";
7
+
8
+ const formatArg = arg(z.enum(["text", "json"]).default("text"), {
9
+ alias: "f",
10
+ description: "Output format (text or json)",
11
+ });
12
+
13
+ const modulesCommand = defineCommand({
14
+ name: "modules",
15
+ description: "List all modules with capabilities overview",
16
+ args: z.object({
17
+ format: formatArg,
18
+ }),
19
+ run: (args) => {
20
+ return executeCommand(() => {
21
+ const exitCode = runDocModules(args.format);
22
+ return exitCode === 0 ? success() : silentFailure(exitCode);
23
+ });
24
+ },
25
+ });
26
+
27
+ const moduleCommand = defineCommand({
28
+ name: "module",
29
+ description: "Show documentation for a specific module",
30
+ args: z.object({
31
+ name: arg(z.string(), {
32
+ positional: true,
33
+ description: "Module name",
34
+ }),
35
+ type: arg(z.string().optional(), {
36
+ positional: true,
37
+ description: "Doc type (command, query, model, feature)",
38
+ }),
39
+ docName: arg(z.string().optional(), {
40
+ positional: true,
41
+ description: "Doc name",
42
+ }),
43
+ format: formatArg,
44
+ }),
45
+ run: (args) => {
46
+ return executeCommand(() => {
47
+ const exitCode = runDocModule(args.name, args.type, args.docName, args.format);
48
+ return exitCode === 0 ? success() : silentFailure(exitCode);
49
+ });
50
+ },
51
+ });
52
+
53
+ const searchCommand = defineCommand({
54
+ name: "search",
55
+ description: "Search across all module documentation",
56
+ args: z.object({
57
+ query: arg(z.string(), {
58
+ positional: true,
59
+ description: "Search query",
60
+ }),
61
+ type: arg(z.string().optional(), {
62
+ alias: "t",
63
+ description: "Filter by doc type (command, query, model, feature, readme)",
64
+ }),
65
+ format: formatArg,
66
+ }),
67
+ run: (args) => {
68
+ return executeCommand(() => {
69
+ const exitCode = runDocSearch(args.query, args.type, args.format);
70
+ return exitCode === 0 ? success() : silentFailure(exitCode);
71
+ });
72
+ },
73
+ });
74
+
75
+ export const docCommand = defineCommand({
76
+ name: "doc",
77
+ description: "Browse module documentation",
78
+ subCommands: {
79
+ modules: modulesCommand,
80
+ module: moduleCommand,
81
+ search: searchCommand,
82
+ },
83
+ });