@tailor-platform/erp-kit 0.6.0 → 0.7.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 +14 -0
- package/README.md +10 -10
- package/dist/cli.mjs +407 -69
- package/package.json +1 -1
- package/skills/erp-kit-app-1-requirements/SKILL.md +33 -17
- package/skills/erp-kit-app-2-requirements-review/SKILL.md +12 -0
- package/skills/erp-kit-app-3-plan/SKILL.md +18 -4
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +1 -1
- package/skills/erp-kit-app-3-plan/references/screen-extraction.md +1 -1
- package/skills/erp-kit-app-4-plan-review/SKILL.md +12 -0
- package/skills/erp-kit-app-5-impl-backend/SKILL.md +12 -0
- package/skills/erp-kit-app-6-impl-frontend/SKILL.md +12 -0
- package/skills/erp-kit-app-7-impl-review/SKILL.md +13 -1
- package/skills/erp-kit-app-shared/references/progress-protocol.md +77 -0
- package/skills/erp-kit-mock-scenario/SKILL.md +1 -1
- package/skills/erp-kit-module-1-requirements/SKILL.md +1 -1
- package/skills/erp-kit-module-3-plan/SKILL.md +3 -3
- package/skills/erp-kit-module-3-update-plan/SKILL.md +3 -3
- package/skills/erp-kit-module-5-impl/SKILL.md +1 -1
- package/src/commands/app/index.ts +2 -0
- package/src/commands/app/progress/git-context.ts +16 -0
- package/src/commands/app/progress/index.ts +45 -0
- package/src/commands/app/progress/log.ts +49 -0
- package/src/commands/app/progress/progress.test.ts +128 -0
- package/src/commands/app/progress/schema-cmd.ts +10 -0
- package/src/commands/check.test.ts +4 -4
- package/src/commands/lib/discovery.test.ts +5 -7
- package/src/commands/lib/discovery.ts +8 -8
- package/src/commands/lib/sync-check-source.test.ts +1 -1
- package/src/commands/lib/sync-check-source.ts +6 -1
- package/src/commands/lib/sync-check-tests.test.ts +43 -0
- package/src/commands/lib/sync-check-tests.ts +20 -2
- package/src/commands/sync-check.ts +3 -0
- package/src/generator/generate-app-code.test.ts +0 -6
- package/src/generator/generate-app-code.ts +3 -13
- package/src/generator/generate-code.test.ts +10 -40
- package/src/generator/generate-code.ts +6 -12
- package/src/generator/stub-templates.test.ts +0 -7
- package/src/generator/stub-templates.ts +0 -14
- package/src/modules/finance-ledger/README.md +50 -0
- package/src/modules/finance-ledger/command/.gitkeep +0 -0
- package/src/modules/finance-ledger/command/addJournalLine.generated.ts +6 -0
- package/src/modules/finance-ledger/command/addJournalLine.test.ts +438 -0
- package/src/modules/finance-ledger/command/addJournalLine.ts +122 -0
- package/src/modules/finance-ledger/command/approveAndLockPeriod.generated.ts +6 -0
- package/src/modules/finance-ledger/command/approveAndLockPeriod.test.ts +107 -0
- package/src/modules/finance-ledger/command/approveAndLockPeriod.ts +72 -0
- package/src/modules/finance-ledger/command/beginClose.generated.ts +6 -0
- package/src/modules/finance-ledger/command/beginClose.test.ts +106 -0
- package/src/modules/finance-ledger/command/beginClose.ts +58 -0
- package/src/modules/finance-ledger/command/closePeriod.generated.ts +6 -0
- package/src/modules/finance-ledger/command/closePeriod.test.ts +87 -0
- package/src/modules/finance-ledger/command/closePeriod.ts +44 -0
- package/src/modules/finance-ledger/command/createAccountingPeriod.generated.ts +6 -0
- package/src/modules/finance-ledger/command/createAccountingPeriod.test.ts +425 -0
- package/src/modules/finance-ledger/command/createAccountingPeriod.ts +133 -0
- package/src/modules/finance-ledger/command/createFiscalYear.generated.ts +6 -0
- package/src/modules/finance-ledger/command/createFiscalYear.test.ts +197 -0
- package/src/modules/finance-ledger/command/createFiscalYear.ts +70 -0
- package/src/modules/finance-ledger/command/createJournalEntry.generated.ts +6 -0
- package/src/modules/finance-ledger/command/createJournalEntry.test.ts +261 -0
- package/src/modules/finance-ledger/command/createJournalEntry.ts +121 -0
- package/src/modules/finance-ledger/command/deleteAccountingPeriod.generated.ts +6 -0
- package/src/modules/finance-ledger/command/deleteAccountingPeriod.test.ts +71 -0
- package/src/modules/finance-ledger/command/deleteAccountingPeriod.ts +55 -0
- package/src/modules/finance-ledger/command/deleteFiscalYear.generated.ts +6 -0
- package/src/modules/finance-ledger/command/deleteFiscalYear.test.ts +38 -0
- package/src/modules/finance-ledger/command/deleteFiscalYear.ts +34 -0
- package/src/modules/finance-ledger/command/deleteJournalEntry.generated.ts +6 -0
- package/src/modules/finance-ledger/command/deleteJournalEntry.test.ts +58 -0
- package/src/modules/finance-ledger/command/deleteJournalEntry.ts +43 -0
- package/src/modules/finance-ledger/command/executeYearEndClose.generated.ts +6 -0
- package/src/modules/finance-ledger/command/executeYearEndClose.test.ts +239 -0
- package/src/modules/finance-ledger/command/executeYearEndClose.ts +415 -0
- package/src/modules/finance-ledger/command/finalCloseAndLockPeriod.generated.ts +6 -0
- package/src/modules/finance-ledger/command/finalCloseAndLockPeriod.test.ts +102 -0
- package/src/modules/finance-ledger/command/finalCloseAndLockPeriod.ts +76 -0
- package/src/modules/finance-ledger/command/finalizeFinancialStatement.generated.ts +6 -0
- package/src/modules/finance-ledger/command/finalizeFinancialStatement.test.ts +73 -0
- package/src/modules/finance-ledger/command/finalizeFinancialStatement.ts +73 -0
- package/src/modules/finance-ledger/command/generateFinancialStatement.generated.ts +6 -0
- package/src/modules/finance-ledger/command/generateFinancialStatement.test.ts +311 -0
- package/src/modules/finance-ledger/command/generateFinancialStatement.ts +275 -0
- package/src/modules/finance-ledger/command/generatePreliminaryStatements.generated.ts +6 -0
- package/src/modules/finance-ledger/command/generatePreliminaryStatements.test.ts +152 -0
- package/src/modules/finance-ledger/command/generatePreliminaryStatements.ts +140 -0
- package/src/modules/finance-ledger/command/generateTrialBalance.generated.ts +6 -0
- package/src/modules/finance-ledger/command/generateTrialBalance.test.ts +439 -0
- package/src/modules/finance-ledger/command/generateTrialBalance.ts +268 -0
- package/src/modules/finance-ledger/command/initiatePeriodClose.generated.ts +6 -0
- package/src/modules/finance-ledger/command/initiatePeriodClose.test.ts +153 -0
- package/src/modules/finance-ledger/command/initiatePeriodClose.ts +84 -0
- package/src/modules/finance-ledger/command/openForAdvanceEntry.generated.ts +6 -0
- package/src/modules/finance-ledger/command/openForAdvanceEntry.test.ts +87 -0
- package/src/modules/finance-ledger/command/openForAdvanceEntry.ts +44 -0
- package/src/modules/finance-ledger/command/openPeriod.generated.ts +6 -0
- package/src/modules/finance-ledger/command/openPeriod.test.ts +90 -0
- package/src/modules/finance-ledger/command/openPeriod.ts +44 -0
- package/src/modules/finance-ledger/command/permanentlyClosePeriod.generated.ts +6 -0
- package/src/modules/finance-ledger/command/permanentlyClosePeriod.test.ts +87 -0
- package/src/modules/finance-ledger/command/permanentlyClosePeriod.ts +48 -0
- package/src/modules/finance-ledger/command/postAdjustingEntries.generated.ts +6 -0
- package/src/modules/finance-ledger/command/postAdjustingEntries.test.ts +392 -0
- package/src/modules/finance-ledger/command/postAdjustingEntries.ts +156 -0
- package/src/modules/finance-ledger/command/postJournalEntry.generated.ts +6 -0
- package/src/modules/finance-ledger/command/postJournalEntry.test.ts +346 -0
- package/src/modules/finance-ledger/command/postJournalEntry.ts +160 -0
- package/src/modules/finance-ledger/command/processInventoryHandoff.generated.ts +6 -0
- package/src/modules/finance-ledger/command/processInventoryHandoff.test.ts +211 -0
- package/src/modules/finance-ledger/command/processInventoryHandoff.ts +133 -0
- package/src/modules/finance-ledger/command/processManufacturingHandoff.generated.ts +6 -0
- package/src/modules/finance-ledger/command/processManufacturingHandoff.test.ts +221 -0
- package/src/modules/finance-ledger/command/processManufacturingHandoff.ts +133 -0
- package/src/modules/finance-ledger/command/processPurchaseHandoff.generated.ts +6 -0
- package/src/modules/finance-ledger/command/processPurchaseHandoff.test.ts +222 -0
- package/src/modules/finance-ledger/command/processPurchaseHandoff.ts +133 -0
- package/src/modules/finance-ledger/command/processSalesHandoff.generated.ts +6 -0
- package/src/modules/finance-ledger/command/processSalesHandoff.test.ts +257 -0
- package/src/modules/finance-ledger/command/processSalesHandoff.ts +135 -0
- package/src/modules/finance-ledger/command/regenerateFinancialStatement.generated.ts +6 -0
- package/src/modules/finance-ledger/command/regenerateFinancialStatement.test.ts +129 -0
- package/src/modules/finance-ledger/command/regenerateFinancialStatement.ts +186 -0
- package/src/modules/finance-ledger/command/removeJournalLine.generated.ts +6 -0
- package/src/modules/finance-ledger/command/removeJournalLine.test.ts +65 -0
- package/src/modules/finance-ledger/command/removeJournalLine.ts +39 -0
- package/src/modules/finance-ledger/command/reopenPeriod.generated.ts +6 -0
- package/src/modules/finance-ledger/command/reopenPeriod.test.ts +87 -0
- package/src/modules/finance-ledger/command/reopenPeriod.ts +44 -0
- package/src/modules/finance-ledger/command/reverseJournalEntry.generated.ts +6 -0
- package/src/modules/finance-ledger/command/reverseJournalEntry.test.ts +337 -0
- package/src/modules/finance-ledger/command/reverseJournalEntry.ts +140 -0
- package/src/modules/finance-ledger/command/revertSoftLock.generated.ts +6 -0
- package/src/modules/finance-ledger/command/revertSoftLock.test.ts +96 -0
- package/src/modules/finance-ledger/command/revertSoftLock.ts +67 -0
- package/src/modules/finance-ledger/command/updateFiscalYear.generated.ts +6 -0
- package/src/modules/finance-ledger/command/updateFiscalYear.test.ts +138 -0
- package/src/modules/finance-ledger/command/updateFiscalYear.ts +85 -0
- package/src/modules/finance-ledger/command/updateJournalEntry.generated.ts +6 -0
- package/src/modules/finance-ledger/command/updateJournalEntry.test.ts +195 -0
- package/src/modules/finance-ledger/command/updateJournalEntry.ts +86 -0
- package/src/modules/finance-ledger/command/updateJournalLine.generated.ts +6 -0
- package/src/modules/finance-ledger/command/updateJournalLine.test.ts +385 -0
- package/src/modules/finance-ledger/command/updateJournalLine.ts +155 -0
- package/src/modules/finance-ledger/command/verifySubledgerTransfers.generated.ts +6 -0
- package/src/modules/finance-ledger/command/verifySubledgerTransfers.test.ts +201 -0
- package/src/modules/finance-ledger/command/verifySubledgerTransfers.ts +113 -0
- package/src/modules/finance-ledger/command/verifyTrialBalance.generated.ts +6 -0
- package/src/modules/finance-ledger/command/verifyTrialBalance.test.ts +136 -0
- package/src/modules/finance-ledger/command/verifyTrialBalance.ts +97 -0
- package/src/modules/finance-ledger/db/.gitkeep +0 -0
- package/src/modules/finance-ledger/db/accountingPeriod.ts +58 -0
- package/src/modules/finance-ledger/db/financialStatement.ts +92 -0
- package/src/modules/finance-ledger/db/financialStatementLineItem.ts +76 -0
- package/src/modules/finance-ledger/db/fiscalYear.ts +41 -0
- package/src/modules/finance-ledger/db/journalEntry.ts +101 -0
- package/src/modules/finance-ledger/db/journalLine.ts +64 -0
- package/src/modules/finance-ledger/db/periodClose.ts +97 -0
- package/src/modules/finance-ledger/db/trialBalance.ts +63 -0
- package/src/modules/finance-ledger/db/trialBalanceLine.ts +63 -0
- package/src/modules/finance-ledger/docs/commands/AddJournalLine.md +74 -0
- package/src/modules/finance-ledger/docs/commands/ApproveAndLockPeriod.md +53 -0
- package/src/modules/finance-ledger/docs/commands/BeginClose.md +47 -0
- package/src/modules/finance-ledger/docs/commands/ClosePeriod.md +45 -0
- package/src/modules/finance-ledger/docs/commands/CreateAccountingPeriod.md +69 -0
- package/src/modules/finance-ledger/docs/commands/CreateFiscalYear.md +56 -0
- package/src/modules/finance-ledger/docs/commands/CreateJournalEntry.md +63 -0
- package/src/modules/finance-ledger/docs/commands/DeleteAccountingPeriod.md +46 -0
- package/src/modules/finance-ledger/docs/commands/DeleteFiscalYear.md +40 -0
- package/src/modules/finance-ledger/docs/commands/DeleteJournalEntry.md +44 -0
- package/src/modules/finance-ledger/docs/commands/ExecuteYearEndClose.md +81 -0
- package/src/modules/finance-ledger/docs/commands/FinalCloseAndLockPeriod.md +49 -0
- package/src/modules/finance-ledger/docs/commands/FinalizeFinancialStatement.md +43 -0
- package/src/modules/finance-ledger/docs/commands/GenerateFinancialStatement.md +86 -0
- package/src/modules/finance-ledger/docs/commands/GeneratePreliminaryStatements.md +53 -0
- package/src/modules/finance-ledger/docs/commands/GenerateTrialBalance.md +75 -0
- package/src/modules/finance-ledger/docs/commands/InitiatePeriodClose.md +58 -0
- package/src/modules/finance-ledger/docs/commands/OpenForAdvanceEntry.md +44 -0
- package/src/modules/finance-ledger/docs/commands/OpenPeriod.md +45 -0
- package/src/modules/finance-ledger/docs/commands/PermanentlyClosePeriod.md +45 -0
- package/src/modules/finance-ledger/docs/commands/PostAdjustingEntries.md +61 -0
- package/src/modules/finance-ledger/docs/commands/PostJournalEntry.md +81 -0
- package/src/modules/finance-ledger/docs/commands/ProcessInventoryHandoff.md +72 -0
- package/src/modules/finance-ledger/docs/commands/ProcessManufacturingHandoff.md +68 -0
- package/src/modules/finance-ledger/docs/commands/ProcessPurchaseHandoff.md +68 -0
- package/src/modules/finance-ledger/docs/commands/ProcessSalesHandoff.md +71 -0
- package/src/modules/finance-ledger/docs/commands/RegenerateFinancialStatement.md +60 -0
- package/src/modules/finance-ledger/docs/commands/RemoveJournalLine.md +42 -0
- package/src/modules/finance-ledger/docs/commands/ReopenPeriod.md +45 -0
- package/src/modules/finance-ledger/docs/commands/ReverseJournalEntry.md +62 -0
- package/src/modules/finance-ledger/docs/commands/RevertSoftLock.md +49 -0
- package/src/modules/finance-ledger/docs/commands/UpdateFiscalYear.md +60 -0
- package/src/modules/finance-ledger/docs/commands/UpdateJournalEntry.md +50 -0
- package/src/modules/finance-ledger/docs/commands/UpdateJournalLine.md +61 -0
- package/src/modules/finance-ledger/docs/commands/VerifySubledgerTransfers.md +59 -0
- package/src/modules/finance-ledger/docs/commands/VerifyTrialBalance.md +53 -0
- package/src/modules/finance-ledger/docs/features/accounting-period-management.md +110 -0
- package/src/modules/finance-ledger/docs/features/financial-statement-generation.md +115 -0
- package/src/modules/finance-ledger/docs/features/journal-entry-management.md +138 -0
- package/src/modules/finance-ledger/docs/features/period-end-close.md +102 -0
- package/src/modules/finance-ledger/docs/features/subledger-integration.md +141 -0
- package/src/modules/finance-ledger/docs/features/trial-balance.md +99 -0
- package/src/modules/finance-ledger/docs/features/year-end-close.md +84 -0
- package/src/modules/finance-ledger/docs/models/AccountingPeriod.md +71 -0
- package/src/modules/finance-ledger/docs/models/FinancialStatement.md +76 -0
- package/src/modules/finance-ledger/docs/models/FinancialStatementLineItem.md +41 -0
- package/src/modules/finance-ledger/docs/models/FiscalYear.md +41 -0
- package/src/modules/finance-ledger/docs/models/JournalEntry.md +80 -0
- package/src/modules/finance-ledger/docs/models/JournalLine.md +47 -0
- package/src/modules/finance-ledger/docs/models/PeriodClose.md +83 -0
- package/src/modules/finance-ledger/docs/models/TrialBalance.md +56 -0
- package/src/modules/finance-ledger/docs/models/TrialBalanceLine.md +37 -0
- package/src/modules/finance-ledger/docs/queries/GetAccountingPeriod.md +35 -0
- package/src/modules/finance-ledger/docs/queries/GetFinancialStatement.md +38 -0
- package/src/modules/finance-ledger/docs/queries/GetFiscalYear.md +35 -0
- package/src/modules/finance-ledger/docs/queries/GetJournalEntry.md +37 -0
- package/src/modules/finance-ledger/docs/queries/GetPeriodByDate.md +38 -0
- package/src/modules/finance-ledger/docs/queries/GetPeriodClose.md +36 -0
- package/src/modules/finance-ledger/docs/queries/GetSubledgerTransferStatus.md +45 -0
- package/src/modules/finance-ledger/docs/queries/GetTrialBalance.md +38 -0
- package/src/modules/finance-ledger/docs/queries/ListAccountingPeriods.md +46 -0
- package/src/modules/finance-ledger/docs/queries/ListFinancialStatements.md +46 -0
- package/src/modules/finance-ledger/docs/queries/ListFiscalYears.md +42 -0
- package/src/modules/finance-ledger/docs/queries/ListJournalEntries.md +48 -0
- package/src/modules/finance-ledger/docs/queries/ListPeriodCloses.md +46 -0
- package/src/modules/finance-ledger/docs/queries/ListTrialBalances.md +51 -0
- package/src/modules/finance-ledger/executor/.gitkeep +0 -0
- package/src/modules/finance-ledger/generated/enums.ts +109 -0
- package/src/modules/finance-ledger/generated/kysely-tailordb.ts +202 -0
- package/src/modules/finance-ledger/index.ts +2 -0
- package/src/modules/finance-ledger/lib/_db_deps.ts +56 -0
- package/src/modules/finance-ledger/lib/errors.generated.ts +332 -0
- package/src/modules/finance-ledger/lib/permissions.generated.ts +41 -0
- package/src/modules/finance-ledger/lib/types.ts +66 -0
- package/src/modules/finance-ledger/module.ts +262 -0
- package/src/modules/finance-ledger/package.json +26 -0
- package/src/modules/finance-ledger/permissions.ts +3 -0
- package/src/modules/finance-ledger/query/.gitkeep +0 -0
- package/src/modules/finance-ledger/query/getAccountingPeriod.generated.ts +5 -0
- package/src/modules/finance-ledger/query/getAccountingPeriod.test.ts +31 -0
- package/src/modules/finance-ledger/query/getAccountingPeriod.ts +21 -0
- package/src/modules/finance-ledger/query/getFinancialStatement.generated.ts +5 -0
- package/src/modules/finance-ledger/query/getFinancialStatement.test.ts +35 -0
- package/src/modules/finance-ledger/query/getFinancialStatement.ts +29 -0
- package/src/modules/finance-ledger/query/getFiscalYear.generated.ts +5 -0
- package/src/modules/finance-ledger/query/getFiscalYear.test.ts +31 -0
- package/src/modules/finance-ledger/query/getFiscalYear.ts +21 -0
- package/src/modules/finance-ledger/query/getJournalEntry.generated.ts +5 -0
- package/src/modules/finance-ledger/query/getJournalEntry.test.ts +35 -0
- package/src/modules/finance-ledger/query/getJournalEntry.ts +29 -0
- package/src/modules/finance-ledger/query/getPeriodByDate.generated.ts +5 -0
- package/src/modules/finance-ledger/query/getPeriodByDate.test.ts +53 -0
- package/src/modules/finance-ledger/query/getPeriodByDate.ts +27 -0
- package/src/modules/finance-ledger/query/getPeriodClose.generated.ts +5 -0
- package/src/modules/finance-ledger/query/getPeriodClose.test.ts +31 -0
- package/src/modules/finance-ledger/query/getPeriodClose.ts +21 -0
- package/src/modules/finance-ledger/query/getSubledgerTransferStatus.generated.ts +5 -0
- package/src/modules/finance-ledger/query/getSubledgerTransferStatus.test.ts +101 -0
- package/src/modules/finance-ledger/query/getSubledgerTransferStatus.ts +68 -0
- package/src/modules/finance-ledger/query/getTrialBalance.generated.ts +5 -0
- package/src/modules/finance-ledger/query/getTrialBalance.test.ts +33 -0
- package/src/modules/finance-ledger/query/getTrialBalance.ts +30 -0
- package/src/modules/finance-ledger/query/listAccountingPeriods.generated.ts +5 -0
- package/src/modules/finance-ledger/query/listAccountingPeriods.test.ts +81 -0
- package/src/modules/finance-ledger/query/listAccountingPeriods.ts +61 -0
- package/src/modules/finance-ledger/query/listFinancialStatements.generated.ts +5 -0
- package/src/modules/finance-ledger/query/listFinancialStatements.test.ts +76 -0
- package/src/modules/finance-ledger/query/listFinancialStatements.ts +62 -0
- package/src/modules/finance-ledger/query/listFiscalYears.generated.ts +5 -0
- package/src/modules/finance-ledger/query/listFiscalYears.test.ts +63 -0
- package/src/modules/finance-ledger/query/listFiscalYears.ts +45 -0
- package/src/modules/finance-ledger/query/listJournalEntries.generated.ts +5 -0
- package/src/modules/finance-ledger/query/listJournalEntries.test.ts +91 -0
- package/src/modules/finance-ledger/query/listJournalEntries.ts +64 -0
- package/src/modules/finance-ledger/query/listPeriodCloses.generated.ts +5 -0
- package/src/modules/finance-ledger/query/listPeriodCloses.test.ts +63 -0
- package/src/modules/finance-ledger/query/listPeriodCloses.ts +64 -0
- package/src/modules/finance-ledger/query/listTrialBalances.generated.ts +5 -0
- package/src/modules/finance-ledger/query/listTrialBalances.test.ts +78 -0
- package/src/modules/finance-ledger/query/listTrialBalances.ts +56 -0
- package/src/modules/finance-ledger/seed/index.ts +19 -0
- package/src/modules/finance-ledger/tailor.config.ts +13 -0
- package/src/modules/finance-ledger/tailor.d.ts +13 -0
- package/src/modules/finance-ledger/testing/commandTestUtils.ts +35 -0
- package/src/modules/finance-ledger/testing/fixtures.ts +382 -0
- package/src/modules/finance-ledger/tsconfig.json +16 -0
- package/src/progress/schema.test.ts +161 -0
- package/src/progress/schema.ts +316 -0
- package/templates/scaffold/app/backend/package.json +1 -3
- package/templates/scaffold/app/backend/vitest.config.ts +4 -21
- package/src/generator/generate-stubs.ts +0 -35
|
@@ -7,6 +7,18 @@ description: Create Tier 1-2 documentation (requirements, actors, business-flow)
|
|
|
7
7
|
|
|
8
8
|
Create Tier 1-2 documentation: Requirements, Actors, and Business Flows.
|
|
9
9
|
|
|
10
|
+
## Progress Logging
|
|
11
|
+
|
|
12
|
+
Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx erp-kit app progress log --json '<ProgressInput JSON>'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
|
|
19
|
+
|
|
20
|
+
Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
|
|
21
|
+
|
|
10
22
|
## Workflow Phases
|
|
11
23
|
|
|
12
24
|
```
|
|
@@ -28,12 +40,12 @@ Focus on "what" the application should do, not "how" it will be implemented.
|
|
|
28
40
|
|
|
29
41
|
Use AskUserQuestion to clarify undefined requirements. Focus on business-level scope and workflows — not platform capabilities like authentication.
|
|
30
42
|
|
|
31
|
-
| Category | Example Questions
|
|
32
|
-
| ---------------- |
|
|
33
|
-
| Scope | Which steps are MVP-essential? Any steps that can be deferred?
|
|
34
|
-
| Edge Cases | How far to handle cancellation, rejection, or mid-flow abandonment?
|
|
35
|
-
| Actor Boundaries | Are approver and executor separate? What is each actor's operational scope?
|
|
36
|
-
| Business Rules | Which steps are automated vs manual? What conditional branches exist?
|
|
43
|
+
| Category | Example Questions |
|
|
44
|
+
| ---------------- | --------------------------------------------------------------------------- |
|
|
45
|
+
| Scope | Which steps are MVP-essential? Any steps that can be deferred? |
|
|
46
|
+
| Edge Cases | How far to handle cancellation, rejection, or mid-flow abandonment? |
|
|
47
|
+
| Actor Boundaries | Are approver and executor separate? What is each actor's operational scope? |
|
|
48
|
+
| Business Rules | Which steps are automated vs manual? What conditional branches exist? |
|
|
37
49
|
|
|
38
50
|
Ask 3-4 questions at a time using multiSelect where appropriate.
|
|
39
51
|
|
|
@@ -44,13 +56,13 @@ Generate documentation using `erp-kit` CLI. `{APP_ROOT}` is the parent directory
|
|
|
44
56
|
```bash
|
|
45
57
|
# Tier 1: Requirements + project structure
|
|
46
58
|
# Creates {APP_ROOT}/{APP_NAME}/README.md
|
|
47
|
-
erp-kit app init {APP_NAME} {APP_ROOT}
|
|
59
|
+
npx erp-kit app init {APP_NAME} {APP_ROOT}
|
|
48
60
|
|
|
49
61
|
# Tier 2: Actors
|
|
50
|
-
erp-kit app generate doc actors {ACTOR_NAME} -p {APP_ROOT}/{APP_NAME}
|
|
62
|
+
npx erp-kit app generate doc actors {ACTOR_NAME} -p {APP_ROOT}/{APP_NAME}
|
|
51
63
|
|
|
52
64
|
# Tier 2: Business Flows
|
|
53
|
-
erp-kit app generate doc business-flow {FLOW_NAME} -p {APP_ROOT}/{APP_NAME}
|
|
65
|
+
npx erp-kit app generate doc business-flow {FLOW_NAME} -p {APP_ROOT}/{APP_NAME}
|
|
54
66
|
```
|
|
55
67
|
|
|
56
68
|
**Directory structure after init + generate:**
|
|
@@ -80,6 +92,7 @@ After creating business flows, extract and create story documentation.
|
|
|
80
92
|
|
|
81
93
|
1. **Collect** all business flow docs: glob `<APP_ROOT>/docs/business-flow/*/README.md`
|
|
82
94
|
2. **Dispatch story extraction agents** — one Agent per business flow (parallelize if possible). Each agent:
|
|
95
|
+
|
|
83
96
|
- Reads the prompt template from [references/story-extraction.md](references/story-extraction.md)
|
|
84
97
|
- Replace `{{APP_NAME}}` with the resolved app name
|
|
85
98
|
- Replace `{{ACTOR_DOCS}}` with the actor doc file paths
|
|
@@ -90,7 +103,7 @@ After creating business flows, extract and create story documentation.
|
|
|
90
103
|
|
|
91
104
|
```bash
|
|
92
105
|
# For each story identified
|
|
93
|
-
erp-kit app generate doc story <flow>/<actor>--<story> -p {APP_ROOT}/{APP_NAME}
|
|
106
|
+
npx erp-kit app generate doc story <flow>/<actor>--<story> -p {APP_ROOT}/{APP_NAME}
|
|
94
107
|
```
|
|
95
108
|
|
|
96
109
|
4. **Link stories** in business flow READMEs: replace `- TBD` placeholders in each flow's `## Stories` section with actual links:
|
|
@@ -102,18 +115,21 @@ erp-kit app generate doc story <flow>/<actor>--<story> -p {APP_ROOT}/{APP_NAME}
|
|
|
102
115
|
### Phase 4: Validate
|
|
103
116
|
|
|
104
117
|
```bash
|
|
105
|
-
|
|
118
|
+
# NOTE: -p takes {APP_ROOT} (parent directory), NOT {APP_ROOT}/{APP_NAME}.
|
|
119
|
+
# generate doc uses -p {APP_ROOT}/{APP_NAME}, but check uses -p {APP_ROOT}.
|
|
120
|
+
# Example: if app is at apps/user-management, use -p apps
|
|
121
|
+
npx erp-kit app check -p {APP_ROOT}
|
|
106
122
|
```
|
|
107
123
|
|
|
108
|
-
|
|
124
|
+
**Expected passing output:** `✓ No violations found` for each doc type that has files. "No matching files found" appears for doc types not yet created (e.g., screens and resolvers at Tier 1-2) — this is normal and not an error.
|
|
109
125
|
|
|
110
126
|
## Schema Reference
|
|
111
127
|
|
|
112
|
-
| Schema | Tier | Output Path
|
|
113
|
-
| ------------------- | ---- |
|
|
114
|
-
| `requirements.yml` | 1 | `README.md`
|
|
115
|
-
| `actors.yml` | 2 | `docs/actors/<name>.md`
|
|
116
|
-
| `business-flow.yml` | 2 | `docs/business-flow/<flow>/README.md`
|
|
128
|
+
| Schema | Tier | Output Path |
|
|
129
|
+
| ------------------- | ---- | ---------------------------------------------------- |
|
|
130
|
+
| `requirements.yml` | 1 | `README.md` |
|
|
131
|
+
| `actors.yml` | 2 | `docs/actors/<name>.md` |
|
|
132
|
+
| `business-flow.yml` | 2 | `docs/business-flow/<flow>/README.md` |
|
|
117
133
|
| `story.yml` | 2 | `docs/business-flow/<flow>/story/<actor>--<name>.md` |
|
|
118
134
|
|
|
119
135
|
## Next Step
|
|
@@ -7,6 +7,18 @@ description: Review requirements quality and documentation consistency for appli
|
|
|
7
7
|
|
|
8
8
|
Review **requirements quality** and **documentation consistency** for an application's Tier 1-2 documentation.
|
|
9
9
|
|
|
10
|
+
## Progress Logging
|
|
11
|
+
|
|
12
|
+
Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx erp-kit app progress log --json '<ProgressInput JSON>'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
|
|
19
|
+
|
|
20
|
+
Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
|
|
21
|
+
|
|
10
22
|
## When to Use
|
|
11
23
|
|
|
12
24
|
- After writing application requirements and business flows (step 1)
|
|
@@ -7,6 +7,18 @@ description: Create Tier 3-4 documentation (screens, resolvers) by breaking down
|
|
|
7
7
|
|
|
8
8
|
Convert Tier 2 business flows and stories into Tier 3 (screens) and Tier 4 (resolvers) documentation using parallel extraction agents.
|
|
9
9
|
|
|
10
|
+
## Progress Logging
|
|
11
|
+
|
|
12
|
+
Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx erp-kit app progress log --json '<ProgressInput JSON>'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
|
|
19
|
+
|
|
20
|
+
Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
|
|
21
|
+
|
|
10
22
|
## When to Use
|
|
11
23
|
|
|
12
24
|
- User has Tier 1-2 documentation and wants to plan Tier 3-4
|
|
@@ -40,7 +52,7 @@ Verify at least `STORY_DOCS` is non-empty. If no story docs exist, stop with: "N
|
|
|
40
52
|
Collect module overview:
|
|
41
53
|
|
|
42
54
|
```bash
|
|
43
|
-
erp-kit doc modules
|
|
55
|
+
npx erp-kit doc modules
|
|
44
56
|
```
|
|
45
57
|
|
|
46
58
|
This returns each module's name, overview, command/query/model counts, and dependencies. Save the full output as `MODULE_OVERVIEW` — both agents receive it.
|
|
@@ -100,10 +112,10 @@ Scaffold using `erp-kit` CLI:
|
|
|
100
112
|
|
|
101
113
|
```bash
|
|
102
114
|
# Tier 3: Screens
|
|
103
|
-
erp-kit app generate doc screen <screen-name> -p {APP_ROOT}/{APP_NAME}
|
|
115
|
+
npx erp-kit app generate doc screen <screen-name> -p {APP_ROOT}/{APP_NAME}
|
|
104
116
|
|
|
105
117
|
# Tier 4: Resolvers
|
|
106
|
-
erp-kit app generate doc resolver <resolver-name> -p {APP_ROOT}/{APP_NAME}
|
|
118
|
+
npx erp-kit app generate doc resolver <resolver-name> -p {APP_ROOT}/{APP_NAME}
|
|
107
119
|
```
|
|
108
120
|
|
|
109
121
|
Fill scaffolded docs with details from agent extraction results.
|
|
@@ -119,7 +131,9 @@ Read-only stories should have `None` under `## Resolvers`.
|
|
|
119
131
|
## Step 6: Validate
|
|
120
132
|
|
|
121
133
|
```bash
|
|
122
|
-
|
|
134
|
+
# NOTE: -p takes {APP_ROOT} (parent directory), NOT {APP_ROOT}/{APP_NAME}.
|
|
135
|
+
# generate doc uses -p {APP_ROOT}/{APP_NAME}, but check uses -p {APP_ROOT}.
|
|
136
|
+
npx erp-kit app check -p {APP_ROOT}
|
|
123
137
|
```
|
|
124
138
|
|
|
125
139
|
## Naming Conventions
|
|
@@ -16,7 +16,7 @@ The following modules are available in erp-kit. Use this to map resolvers to rea
|
|
|
16
16
|
To inspect a specific module's commands in detail, run:
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
erp-kit doc module <module-name> command <command-name>
|
|
19
|
+
npx erp-kit doc module <module-name> command <command-name>
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
## Instructions
|
|
@@ -16,7 +16,7 @@ The following modules are available in erp-kit. Use this to understand which ent
|
|
|
16
16
|
To inspect a specific module's model (domain description, state transitions, invariants, commands), run:
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
erp-kit doc module <module-name> model <model-name>
|
|
19
|
+
npx erp-kit doc module <module-name> model <model-name>
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
## Instructions
|
|
@@ -7,6 +7,18 @@ description: Review parity between Tier 2 (business flows, actors, stories) and
|
|
|
7
7
|
|
|
8
8
|
Review **documentation consistency** across Tier 2 (business flows, actors, stories), Tier 3 (screens), and Tier 4 (resolvers) documentation.
|
|
9
9
|
|
|
10
|
+
## Progress Logging
|
|
11
|
+
|
|
12
|
+
Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx erp-kit app progress log --json '<ProgressInput JSON>'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
|
|
19
|
+
|
|
20
|
+
Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
|
|
21
|
+
|
|
10
22
|
## When to Use
|
|
11
23
|
|
|
12
24
|
- After writing Tier 3-4 documentation, check for gaps
|
|
@@ -7,6 +7,18 @@ description: Implement backend code for applications using erp-kit modules. Use
|
|
|
7
7
|
|
|
8
8
|
Implement backend resolvers and application configuration for an application, driven by Tier 1-4 documentation (actors, business flows, stories, screens, resolvers).
|
|
9
9
|
|
|
10
|
+
## Progress Logging
|
|
11
|
+
|
|
12
|
+
Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx erp-kit app progress log --json '<ProgressInput JSON>'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
|
|
19
|
+
|
|
20
|
+
Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
|
|
21
|
+
|
|
10
22
|
## When to Use
|
|
11
23
|
|
|
12
24
|
- Implementing backend resolvers from resolver spec docs
|
|
@@ -7,6 +7,18 @@ description: Implement frontend code for applications. Use after deploying the b
|
|
|
7
7
|
|
|
8
8
|
Implement frontend pages for an application, driven by screen spec documentation and a deployed backend.
|
|
9
9
|
|
|
10
|
+
## Progress Logging
|
|
11
|
+
|
|
12
|
+
Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx erp-kit app progress log --json '<ProgressInput JSON>'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
|
|
19
|
+
|
|
20
|
+
Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
|
|
21
|
+
|
|
10
22
|
## When to Use
|
|
11
23
|
|
|
12
24
|
- Implementing frontend pages from screen spec docs
|
|
@@ -7,6 +7,18 @@ description: Review implementation parity between documentation and code for app
|
|
|
7
7
|
|
|
8
8
|
Review **implementation consistency** between Tier 3-4 documentation and actual backend/frontend code.
|
|
9
9
|
|
|
10
|
+
## Progress Logging
|
|
11
|
+
|
|
12
|
+
Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx erp-kit app progress log --json '<ProgressInput JSON>'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
|
|
19
|
+
|
|
20
|
+
Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
|
|
21
|
+
|
|
10
22
|
## When to Use
|
|
11
23
|
|
|
12
24
|
- After backend and frontend implementation, verify code matches documentation
|
|
@@ -60,7 +72,7 @@ Run build checks and source-doc sync check inline:
|
|
|
60
72
|
```bash
|
|
61
73
|
cd <APP_ROOT>/backend && pnpm lint && pnpm typecheck
|
|
62
74
|
cd <APP_ROOT>/frontend && pnpm lint && pnpm typecheck && pnpm build
|
|
63
|
-
erp-kit app sync-check -p <APP_ROOT
|
|
75
|
+
npx erp-kit app sync-check -p <APP_ROOT>
|
|
64
76
|
```
|
|
65
77
|
|
|
66
78
|
Report pass/fail for each check. `sync-check` detects missing resolver implementations, orphaned docs, and story doc ↔ integration test case mismatches, so groups A-C agents can skip file-existence checks and focus on content parity.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Progress Logging Protocol
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
All `erp-kit-app-*` skills log to an append-only audit trail at `.erp-kit/progress.jsonl`. This records conversations, decisions, and agent activity across sessions.
|
|
6
|
+
|
|
7
|
+
The log is NOT the source of truth for progress — the produced docs and code are. The log answers "what happened and why."
|
|
8
|
+
|
|
9
|
+
## CLI Commands
|
|
10
|
+
|
|
11
|
+
### Log an event
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx erp-kit app progress log --json '<ProgressInput JSON>'
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Validate without writing
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx erp-kit app progress log --dry-run --json '<ProgressInput JSON>'
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Get the JSON Schema
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx erp-kit app progress schema
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## When to Log
|
|
30
|
+
|
|
31
|
+
Log at natural checkpoints — moments where the skill is already pausing to take action. Bundle all conversation since the last checkpoint into the `conversation` array.
|
|
32
|
+
|
|
33
|
+
| Checkpoint | Event type | When |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| Skill invocation | `step.start` | First thing after skill is invoked |
|
|
36
|
+
| User decision | `decision` | User approves, corrects, or chooses |
|
|
37
|
+
| Subagent launch | `agent.dispatch` | Before dispatching a subagent |
|
|
38
|
+
| Subagent return | `agent.result` | After subagent completes |
|
|
39
|
+
| File write | `artifact.create` | After creating/modifying/deleting a file |
|
|
40
|
+
| Validation | `validation` | After running `erp-kit app check`, build, lint, etc. |
|
|
41
|
+
| Skill completion | `step.complete` | Last thing before skill finishes |
|
|
42
|
+
| Failure | `error` | When something fails |
|
|
43
|
+
| Free-form | `note` | Anything else (e.g., session pause) |
|
|
44
|
+
|
|
45
|
+
## Entry Format
|
|
46
|
+
|
|
47
|
+
Every entry requires:
|
|
48
|
+
|
|
49
|
+
- `v` — Schema version, always `1`
|
|
50
|
+
- `sessionId` — Your AI session ID
|
|
51
|
+
- `prompt` — The user's original prompt (the request that triggered this skill)
|
|
52
|
+
- `event` — Event type from the table above
|
|
53
|
+
- `data` — Event-specific payload (see schema)
|
|
54
|
+
- `conversation` — Array of `{role, message}` since last checkpoint (optional, defaults to `[]`)
|
|
55
|
+
|
|
56
|
+
The CLI auto-adds `timestamp` and `git` context.
|
|
57
|
+
|
|
58
|
+
## Example
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npx erp-kit app progress log --json '{
|
|
62
|
+
"v": 1,
|
|
63
|
+
"sessionId": "claude-abc123",
|
|
64
|
+
"prompt": "Create screens for manufacturing flows",
|
|
65
|
+
"event": "decision",
|
|
66
|
+
"conversation": [
|
|
67
|
+
{"role": "agent", "message": "Flat list or collapsible tree for BOM?"},
|
|
68
|
+
{"role": "user", "message": "Collapsible tree"}
|
|
69
|
+
],
|
|
70
|
+
"data": {
|
|
71
|
+
"question": "BOM list view style",
|
|
72
|
+
"choice": "Collapsible tree",
|
|
73
|
+
"alternatives": ["Flat list with indent"],
|
|
74
|
+
"rationale": "Better UX for multi-level BOMs"
|
|
75
|
+
}
|
|
76
|
+
}'
|
|
77
|
+
```
|
|
@@ -70,7 +70,7 @@ The final feature set becomes the union of all `Include` features. Proceed with
|
|
|
70
70
|
First, scaffold the module if it doesn't exist:
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
erp-kit module init <module-name> <MODULES_ROOT>/<module-name>
|
|
73
|
+
npx erp-kit module init <module-name> <MODULES_ROOT>/<module-name>
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
Then, for each `Include` feature, launch an Agent:
|
|
@@ -44,9 +44,9 @@ Produce consolidated plan:
|
|
|
44
44
|
Scaffold using `erp-kit` CLI. **Names must be PascalCase** (see [naming convention](references/naming.md)):
|
|
45
45
|
|
|
46
46
|
```bash
|
|
47
|
-
erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
|
|
48
|
-
erp-kit module generate doc command CommandName -p <MODULES_ROOT>/<module-name>
|
|
49
|
-
erp-kit module generate doc query QueryName -p <MODULES_ROOT>/<module-name>
|
|
47
|
+
npx erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
|
|
48
|
+
npx erp-kit module generate doc command CommandName -p <MODULES_ROOT>/<module-name>
|
|
49
|
+
npx erp-kit module generate doc query QueryName -p <MODULES_ROOT>/<module-name>
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
Fill in the scaffolded docs with details from the extraction in Step 2.
|
|
@@ -78,9 +78,9 @@ For each item in the fix plan:
|
|
|
78
78
|
Scaffold using `erp-kit` CLI. **Names must be PascalCase** (see [naming convention](references/naming.md)):
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
|
-
erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
|
|
82
|
-
erp-kit module generate doc command CommandName -p <MODULES_ROOT>/<module-name>
|
|
83
|
-
erp-kit module generate doc query QueryName -p <MODULES_ROOT>/<module-name>
|
|
81
|
+
npx erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
|
|
82
|
+
npx erp-kit module generate doc command CommandName -p <MODULES_ROOT>/<module-name>
|
|
83
|
+
npx erp-kit module generate doc query QueryName -p <MODULES_ROOT>/<module-name>
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
Populate the new docs using the extraction rules from:
|
|
@@ -37,7 +37,7 @@ Verify at least one doc type exists. If none, stop with: "No docs found for modu
|
|
|
37
37
|
Run generation first to create `.generated.ts` files (error classes, permission definitions, command/query shells) before implementing any code:
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
erp-kit module generate code -p <MODULES_ROOT>/<module>
|
|
40
|
+
npx erp-kit module generate code -p <MODULES_ROOT>/<module>
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
Never edit these generated files.
|
|
@@ -8,6 +8,7 @@ import { runGenerateAppCode } from "../../generator/generate-app-code";
|
|
|
8
8
|
import { runGenerateSeed } from "../../generator/generate-seed";
|
|
9
9
|
import { runInitAppWithReadme } from "../init-module";
|
|
10
10
|
import { executeCommand, success, silentFailure } from "../lib/command-result";
|
|
11
|
+
import { progressCommand } from "./progress/index";
|
|
11
12
|
|
|
12
13
|
const cwd = process.cwd();
|
|
13
14
|
|
|
@@ -129,5 +130,6 @@ export const appCommand = defineCommand({
|
|
|
129
130
|
"sync-check": syncCheckCommand,
|
|
130
131
|
init: initCommand,
|
|
131
132
|
generate: generateCommand,
|
|
133
|
+
progress: progressCommand,
|
|
132
134
|
},
|
|
133
135
|
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import type { GitContext } from "../../../progress/schema";
|
|
3
|
+
|
|
4
|
+
export function getGitContext(cwd: string): GitContext {
|
|
5
|
+
const branch = execFileSync("git", ["rev-parse", "--abbrev-ref", "HEAD"], {
|
|
6
|
+
cwd,
|
|
7
|
+
encoding: "utf-8",
|
|
8
|
+
}).trim();
|
|
9
|
+
|
|
10
|
+
const commit = execFileSync("git", ["rev-parse", "--short", "HEAD"], {
|
|
11
|
+
cwd,
|
|
12
|
+
encoding: "utf-8",
|
|
13
|
+
}).trim();
|
|
14
|
+
|
|
15
|
+
return { branch, commit };
|
|
16
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { defineCommand, arg } from "politty";
|
|
3
|
+
import { executeCommand } from "../../lib/command-result";
|
|
4
|
+
import { runProgressLog } from "./log";
|
|
5
|
+
import { runProgressSchema } from "./schema-cmd";
|
|
6
|
+
|
|
7
|
+
const cwd = process.cwd();
|
|
8
|
+
|
|
9
|
+
const logCommand = defineCommand({
|
|
10
|
+
name: "log",
|
|
11
|
+
description: "Append a validated entry to the progress log",
|
|
12
|
+
args: z.object({
|
|
13
|
+
json: arg(z.string(), {
|
|
14
|
+
description: "JSON payload (ProgressInput schema)",
|
|
15
|
+
}),
|
|
16
|
+
"dry-run": arg(z.boolean().default(false), {
|
|
17
|
+
description: "Validate without writing",
|
|
18
|
+
}),
|
|
19
|
+
}),
|
|
20
|
+
run: (args) => {
|
|
21
|
+
return executeCommand(() => {
|
|
22
|
+
return runProgressLog(args.json, args["dry-run"], cwd);
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
const schemaCommand = defineCommand({
|
|
28
|
+
name: "schema",
|
|
29
|
+
description: "Output JSON Schema for progress log input",
|
|
30
|
+
args: z.object({}),
|
|
31
|
+
run: () => {
|
|
32
|
+
return executeCommand(() => {
|
|
33
|
+
return runProgressSchema();
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
export const progressCommand = defineCommand({
|
|
39
|
+
name: "progress",
|
|
40
|
+
description: "Audit log for app skill sessions",
|
|
41
|
+
subCommands: {
|
|
42
|
+
log: logCommand,
|
|
43
|
+
schema: schemaCommand,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { ProgressInput, ProgressEntry } from "../../../progress/schema";
|
|
4
|
+
import { type CommandResult, success, failure } from "../../lib/command-result";
|
|
5
|
+
import { getGitContext } from "./git-context";
|
|
6
|
+
|
|
7
|
+
export function runProgressLog(jsonInput: string, dryRun: boolean, cwd: string): CommandResult {
|
|
8
|
+
let parsed: unknown;
|
|
9
|
+
try {
|
|
10
|
+
parsed = JSON.parse(jsonInput);
|
|
11
|
+
} catch {
|
|
12
|
+
return failure("Invalid JSON input");
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const inputResult = ProgressInput.safeParse(parsed);
|
|
16
|
+
if (!inputResult.success) {
|
|
17
|
+
const issues = inputResult.error.issues
|
|
18
|
+
.map((i) => `${i.path.join(".")}: ${i.message}`)
|
|
19
|
+
.join(", ");
|
|
20
|
+
return failure(`Invalid progress input: ${issues}`);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const enriched = {
|
|
24
|
+
...inputResult.data,
|
|
25
|
+
timestamp: new Date().toISOString(),
|
|
26
|
+
git: getGitContext(cwd),
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const entryResult = ProgressEntry.safeParse(enriched);
|
|
30
|
+
if (!entryResult.success) {
|
|
31
|
+
const issues = entryResult.error.issues
|
|
32
|
+
.map((i) => `${i.path.join(".")}: ${i.message}`)
|
|
33
|
+
.join(", ");
|
|
34
|
+
return failure(`Invalid progress entry after enrichment: ${issues}`);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const line = JSON.stringify(entryResult.data);
|
|
38
|
+
console.log(line);
|
|
39
|
+
|
|
40
|
+
if (dryRun) {
|
|
41
|
+
return success();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const erpKitDir = path.join(cwd, ".erp-kit");
|
|
45
|
+
fs.mkdirSync(erpKitDir, { recursive: true });
|
|
46
|
+
fs.appendFileSync(path.join(erpKitDir, "progress.jsonl"), line + "\n", "utf-8");
|
|
47
|
+
|
|
48
|
+
return success();
|
|
49
|
+
}
|