@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.
- package/CHANGELOG.md +21 -0
- package/README.md +35 -7
- package/dist/cli.mjs +779 -268
- package/package.json +5 -4
- package/skills/erp-kit-app-1-requirements/SKILL.md +8 -9
- package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +4 -0
- package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +4 -0
- package/skills/erp-kit-app-3-plan/SKILL.md +27 -27
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +21 -17
- package/skills/erp-kit-app-3-plan/references/screen-extraction.md +15 -1
- package/skills/erp-kit-app-3-plan/references/story-extraction.md +8 -2
- package/skills/erp-kit-app-5-impl-backend/SKILL.md +9 -11
- package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -22
- package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +0 -1
- package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +13 -4
- package/skills/erp-kit-app-6-impl-frontend/SKILL.md +5 -0
- package/skills/erp-kit-app-6-impl-frontend/references/pages.md +16 -46
- package/skills/erp-kit-app-7-impl-review/SKILL.md +13 -11
- package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +16 -17
- package/skills/erp-kit-module-1-requirements/SKILL.md +6 -12
- package/skills/erp-kit-module-2-requirements-review/SKILL.md +21 -5
- package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +19 -0
- package/skills/erp-kit-module-3-plan/SKILL.md +2 -4
- package/skills/erp-kit-module-4-plan-review/SKILL.md +21 -5
- package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +15 -0
- package/skills/erp-kit-module-6-impl-review/SKILL.md +21 -7
- package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +15 -0
- package/skills/erp-kit-module-shared/SKILL.md +4 -0
- package/src/commands/app/index.ts +28 -17
- package/src/commands/check.test.ts +1 -1
- package/src/commands/check.ts +2 -35
- package/src/commands/doc/index.ts +83 -0
- package/src/commands/doc/module.test.ts +119 -0
- package/src/commands/doc/module.ts +114 -0
- package/src/commands/doc/modules.test.ts +103 -0
- package/src/commands/doc/modules.ts +98 -0
- package/src/commands/doc/search.test.ts +94 -0
- package/src/commands/doc/search.ts +111 -0
- package/src/commands/generate-doc.ts +17 -10
- package/src/commands/index.ts +20 -8
- package/src/commands/lib/command-result.ts +30 -0
- package/src/commands/lib/discovery.test.ts +74 -0
- package/src/commands/lib/discovery.ts +106 -0
- package/src/commands/lib/paths.ts +22 -0
- package/src/commands/lib/sync-check-source.test.ts +197 -0
- package/src/commands/lib/sync-check-source.ts +100 -0
- package/src/commands/lib/sync-check-tests.test.ts +178 -0
- package/src/commands/lib/sync-check-tests.ts +69 -0
- package/src/commands/mock/index.ts +11 -6
- package/src/commands/module/generate.ts +13 -8
- package/src/commands/module/index.ts +17 -21
- package/src/commands/parse-doc-test-cases.ts +13 -2
- package/src/commands/sync-check.test.ts +6 -364
- package/src/commands/sync-check.ts +7 -251
- package/src/generator/generate-app-code.test.ts +121 -0
- package/src/generator/generate-app-code.ts +51 -0
- package/src/generator/generate-code-boilerplate.test.ts +1 -1
- package/src/generator/generate-code.test.ts +33 -6
- package/src/generator/generate-code.ts +12 -226
- package/src/generator/generate-errors.ts +34 -0
- package/src/generator/generate-permissions.ts +12 -0
- package/src/generator/generate-shells.ts +28 -0
- package/src/generator/generate-stubs.ts +31 -0
- package/src/generator/parse-resolver-doc.test.ts +89 -0
- package/src/generator/parse-resolver-doc.ts +125 -0
- package/src/generator/scaffold.ts +57 -0
- package/src/generator/stub-templates.test.ts +55 -0
- package/src/generator/stub-templates.ts +145 -0
- package/src/modules/audit/README.md +46 -0
- package/src/modules/audit/command/activateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/activateAuditPolicy.test.ts +186 -0
- package/src/modules/audit/command/activateAuditPolicy.ts +97 -0
- package/src/modules/audit/command/createAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/createAuditPolicy.test.ts +395 -0
- package/src/modules/audit/command/createAuditPolicy.ts +131 -0
- package/src/modules/audit/command/deactivateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/deactivateAuditPolicy.test.ts +138 -0
- package/src/modules/audit/command/deactivateAuditPolicy.ts +58 -0
- package/src/modules/audit/command/deleteAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/deleteAuditPolicy.test.ts +121 -0
- package/src/modules/audit/command/deleteAuditPolicy.ts +52 -0
- package/src/modules/audit/command/logAuditEvent.generated.ts +6 -0
- package/src/modules/audit/command/logAuditEvent.test.ts +991 -0
- package/src/modules/audit/command/logAuditEvent.ts +357 -0
- package/src/modules/audit/command/reactivateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/reactivateAuditPolicy.test.ts +143 -0
- package/src/modules/audit/command/reactivateAuditPolicy.ts +79 -0
- package/src/modules/audit/command/registerAuditableEntity.generated.ts +6 -0
- package/src/modules/audit/command/registerAuditableEntity.test.ts +268 -0
- package/src/modules/audit/command/registerAuditableEntity.ts +94 -0
- package/src/modules/audit/command/replaceAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/replaceAuditPolicy.test.ts +242 -0
- package/src/modules/audit/command/replaceAuditPolicy.ts +91 -0
- package/src/modules/audit/command/updateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/updateAuditPolicy.test.ts +284 -0
- package/src/modules/audit/command/updateAuditPolicy.ts +151 -0
- package/src/modules/audit/db/auditEntry.ts +47 -0
- package/src/modules/audit/db/auditPolicy.ts +33 -0
- package/src/modules/audit/db/auditableEntity.ts +22 -0
- package/src/modules/audit/db/changeDetail.ts +28 -0
- package/src/modules/audit/db/policyFieldRule.ts +23 -0
- package/src/modules/audit/docs/commands/ActivateAuditPolicy.md +69 -0
- package/src/modules/audit/docs/commands/CreateAuditPolicy.md +79 -0
- package/src/modules/audit/docs/commands/DeactivateAuditPolicy.md +55 -0
- package/src/modules/audit/docs/commands/DeleteAuditPolicy.md +55 -0
- package/src/modules/audit/docs/commands/LogAuditEvent.md +137 -0
- package/src/modules/audit/docs/commands/ReactivateAuditPolicy.md +58 -0
- package/src/modules/audit/docs/commands/RegisterAuditableEntity.md +62 -0
- package/src/modules/audit/docs/commands/ReplaceAuditPolicy.md +72 -0
- package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +77 -0
- package/src/modules/audit/docs/features/audit-event-logging.md +126 -0
- package/src/modules/audit/docs/features/audit-policy-configuration.md +135 -0
- package/src/modules/audit/docs/features/field-level-change-tracking.md +95 -0
- package/src/modules/audit/docs/models/AuditEntry.md +55 -0
- package/src/modules/audit/docs/models/AuditPolicy.md +79 -0
- package/src/modules/audit/docs/models/AuditableEntity.md +38 -0
- package/src/modules/audit/docs/models/ChangeDetail.md +55 -0
- package/src/modules/audit/docs/models/PolicyFieldRule.md +45 -0
- package/src/modules/audit/docs/queries/GetAuditEntry.md +49 -0
- package/src/modules/audit/docs/queries/GetAuditPolicy.md +54 -0
- package/src/modules/audit/docs/queries/GetAuditSummary.md +84 -0
- package/src/modules/audit/docs/queries/GetChangeDetails.md +56 -0
- package/src/modules/audit/docs/queries/ListAuditPolicies.md +58 -0
- package/src/modules/audit/docs/queries/SearchAuditEntries.md +91 -0
- package/src/modules/audit/generated/kysely-tailordb.ts +92 -0
- package/src/modules/audit/index.ts +2 -0
- package/src/modules/audit/lib/_db_deps.ts +13 -0
- package/src/modules/audit/lib/errors.generated.ts +120 -0
- package/src/modules/audit/lib/permissions.generated.ts +14 -0
- package/src/modules/audit/lib/types.ts +28 -0
- package/src/modules/audit/module.ts +57 -0
- package/src/modules/audit/permissions.ts +39 -0
- package/src/modules/audit/query/getAuditEntry.generated.ts +5 -0
- package/src/modules/audit/query/getAuditEntry.test.ts +123 -0
- package/src/modules/audit/query/getAuditEntry.ts +36 -0
- package/src/modules/audit/query/getAuditPolicy.generated.ts +5 -0
- package/src/modules/audit/query/getAuditPolicy.test.ts +169 -0
- package/src/modules/audit/query/getAuditPolicy.ts +42 -0
- package/src/modules/audit/query/getAuditSummary.generated.ts +5 -0
- package/src/modules/audit/query/getAuditSummary.test.ts +632 -0
- package/src/modules/audit/query/getAuditSummary.ts +164 -0
- package/src/modules/audit/query/getChangeDetails.generated.ts +5 -0
- package/src/modules/audit/query/getChangeDetails.test.ts +195 -0
- package/src/modules/audit/query/getChangeDetails.ts +42 -0
- package/src/modules/audit/query/listAuditPolicies.generated.ts +5 -0
- package/src/modules/audit/query/listAuditPolicies.test.ts +239 -0
- package/src/modules/audit/query/listAuditPolicies.ts +100 -0
- package/src/modules/audit/query/searchAuditEntries.generated.ts +5 -0
- package/src/modules/audit/query/searchAuditEntries.test.ts +424 -0
- package/src/modules/audit/query/searchAuditEntries.ts +121 -0
- package/src/modules/audit/tailor.config.ts +13 -0
- package/src/modules/audit/tailor.d.ts +13 -0
- package/src/modules/audit/testing/fixtures.ts +215 -0
- package/src/modules/business-partner/README.md +60 -0
- package/src/modules/business-partner/command/.gitkeep +0 -0
- package/src/modules/business-partner/command/activatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/activatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/activatePartner.ts +45 -0
- package/src/modules/business-partner/command/assignRoleToPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/assignRoleToPartner.test.ts +113 -0
- package/src/modules/business-partner/command/assignRoleToPartner.ts +72 -0
- package/src/modules/business-partner/command/createContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/createContactPerson.test.ts +193 -0
- package/src/modules/business-partner/command/createContactPerson.ts +98 -0
- package/src/modules/business-partner/command/createPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartner.test.ts +179 -0
- package/src/modules/business-partner/command/createPartner.ts +83 -0
- package/src/modules/business-partner/command/createPartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerAddress.test.ts +195 -0
- package/src/modules/business-partner/command/createPartnerAddress.ts +119 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.test.ts +297 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.ts +114 -0
- package/src/modules/business-partner/command/createPartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerIdentification.test.ts +255 -0
- package/src/modules/business-partner/command/createPartnerIdentification.ts +97 -0
- package/src/modules/business-partner/command/deactivateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/deactivateContactPerson.test.ts +70 -0
- package/src/modules/business-partner/command/deactivateContactPerson.ts +54 -0
- package/src/modules/business-partner/command/deactivatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/deactivatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/deactivatePartner.ts +46 -0
- package/src/modules/business-partner/command/deleteContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/deleteContactPerson.test.ts +61 -0
- package/src/modules/business-partner/command/deleteContactPerson.ts +48 -0
- package/src/modules/business-partner/command/deletePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartner.test.ts +58 -0
- package/src/modules/business-partner/command/deletePartner.ts +46 -0
- package/src/modules/business-partner/command/deletePartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerAddress.test.ts +74 -0
- package/src/modules/business-partner/command/deletePartnerAddress.ts +52 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.test.ts +55 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.ts +36 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.test.ts +47 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.ts +37 -0
- package/src/modules/business-partner/command/reactivateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/reactivateContactPerson.test.ts +48 -0
- package/src/modules/business-partner/command/reactivateContactPerson.ts +48 -0
- package/src/modules/business-partner/command/reactivatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/reactivatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/reactivatePartner.ts +46 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.test.ts +82 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.ts +73 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.test.ts +60 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.ts +48 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.test.ts +56 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.ts +51 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.test.ts +63 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.ts +55 -0
- package/src/modules/business-partner/command/updateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/updateContactPerson.test.ts +193 -0
- package/src/modules/business-partner/command/updateContactPerson.ts +92 -0
- package/src/modules/business-partner/command/updatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartner.test.ts +101 -0
- package/src/modules/business-partner/command/updatePartner.ts +76 -0
- package/src/modules/business-partner/command/updatePartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerAddress.test.ts +148 -0
- package/src/modules/business-partner/command/updatePartnerAddress.ts +64 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.test.ts +249 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.ts +109 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.test.ts +162 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.ts +105 -0
- package/src/modules/business-partner/db/.gitkeep +0 -0
- package/src/modules/business-partner/db/businessPartner.ts +59 -0
- package/src/modules/business-partner/db/contactPerson.ts +49 -0
- package/src/modules/business-partner/db/partnerAddress.ts +45 -0
- package/src/modules/business-partner/db/partnerBankAccount.ts +53 -0
- package/src/modules/business-partner/db/partnerIdentification.ts +53 -0
- package/src/modules/business-partner/db/partnerRole.ts +43 -0
- package/src/modules/business-partner/docs/commands/ActivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/AssignRoleToPartner.md +49 -0
- package/src/modules/business-partner/docs/commands/CreateContactPerson.md +59 -0
- package/src/modules/business-partner/docs/commands/CreatePartner.md +54 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerAddress.md +60 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerBankAccount.md +68 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerIdentification.md +59 -0
- package/src/modules/business-partner/docs/commands/DeactivateContactPerson.md +42 -0
- package/src/modules/business-partner/docs/commands/DeactivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/DeleteContactPerson.md +43 -0
- package/src/modules/business-partner/docs/commands/DeletePartner.md +40 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerAddress.md +40 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerBankAccount.md +35 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerIdentification.md +33 -0
- package/src/modules/business-partner/docs/commands/ReactivateContactPerson.md +38 -0
- package/src/modules/business-partner/docs/commands/ReactivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/RemoveRoleFromPartner.md +46 -0
- package/src/modules/business-partner/docs/commands/SetDefaultPartnerAddress.md +38 -0
- package/src/modules/business-partner/docs/commands/SetDefaultPartnerBankAccount.md +38 -0
- package/src/modules/business-partner/docs/commands/SetPrimaryContactPerson.md +43 -0
- package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +66 -0
- package/src/modules/business-partner/docs/commands/UpdatePartner.md +48 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +46 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerBankAccount.md +64 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +52 -0
- package/src/modules/business-partner/docs/features/contact-person-management.md +70 -0
- package/src/modules/business-partner/docs/features/partner-address-management.md +96 -0
- package/src/modules/business-partner/docs/features/partner-bank-account.md +70 -0
- package/src/modules/business-partner/docs/features/partner-identification.md +76 -0
- package/src/modules/business-partner/docs/features/partner-lifecycle.md +59 -0
- package/src/modules/business-partner/docs/features/partner-role-classification.md +73 -0
- package/src/modules/business-partner/docs/models/BusinessPartner.md +64 -0
- package/src/modules/business-partner/docs/models/ContactPerson.md +62 -0
- package/src/modules/business-partner/docs/models/PartnerAddress.md +52 -0
- package/src/modules/business-partner/docs/models/PartnerBankAccount.md +50 -0
- package/src/modules/business-partner/docs/models/PartnerIdentification.md +46 -0
- package/src/modules/business-partner/docs/models/PartnerRole.md +42 -0
- package/src/modules/business-partner/docs/queries/GetContactPerson.md +34 -0
- package/src/modules/business-partner/docs/queries/GetDefaultPartnerAddress.md +40 -0
- package/src/modules/business-partner/docs/queries/GetDefaultPartnerBankAccount.md +36 -0
- package/src/modules/business-partner/docs/queries/GetPartner.md +35 -0
- package/src/modules/business-partner/docs/queries/GetPartnerAddress.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerBankAccount.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerIdentification.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerRole.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPrimaryContactPerson.md +36 -0
- package/src/modules/business-partner/docs/queries/ListContactPersonsByPartner.md +39 -0
- package/src/modules/business-partner/docs/queries/ListPartnerAddressesByPartner.md +41 -0
- package/src/modules/business-partner/docs/queries/ListPartnerBankAccountsByPartner.md +39 -0
- package/src/modules/business-partner/docs/queries/ListPartnerIdentificationsByPartner.md +41 -0
- package/src/modules/business-partner/docs/queries/ListPartnersByRole.md +47 -0
- package/src/modules/business-partner/executor/.gitkeep +0 -0
- package/src/modules/business-partner/generated/.gitkeep +0 -0
- package/src/modules/business-partner/generated/enums.ts +60 -0
- package/src/modules/business-partner/generated/kysely-tailordb.ts +114 -0
- package/src/modules/business-partner/index.ts +2 -0
- package/src/modules/business-partner/lib/_db_deps.ts +17 -0
- package/src/modules/business-partner/lib/errors.generated.ts +172 -0
- package/src/modules/business-partner/lib/errors.ts +2 -0
- package/src/modules/business-partner/lib/permissions.generated.ts +30 -0
- package/src/modules/business-partner/lib/types.ts +53 -0
- package/src/modules/business-partner/module.ts +181 -0
- package/src/modules/business-partner/permissions.ts +3 -0
- package/src/modules/business-partner/query/.gitkeep +0 -0
- package/src/modules/business-partner/query/getContactPerson.generated.ts +5 -0
- package/src/modules/business-partner/query/getContactPerson.test.ts +31 -0
- package/src/modules/business-partner/query/getContactPerson.ts +16 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.generated.ts +5 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.test.ts +45 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.ts +30 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.generated.ts +5 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.test.ts +43 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.ts +17 -0
- package/src/modules/business-partner/query/getPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartner.test.ts +31 -0
- package/src/modules/business-partner/query/getPartner.ts +16 -0
- package/src/modules/business-partner/query/getPartnerAddress.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerAddress.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerAddress.ts +16 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.ts +16 -0
- package/src/modules/business-partner/query/getPartnerIdentification.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerIdentification.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerIdentification.ts +16 -0
- package/src/modules/business-partner/query/getPartnerRole.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerRole.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerRole.ts +19 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.generated.ts +5 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.test.ts +43 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.ts +17 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.test.ts +77 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.ts +32 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.test.ts +71 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.ts +37 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.test.ts +59 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.ts +32 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.test.ts +72 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.ts +40 -0
- package/src/modules/business-partner/query/listPartnersByRole.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnersByRole.test.ts +103 -0
- package/src/modules/business-partner/query/listPartnersByRole.ts +47 -0
- package/src/modules/business-partner/tailor.config.ts +13 -0
- package/src/modules/business-partner/tailor.d.ts +13 -0
- package/src/modules/business-partner/testing/fixtures.ts +204 -0
- package/src/modules/coa-management/README.md +61 -0
- package/src/modules/coa-management/command/.gitkeep +0 -0
- package/src/modules/coa-management/command/activateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/activateAccount.test.ts +125 -0
- package/src/modules/coa-management/command/activateAccount.ts +105 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.test.ts +113 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.ts +104 -0
- package/src/modules/coa-management/command/createAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/createAccount.test.ts +767 -0
- package/src/modules/coa-management/command/createAccount.ts +247 -0
- package/src/modules/coa-management/command/createAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/createAccountGroup.test.ts +494 -0
- package/src/modules/coa-management/command/createAccountGroup.ts +207 -0
- package/src/modules/coa-management/command/createChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/createChartOfAccounts.test.ts +502 -0
- package/src/modules/coa-management/command/createChartOfAccounts.ts +267 -0
- package/src/modules/coa-management/command/deactivateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/deactivateAccount.test.ts +199 -0
- package/src/modules/coa-management/command/deactivateAccount.ts +142 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.test.ts +91 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.ts +88 -0
- package/src/modules/coa-management/command/deleteAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteAccount.test.ts +122 -0
- package/src/modules/coa-management/command/deleteAccount.ts +103 -0
- package/src/modules/coa-management/command/deleteAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteAccountGroup.test.ts +120 -0
- package/src/modules/coa-management/command/deleteAccountGroup.ts +113 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.test.ts +154 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.ts +133 -0
- package/src/modules/coa-management/command/moveAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/moveAccountGroup.test.ts +199 -0
- package/src/modules/coa-management/command/moveAccountGroup.ts +145 -0
- package/src/modules/coa-management/command/reactivateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/reactivateAccount.test.ts +126 -0
- package/src/modules/coa-management/command/reactivateAccount.ts +123 -0
- package/src/modules/coa-management/command/updateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/updateAccount.test.ts +669 -0
- package/src/modules/coa-management/command/updateAccount.ts +370 -0
- package/src/modules/coa-management/command/updateAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/updateAccountGroup.test.ts +253 -0
- package/src/modules/coa-management/command/updateAccountGroup.ts +191 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.test.ts +153 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.ts +133 -0
- package/src/modules/coa-management/db/.gitkeep +0 -0
- package/src/modules/coa-management/db/account.ts +119 -0
- package/src/modules/coa-management/db/accountGroup.ts +57 -0
- package/src/modules/coa-management/db/chartOfAccounts.ts +55 -0
- package/src/modules/coa-management/docs/commands/ActivateAccount.md +49 -0
- package/src/modules/coa-management/docs/commands/ActivateChartOfAccounts.md +47 -0
- package/src/modules/coa-management/docs/commands/CreateAccount.md +94 -0
- package/src/modules/coa-management/docs/commands/CreateAccountGroup.md +70 -0
- package/src/modules/coa-management/docs/commands/CreateChartOfAccounts.md +72 -0
- package/src/modules/coa-management/docs/commands/DeactivateAccount.md +65 -0
- package/src/modules/coa-management/docs/commands/DeactivateChartOfAccounts.md +44 -0
- package/src/modules/coa-management/docs/commands/DeleteAccount.md +52 -0
- package/src/modules/coa-management/docs/commands/DeleteAccountGroup.md +50 -0
- package/src/modules/coa-management/docs/commands/DeleteChartOfAccounts.md +48 -0
- package/src/modules/coa-management/docs/commands/MoveAccountGroup.md +57 -0
- package/src/modules/coa-management/docs/commands/ReactivateAccount.md +50 -0
- package/src/modules/coa-management/docs/commands/UpdateAccount.md +102 -0
- package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +62 -0
- package/src/modules/coa-management/docs/commands/UpdateChartOfAccounts.md +49 -0
- package/src/modules/coa-management/docs/features/account-group-hierarchy.md +81 -0
- package/src/modules/coa-management/docs/features/account-lifecycle.md +80 -0
- package/src/modules/coa-management/docs/features/account-management.md +114 -0
- package/src/modules/coa-management/docs/features/chart-of-accounts-setup.md +86 -0
- package/src/modules/coa-management/docs/models/Account.md +84 -0
- package/src/modules/coa-management/docs/models/AccountGroup.md +55 -0
- package/src/modules/coa-management/docs/models/ChartOfAccounts.md +65 -0
- package/src/modules/coa-management/docs/queries/DetectCircularReference.md +52 -0
- package/src/modules/coa-management/docs/queries/GetAccount.md +42 -0
- package/src/modules/coa-management/docs/queries/GetAccountGroup.md +42 -0
- package/src/modules/coa-management/docs/queries/GetChartOfAccounts.md +48 -0
- package/src/modules/coa-management/docs/queries/ListAccountGroups.md +42 -0
- package/src/modules/coa-management/docs/queries/ListAccounts.md +54 -0
- package/src/modules/coa-management/docs/queries/ListUnassignedAccounts.md +40 -0
- package/src/modules/coa-management/executor/.gitkeep +0 -0
- package/src/modules/coa-management/generated/.gitkeep +0 -0
- package/src/modules/coa-management/generated/enums.ts +45 -0
- package/src/modules/coa-management/generated/kysely-tailordb.ts +81 -0
- package/src/modules/coa-management/index.ts +2 -0
- package/src/modules/coa-management/lib/_db_deps.ts +17 -0
- package/src/modules/coa-management/lib/errors.generated.ts +162 -0
- package/src/modules/coa-management/lib/errors.ts +0 -0
- package/src/modules/coa-management/lib/permissions.generated.ts +20 -0
- package/src/modules/coa-management/lib/types.ts +22 -0
- package/src/modules/coa-management/module.ts +136 -0
- package/src/modules/coa-management/permissions.ts +3 -0
- package/src/modules/coa-management/query/.gitkeep +0 -0
- package/src/modules/coa-management/query/detectCircularReference.generated.ts +5 -0
- package/src/modules/coa-management/query/detectCircularReference.test.ts +88 -0
- package/src/modules/coa-management/query/detectCircularReference.ts +46 -0
- package/src/modules/coa-management/query/getAccount.generated.ts +5 -0
- package/src/modules/coa-management/query/getAccount.test.ts +55 -0
- package/src/modules/coa-management/query/getAccount.ts +25 -0
- package/src/modules/coa-management/query/getAccountGroup.generated.ts +5 -0
- package/src/modules/coa-management/query/getAccountGroup.test.ts +55 -0
- package/src/modules/coa-management/query/getAccountGroup.ts +25 -0
- package/src/modules/coa-management/query/getChartOfAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/getChartOfAccounts.test.ts +79 -0
- package/src/modules/coa-management/query/getChartOfAccounts.ts +28 -0
- package/src/modules/coa-management/query/listAccountGroups.generated.ts +5 -0
- package/src/modules/coa-management/query/listAccountGroups.test.ts +72 -0
- package/src/modules/coa-management/query/listAccountGroups.ts +49 -0
- package/src/modules/coa-management/query/listAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/listAccounts.test.ts +136 -0
- package/src/modules/coa-management/query/listAccounts.ts +82 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.test.ts +96 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.ts +39 -0
- package/src/modules/coa-management/tailor.config.ts +13 -0
- package/src/modules/coa-management/tailor.d.ts +13 -0
- package/src/modules/coa-management/testing/fixtures.ts +201 -0
- package/src/modules/item-management/README.md +1 -1
- package/src/modules/organization/README.md +57 -0
- package/src/modules/organization/command/.gitkeep +0 -0
- package/src/modules/organization/command/activateCompany.generated.ts +6 -0
- package/src/modules/organization/command/activateCompany.test.ts +184 -0
- package/src/modules/organization/command/activateCompany.ts +92 -0
- package/src/modules/organization/command/createCompany.generated.ts +6 -0
- package/src/modules/organization/command/createCompany.test.ts +156 -0
- package/src/modules/organization/command/createCompany.ts +80 -0
- package/src/modules/organization/command/createDepartment.generated.ts +6 -0
- package/src/modules/organization/command/createDepartment.test.ts +239 -0
- package/src/modules/organization/command/createDepartment.ts +98 -0
- package/src/modules/organization/command/createSite.generated.ts +6 -0
- package/src/modules/organization/command/createSite.test.ts +262 -0
- package/src/modules/organization/command/createSite.ts +155 -0
- package/src/modules/organization/command/deactivateCompany.generated.ts +6 -0
- package/src/modules/organization/command/deactivateCompany.test.ts +58 -0
- package/src/modules/organization/command/deactivateCompany.ts +47 -0
- package/src/modules/organization/command/deactivateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/deactivateDepartment.test.ts +115 -0
- package/src/modules/organization/command/deactivateDepartment.ts +63 -0
- package/src/modules/organization/command/deactivateSite.generated.ts +6 -0
- package/src/modules/organization/command/deactivateSite.test.ts +53 -0
- package/src/modules/organization/command/deactivateSite.ts +47 -0
- package/src/modules/organization/command/deleteCompany.generated.ts +6 -0
- package/src/modules/organization/command/deleteCompany.test.ts +99 -0
- package/src/modules/organization/command/deleteCompany.ts +66 -0
- package/src/modules/organization/command/reactivateCompany.generated.ts +6 -0
- package/src/modules/organization/command/reactivateCompany.test.ts +58 -0
- package/src/modules/organization/command/reactivateCompany.ts +47 -0
- package/src/modules/organization/command/reactivateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/reactivateDepartment.test.ts +59 -0
- package/src/modules/organization/command/reactivateDepartment.ts +47 -0
- package/src/modules/organization/command/reactivateSite.generated.ts +6 -0
- package/src/modules/organization/command/reactivateSite.test.ts +53 -0
- package/src/modules/organization/command/reactivateSite.ts +47 -0
- package/src/modules/organization/command/updateCompany.generated.ts +6 -0
- package/src/modules/organization/command/updateCompany.test.ts +239 -0
- package/src/modules/organization/command/updateCompany.ts +127 -0
- package/src/modules/organization/command/updateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/updateDepartment.test.ts +232 -0
- package/src/modules/organization/command/updateDepartment.ts +120 -0
- package/src/modules/organization/command/updateSite.generated.ts +6 -0
- package/src/modules/organization/command/updateSite.test.ts +274 -0
- package/src/modules/organization/command/updateSite.ts +176 -0
- package/src/modules/organization/db/.gitkeep +0 -0
- package/src/modules/organization/db/company.ts +44 -0
- package/src/modules/organization/db/department.ts +46 -0
- package/src/modules/organization/db/site.ts +44 -0
- package/src/modules/organization/docs/commands/ActivateCompany.md +62 -0
- package/src/modules/organization/docs/commands/CreateCompany.md +49 -0
- package/src/modules/organization/docs/commands/CreateDepartment.md +62 -0
- package/src/modules/organization/docs/commands/CreateSite.md +74 -0
- package/src/modules/organization/docs/commands/DeactivateCompany.md +40 -0
- package/src/modules/organization/docs/commands/DeactivateDepartment.md +44 -0
- package/src/modules/organization/docs/commands/DeactivateSite.md +38 -0
- package/src/modules/organization/docs/commands/DeleteCompany.md +50 -0
- package/src/modules/organization/docs/commands/ReactivateCompany.md +39 -0
- package/src/modules/organization/docs/commands/ReactivateDepartment.md +37 -0
- package/src/modules/organization/docs/commands/ReactivateSite.md +37 -0
- package/src/modules/organization/docs/commands/UpdateCompany.md +58 -0
- package/src/modules/organization/docs/commands/UpdateDepartment.md +64 -0
- package/src/modules/organization/docs/commands/UpdateSite.md +80 -0
- package/src/modules/organization/docs/features/company-lifecycle.md +76 -0
- package/src/modules/organization/docs/features/department-management.md +66 -0
- package/src/modules/organization/docs/features/site-management.md +86 -0
- package/src/modules/organization/docs/models/Company.md +60 -0
- package/src/modules/organization/docs/models/Department.md +57 -0
- package/src/modules/organization/docs/models/Site.md +57 -0
- package/src/modules/organization/docs/queries/DetectDepartmentCircularReference.md +50 -0
- package/src/modules/organization/docs/queries/GetCompany.md +40 -0
- package/src/modules/organization/docs/queries/GetDepartment.md +44 -0
- package/src/modules/organization/docs/queries/GetDepartmentChildren.md +40 -0
- package/src/modules/organization/docs/queries/GetSite.md +37 -0
- package/src/modules/organization/docs/queries/ListDepartmentsByCompany.md +54 -0
- package/src/modules/organization/docs/queries/ListSitesByCompany.md +54 -0
- package/src/modules/organization/executor/.gitkeep +0 -0
- package/src/modules/organization/generated/.gitkeep +0 -0
- package/src/modules/organization/generated/kysely-tailordb.ts +77 -0
- package/src/modules/organization/index.ts +2 -0
- package/src/modules/organization/lib/_db_deps.ts +10 -0
- package/src/modules/organization/lib/errors.generated.ts +117 -0
- package/src/modules/organization/lib/errors.ts +1 -0
- package/src/modules/organization/lib/permissions.generated.ts +19 -0
- package/src/modules/organization/lib/types.ts +16 -0
- package/src/modules/organization/module.ts +89 -0
- package/src/modules/organization/permissions.ts +3 -0
- package/src/modules/organization/query/.gitkeep +0 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.generated.ts +5 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.test.ts +102 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.ts +27 -0
- package/src/modules/organization/query/getCompany.generated.ts +5 -0
- package/src/modules/organization/query/getCompany.test.ts +70 -0
- package/src/modules/organization/query/getCompany.ts +16 -0
- package/src/modules/organization/query/getDepartment.generated.ts +5 -0
- package/src/modules/organization/query/getDepartment.test.ts +85 -0
- package/src/modules/organization/query/getDepartment.ts +17 -0
- package/src/modules/organization/query/getDepartmentChildren.generated.ts +5 -0
- package/src/modules/organization/query/getDepartmentChildren.test.ts +75 -0
- package/src/modules/organization/query/getDepartmentChildren.ts +21 -0
- package/src/modules/organization/query/getSite.generated.ts +5 -0
- package/src/modules/organization/query/getSite.test.ts +55 -0
- package/src/modules/organization/query/getSite.ts +16 -0
- package/src/modules/organization/query/listDepartmentsByCompany.generated.ts +5 -0
- package/src/modules/organization/query/listDepartmentsByCompany.test.ts +124 -0
- package/src/modules/organization/query/listDepartmentsByCompany.ts +43 -0
- package/src/modules/organization/query/listSitesByCompany.generated.ts +5 -0
- package/src/modules/organization/query/listSitesByCompany.test.ts +126 -0
- package/src/modules/organization/query/listSitesByCompany.ts +41 -0
- package/src/modules/organization/tailor.config.ts +13 -0
- package/src/modules/organization/tailor.d.ts +13 -0
- package/src/modules/organization/testing/fixtures.ts +155 -0
- package/src/modules/primitives/README.md +1 -1
- package/src/modules/primitives/command/setBaseCurrency.test.ts +8 -64
- package/src/modules/primitives/command/setBaseCurrency.ts +6 -64
- package/src/modules/primitives/docs/commands/ActivateCategory.md +1 -1
- package/src/modules/primitives/docs/commands/ActivateCurrency.md +1 -1
- package/src/modules/primitives/docs/commands/ActivateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/CreateExchangeRate.md +2 -2
- package/src/modules/primitives/docs/commands/CreateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateCategory.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateCurrency.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/SetBaseCurrency.md +13 -23
- package/src/modules/primitives/docs/commands/SetReferenceUnit.md +1 -1
- package/src/modules/primitives/docs/features/currency-definitions.md +13 -14
- package/src/modules/primitives/docs/models/Currency.md +3 -4
- package/src/modules/primitives/docs/queries/ConvertAmount.md +2 -2
- package/src/modules/primitives/docs/queries/ConvertQuantity.md +2 -2
- package/src/modules/primitives/lib/errors.generated.ts +5 -0
- package/src/modules/product-management/README.md +1 -1
- package/src/modules/user-management/docs/commands/CreatePermission.md +3 -3
- package/src/modules/user-management/docs/commands/CreateRole.md +1 -1
- package/src/modules/user-management/docs/queries/ListRolePermissionsByRole.md +39 -0
- package/src/modules/user-management/docs/queries/ListUserRolesByUser.md +39 -0
- package/src/modules/user-management/generated/enums.ts +0 -15
- package/src/modules/user-management/generated/kysely-tailordb.ts +0 -11
- package/src/shared/createContext.ts +2 -1
- package/src/shared/defineQuery.ts +36 -1
- package/src/shared/requirePermission.ts +3 -3
- package/src/shared/types.ts +3 -0
- package/templates/scaffold/app/backend/package.json +4 -3
- package/templates/scaffold/app/frontend/eslint.config.js +12 -0
- package/templates/scaffold/app/frontend/package.json +10 -7
- package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +30 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +3 -2
- package/templates/scaffold/app/frontend/vite.config.ts +5 -5
- package/src/commands/module/list.test.ts +0 -57
- package/src/commands/module/list.ts +0 -64
- /package/src/modules/{accounting → audit/db}/.gitkeep +0 -0
- /package/src/modules/audit/{.gitkeep → executor/.gitkeep} +0 -0
- /package/src/modules/{coa-management/.gitkeep → audit/lib/errors.ts} +0 -0
- /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/
|
|
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
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
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
|
|
58
|
-
2.
|
|
59
|
-
3. Check that `
|
|
60
|
-
4.
|
|
61
|
-
5.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
**
|
|
99
|
+
**Auto-split pattern:**
|
|
104
100
|
|
|
105
|
-
1.
|
|
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.
|
|
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
|
|
110
|
+
Numbered list of actionable fixes, grouped by severity:
|
|
104
111
|
|
|
105
|
-
1.
|
|
106
|
-
2.
|
|
107
|
-
3.
|
|
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
|
|
package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
156
|
+
Numbered list of actionable fixes, grouped by severity:
|
|
150
157
|
|
|
151
|
-
1.
|
|
152
|
-
2.
|
|
153
|
-
3.
|
|
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.
|
|
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
|
|
181
|
+
Numbered list of actionable fixes, grouped by severity:
|
|
175
182
|
|
|
176
|
-
1.
|
|
177
|
-
2.
|
|
178
|
-
3.
|
|
179
|
-
|
|
180
|
-
|
|
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:
|
|
24
|
-
|
|
25
|
-
|
|
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:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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:
|
|
54
|
-
|
|
55
|
-
|
|
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:
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
|
package/src/commands/check.ts
CHANGED
|
@@ -1,41 +1,8 @@
|
|
|
1
1
|
import { runMdschema } from "../mdschema";
|
|
2
2
|
import { ALL_SCHEMAS } from "../schemas";
|
|
3
|
-
|
|
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
|
-
|
|
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
|
+
});
|