@pennyfarthing/core 7.4.0 → 7.5.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/dist/cli/utils/files.d.ts +0 -1
- package/dist/cli/utils/files.js +73 -56
- package/dist/cli/utils/manifest.d.ts +0 -1
- package/dist/cli/utils/manifest.js +48 -45
- package/dist/cli/utils/version.d.ts +0 -1
- package/dist/cli/utils/version.js +38 -32
- package/dist/index.d.ts +0 -1
- package/dist/index.js +39 -11
- package/dist/permissions/index.d.ts +0 -1
- package/dist/permissions/index.js +7 -4
- package/dist/permissions/permission-schema.d.ts +0 -1
- package/dist/permissions/permission-schema.js +13 -9
- package/dist/scripts/job-fair-aggregator.d.ts +0 -1
- package/dist/scripts/job-fair-aggregator.js +484 -341
- package/dist/workflow/index.d.ts +0 -1
- package/dist/workflow/index.js +12 -5
- package/dist/workflow/workflow-loader.d.ts +0 -1
- package/dist/workflow/workflow-loader.js +40 -34
- package/dist/workflow/workflow-permissions.d.ts +0 -1
- package/dist/workflow/workflow-permissions.js +14 -8
- package/dist/workflow/workflow-router.d.ts +0 -1
- package/dist/workflow/workflow-router.js +70 -51
- package/dist/workflow/workflow-schema.d.ts +0 -1
- package/dist/workflow/workflow-schema.js +62 -59
- package/package.json +1 -1
- package/dist/bmad/context-reader.d.ts +0 -71
- package/dist/bmad/context-reader.d.ts.map +0 -1
- package/dist/bmad/context-reader.js +0 -369
- package/dist/bmad/context-reader.js.map +0 -1
- package/dist/bmad/context-reader.test.d.ts +0 -71
- package/dist/bmad/context-reader.test.d.ts.map +0 -1
- package/dist/bmad/context-reader.test.js +0 -878
- package/dist/bmad/context-reader.test.js.map +0 -1
- package/dist/bmad/epics-parser.d.ts +0 -61
- package/dist/bmad/epics-parser.d.ts.map +0 -1
- package/dist/bmad/epics-parser.js +0 -331
- package/dist/bmad/epics-parser.js.map +0 -1
- package/dist/bmad/epics-parser.test.d.ts +0 -7
- package/dist/bmad/epics-parser.test.d.ts.map +0 -1
- package/dist/bmad/epics-parser.test.js +0 -449
- package/dist/bmad/epics-parser.test.js.map +0 -1
- package/dist/bmad/index.d.ts +0 -11
- package/dist/bmad/index.d.ts.map +0 -1
- package/dist/bmad/index.js +0 -24
- package/dist/bmad/index.js.map +0 -1
- package/dist/bmad/status-sync.d.ts +0 -173
- package/dist/bmad/status-sync.d.ts.map +0 -1
- package/dist/bmad/status-sync.js +0 -463
- package/dist/bmad/status-sync.js.map +0 -1
- package/dist/bmad/status-sync.test.d.ts +0 -7
- package/dist/bmad/status-sync.test.d.ts.map +0 -1
- package/dist/bmad/status-sync.test.js +0 -702
- package/dist/bmad/status-sync.test.js.map +0 -1
- package/dist/bmad/story-exporter.d.ts +0 -55
- package/dist/bmad/story-exporter.d.ts.map +0 -1
- package/dist/bmad/story-exporter.js +0 -170
- package/dist/bmad/story-exporter.js.map +0 -1
- package/dist/bmad/story-exporter.test.d.ts +0 -51
- package/dist/bmad/story-exporter.test.d.ts.map +0 -1
- package/dist/bmad/story-exporter.test.js +0 -603
- package/dist/bmad/story-exporter.test.js.map +0 -1
- package/dist/bmad/story-parser.d.ts +0 -44
- package/dist/bmad/story-parser.d.ts.map +0 -1
- package/dist/bmad/story-parser.js +0 -307
- package/dist/bmad/story-parser.js.map +0 -1
- package/dist/bmad/story-parser.test.d.ts +0 -44
- package/dist/bmad/story-parser.test.d.ts.map +0 -1
- package/dist/bmad/story-parser.test.js +0 -693
- package/dist/bmad/story-parser.test.js.map +0 -1
- package/dist/cli/commands/command.d.ts +0 -28
- package/dist/cli/commands/command.d.ts.map +0 -1
- package/dist/cli/commands/command.js +0 -399
- package/dist/cli/commands/command.js.map +0 -1
- package/dist/cli/commands/cyclist.d.ts +0 -46
- package/dist/cli/commands/cyclist.d.ts.map +0 -1
- package/dist/cli/commands/cyclist.js +0 -196
- package/dist/cli/commands/cyclist.js.map +0 -1
- package/dist/cli/commands/cyclist.test.d.ts +0 -13
- package/dist/cli/commands/cyclist.test.d.ts.map +0 -1
- package/dist/cli/commands/cyclist.test.js +0 -245
- package/dist/cli/commands/cyclist.test.js.map +0 -1
- package/dist/cli/commands/doctor.d.ts +0 -9
- package/dist/cli/commands/doctor.d.ts.map +0 -1
- package/dist/cli/commands/doctor.js +0 -652
- package/dist/cli/commands/doctor.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -8
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -524
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/skill.d.ts +0 -28
- package/dist/cli/commands/skill.d.ts.map +0 -1
- package/dist/cli/commands/skill.js +0 -416
- package/dist/cli/commands/skill.js.map +0 -1
- package/dist/cli/commands/theme.d.ts +0 -21
- package/dist/cli/commands/theme.d.ts.map +0 -1
- package/dist/cli/commands/theme.js +0 -201
- package/dist/cli/commands/theme.js.map +0 -1
- package/dist/cli/commands/uninstall.d.ts +0 -8
- package/dist/cli/commands/uninstall.d.ts.map +0 -1
- package/dist/cli/commands/uninstall.js +0 -237
- package/dist/cli/commands/uninstall.js.map +0 -1
- package/dist/cli/commands/update.d.ts +0 -9
- package/dist/cli/commands/update.d.ts.map +0 -1
- package/dist/cli/commands/update.js +0 -418
- package/dist/cli/commands/update.js.map +0 -1
- package/dist/cli/commands/version.d.ts +0 -2
- package/dist/cli/commands/version.d.ts.map +0 -1
- package/dist/cli/commands/version.js +0 -28
- package/dist/cli/commands/version.js.map +0 -1
- package/dist/cli/customization.test.d.ts +0 -12
- package/dist/cli/customization.test.d.ts.map +0 -1
- package/dist/cli/customization.test.js +0 -84
- package/dist/cli/customization.test.js.map +0 -1
- package/dist/cli/cyclist-migration.test.d.ts +0 -16
- package/dist/cli/cyclist-migration.test.d.ts.map +0 -1
- package/dist/cli/cyclist-migration.test.js +0 -225
- package/dist/cli/cyclist-migration.test.js.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -174
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/ocean-profiles.test.d.ts +0 -13
- package/dist/cli/ocean-profiles.test.d.ts.map +0 -1
- package/dist/cli/ocean-profiles.test.js +0 -134
- package/dist/cli/ocean-profiles.test.js.map +0 -1
- package/dist/cli/theme-maker.test.d.ts +0 -11
- package/dist/cli/theme-maker.test.d.ts.map +0 -1
- package/dist/cli/theme-maker.test.js +0 -356
- package/dist/cli/theme-maker.test.js.map +0 -1
- package/dist/cli/utils/constants.d.ts +0 -66
- package/dist/cli/utils/constants.d.ts.map +0 -1
- package/dist/cli/utils/constants.js +0 -54
- package/dist/cli/utils/constants.js.map +0 -1
- package/dist/cli/utils/files.d.ts.map +0 -1
- package/dist/cli/utils/files.js.map +0 -1
- package/dist/cli/utils/logger.d.ts +0 -26
- package/dist/cli/utils/logger.d.ts.map +0 -1
- package/dist/cli/utils/logger.js +0 -88
- package/dist/cli/utils/logger.js.map +0 -1
- package/dist/cli/utils/manifest.d.ts.map +0 -1
- package/dist/cli/utils/manifest.js.map +0 -1
- package/dist/cli/utils/node-modules.d.ts +0 -6
- package/dist/cli/utils/node-modules.d.ts.map +0 -1
- package/dist/cli/utils/node-modules.js +0 -31
- package/dist/cli/utils/node-modules.js.map +0 -1
- package/dist/cli/utils/prompts.d.ts +0 -34
- package/dist/cli/utils/prompts.d.ts.map +0 -1
- package/dist/cli/utils/prompts.js +0 -93
- package/dist/cli/utils/prompts.js.map +0 -1
- package/dist/cli/utils/symlinks.d.ts +0 -29
- package/dist/cli/utils/symlinks.d.ts.map +0 -1
- package/dist/cli/utils/symlinks.js +0 -181
- package/dist/cli/utils/symlinks.js.map +0 -1
- package/dist/cli/utils/themes.d.ts +0 -101
- package/dist/cli/utils/themes.d.ts.map +0 -1
- package/dist/cli/utils/themes.js +0 -373
- package/dist/cli/utils/themes.js.map +0 -1
- package/dist/cli/utils/themes.test.d.ts +0 -12
- package/dist/cli/utils/themes.test.d.ts.map +0 -1
- package/dist/cli/utils/themes.test.js +0 -147
- package/dist/cli/utils/themes.test.js.map +0 -1
- package/dist/cli/utils/version.d.ts.map +0 -1
- package/dist/cli/utils/version.js.map +0 -1
- package/dist/cli/workspace.test.d.ts +0 -8
- package/dist/cli/workspace.test.d.ts.map +0 -1
- package/dist/cli/workspace.test.js +0 -151
- package/dist/cli/workspace.test.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/jira/jira-epic-creation.d.ts +0 -109
- package/dist/jira/jira-epic-creation.d.ts.map +0 -1
- package/dist/jira/jira-epic-creation.js +0 -253
- package/dist/jira/jira-epic-creation.js.map +0 -1
- package/dist/jira/jira-epic-creation.test.d.ts +0 -16
- package/dist/jira/jira-epic-creation.test.d.ts.map +0 -1
- package/dist/jira/jira-epic-creation.test.js +0 -387
- package/dist/jira/jira-epic-creation.test.js.map +0 -1
- package/dist/jira/jira-sprint-sync.d.ts +0 -247
- package/dist/jira/jira-sprint-sync.d.ts.map +0 -1
- package/dist/jira/jira-sprint-sync.js +0 -670
- package/dist/jira/jira-sprint-sync.js.map +0 -1
- package/dist/jira/jira-sprint-sync.test.d.ts +0 -16
- package/dist/jira/jira-sprint-sync.test.d.ts.map +0 -1
- package/dist/jira/jira-sprint-sync.test.js +0 -845
- package/dist/jira/jira-sprint-sync.test.js.map +0 -1
- package/dist/permissions/index.d.ts.map +0 -1
- package/dist/permissions/index.js.map +0 -1
- package/dist/permissions/permission-schema.d.ts.map +0 -1
- package/dist/permissions/permission-schema.js.map +0 -1
- package/dist/permissions/permission-schema.test.d.ts +0 -40
- package/dist/permissions/permission-schema.test.d.ts.map +0 -1
- package/dist/permissions/permission-schema.test.js +0 -367
- package/dist/permissions/permission-schema.test.js.map +0 -1
- package/dist/scripts/add-ocean-profiles.d.ts +0 -9
- package/dist/scripts/add-ocean-profiles.d.ts.map +0 -1
- package/dist/scripts/add-ocean-profiles.js +0 -695
- package/dist/scripts/add-ocean-profiles.js.map +0 -1
- package/dist/scripts/benchmark-integration.d.ts +0 -182
- package/dist/scripts/benchmark-integration.d.ts.map +0 -1
- package/dist/scripts/benchmark-integration.js +0 -691
- package/dist/scripts/benchmark-integration.js.map +0 -1
- package/dist/scripts/benchmark-integration.test.d.ts +0 -13
- package/dist/scripts/benchmark-integration.test.d.ts.map +0 -1
- package/dist/scripts/benchmark-integration.test.js +0 -680
- package/dist/scripts/benchmark-integration.test.js.map +0 -1
- package/dist/scripts/debugging-scenarios.test.d.ts +0 -18
- package/dist/scripts/debugging-scenarios.test.d.ts.map +0 -1
- package/dist/scripts/debugging-scenarios.test.js +0 -317
- package/dist/scripts/debugging-scenarios.test.js.map +0 -1
- package/dist/scripts/generate-all-spiders.d.ts +0 -10
- package/dist/scripts/generate-all-spiders.d.ts.map +0 -1
- package/dist/scripts/generate-all-spiders.js +0 -306
- package/dist/scripts/generate-all-spiders.js.map +0 -1
- package/dist/scripts/generate-report.d.ts +0 -65
- package/dist/scripts/generate-report.d.ts.map +0 -1
- package/dist/scripts/generate-report.js +0 -378
- package/dist/scripts/generate-report.js.map +0 -1
- package/dist/scripts/generate-report.test.d.ts +0 -13
- package/dist/scripts/generate-report.test.d.ts.map +0 -1
- package/dist/scripts/generate-report.test.js +0 -363
- package/dist/scripts/generate-report.test.js.map +0 -1
- package/dist/scripts/generate-spider-report.d.ts +0 -65
- package/dist/scripts/generate-spider-report.d.ts.map +0 -1
- package/dist/scripts/generate-spider-report.js +0 -366
- package/dist/scripts/generate-spider-report.js.map +0 -1
- package/dist/scripts/generate-spider-report.test.d.ts +0 -13
- package/dist/scripts/generate-spider-report.test.d.ts.map +0 -1
- package/dist/scripts/generate-spider-report.test.js +0 -367
- package/dist/scripts/generate-spider-report.test.js.map +0 -1
- package/dist/scripts/generate-spider.d.ts +0 -47
- package/dist/scripts/generate-spider.d.ts.map +0 -1
- package/dist/scripts/generate-spider.js +0 -338
- package/dist/scripts/generate-spider.js.map +0 -1
- package/dist/scripts/generate-spider.test.d.ts +0 -14
- package/dist/scripts/generate-spider.test.d.ts.map +0 -1
- package/dist/scripts/generate-spider.test.js +0 -271
- package/dist/scripts/generate-spider.test.js.map +0 -1
- package/dist/scripts/job-fair-aggregator.d.ts.map +0 -1
- package/dist/scripts/job-fair-aggregator.js.map +0 -1
- package/dist/scripts/job-fair-aggregator.test.d.ts +0 -14
- package/dist/scripts/job-fair-aggregator.test.d.ts.map +0 -1
- package/dist/scripts/job-fair-aggregator.test.js +0 -616
- package/dist/scripts/job-fair-aggregator.test.js.map +0 -1
- package/dist/scripts/run-ci.test.d.ts +0 -20
- package/dist/scripts/run-ci.test.d.ts.map +0 -1
- package/dist/scripts/run-ci.test.js +0 -127
- package/dist/scripts/run-ci.test.js.map +0 -1
- package/dist/scripts/theme-detail.test.d.ts +0 -10
- package/dist/scripts/theme-detail.test.d.ts.map +0 -1
- package/dist/scripts/theme-detail.test.js +0 -199
- package/dist/scripts/theme-detail.test.js.map +0 -1
- package/dist/scripts/validate-ocean-profiles.d.ts +0 -9
- package/dist/scripts/validate-ocean-profiles.d.ts.map +0 -1
- package/dist/scripts/validate-ocean-profiles.js +0 -130
- package/dist/scripts/validate-ocean-profiles.js.map +0 -1
- package/dist/workflow/gate-handler.d.ts +0 -94
- package/dist/workflow/gate-handler.d.ts.map +0 -1
- package/dist/workflow/gate-handler.js +0 -189
- package/dist/workflow/gate-handler.js.map +0 -1
- package/dist/workflow/gate-handler.test.d.ts +0 -14
- package/dist/workflow/gate-handler.test.d.ts.map +0 -1
- package/dist/workflow/gate-handler.test.js +0 -543
- package/dist/workflow/gate-handler.test.js.map +0 -1
- package/dist/workflow/generic-handoff.d.ts +0 -281
- package/dist/workflow/generic-handoff.d.ts.map +0 -1
- package/dist/workflow/generic-handoff.js +0 -411
- package/dist/workflow/generic-handoff.js.map +0 -1
- package/dist/workflow/generic-handoff.test.d.ts +0 -21
- package/dist/workflow/generic-handoff.test.d.ts.map +0 -1
- package/dist/workflow/generic-handoff.test.js +0 -499
- package/dist/workflow/generic-handoff.test.js.map +0 -1
- package/dist/workflow/generic-sm-finish.d.ts +0 -89
- package/dist/workflow/generic-sm-finish.d.ts.map +0 -1
- package/dist/workflow/generic-sm-finish.js +0 -157
- package/dist/workflow/generic-sm-finish.js.map +0 -1
- package/dist/workflow/generic-sm-setup.d.ts +0 -138
- package/dist/workflow/generic-sm-setup.d.ts.map +0 -1
- package/dist/workflow/generic-sm-setup.js +0 -382
- package/dist/workflow/generic-sm-setup.js.map +0 -1
- package/dist/workflow/index.d.ts.map +0 -1
- package/dist/workflow/index.js.map +0 -1
- package/dist/workflow/session-state.d.ts +0 -92
- package/dist/workflow/session-state.d.ts.map +0 -1
- package/dist/workflow/session-state.js +0 -198
- package/dist/workflow/session-state.js.map +0 -1
- package/dist/workflow/session-state.test.d.ts +0 -8
- package/dist/workflow/session-state.test.d.ts.map +0 -1
- package/dist/workflow/session-state.test.js +0 -551
- package/dist/workflow/session-state.test.js.map +0 -1
- package/dist/workflow/sm-subagents.test.d.ts +0 -23
- package/dist/workflow/sm-subagents.test.d.ts.map +0 -1
- package/dist/workflow/sm-subagents.test.js +0 -727
- package/dist/workflow/sm-subagents.test.js.map +0 -1
- package/dist/workflow/step-parser.d.ts +0 -45
- package/dist/workflow/step-parser.d.ts.map +0 -1
- package/dist/workflow/step-parser.js +0 -147
- package/dist/workflow/step-parser.js.map +0 -1
- package/dist/workflow/step-parser.test.d.ts +0 -14
- package/dist/workflow/step-parser.test.d.ts.map +0 -1
- package/dist/workflow/step-parser.test.js +0 -470
- package/dist/workflow/step-parser.test.js.map +0 -1
- package/dist/workflow/story-workflow-routing.test.d.ts +0 -17
- package/dist/workflow/story-workflow-routing.test.d.ts.map +0 -1
- package/dist/workflow/story-workflow-routing.test.js +0 -559
- package/dist/workflow/story-workflow-routing.test.js.map +0 -1
- package/dist/workflow/test-cache.d.ts +0 -131
- package/dist/workflow/test-cache.d.ts.map +0 -1
- package/dist/workflow/test-cache.js +0 -226
- package/dist/workflow/test-cache.js.map +0 -1
- package/dist/workflow/test-cache.test.d.ts +0 -17
- package/dist/workflow/test-cache.test.d.ts.map +0 -1
- package/dist/workflow/test-cache.test.js +0 -438
- package/dist/workflow/test-cache.test.js.map +0 -1
- package/dist/workflow/trimodal.d.ts +0 -86
- package/dist/workflow/trimodal.d.ts.map +0 -1
- package/dist/workflow/trimodal.js +0 -118
- package/dist/workflow/trimodal.js.map +0 -1
- package/dist/workflow/trimodal.test.d.ts +0 -11
- package/dist/workflow/trimodal.test.d.ts.map +0 -1
- package/dist/workflow/trimodal.test.js +0 -395
- package/dist/workflow/trimodal.test.js.map +0 -1
- package/dist/workflow/variable-resolver.d.ts +0 -67
- package/dist/workflow/variable-resolver.d.ts.map +0 -1
- package/dist/workflow/variable-resolver.js +0 -156
- package/dist/workflow/variable-resolver.js.map +0 -1
- package/dist/workflow/variable-resolver.test.d.ts +0 -14
- package/dist/workflow/variable-resolver.test.d.ts.map +0 -1
- package/dist/workflow/variable-resolver.test.js +0 -400
- package/dist/workflow/variable-resolver.test.js.map +0 -1
- package/dist/workflow/workflow-executor.d.ts +0 -163
- package/dist/workflow/workflow-executor.d.ts.map +0 -1
- package/dist/workflow/workflow-executor.js +0 -197
- package/dist/workflow/workflow-executor.js.map +0 -1
- package/dist/workflow/workflow-executor.test.d.ts +0 -8
- package/dist/workflow/workflow-executor.test.d.ts.map +0 -1
- package/dist/workflow/workflow-executor.test.js +0 -444
- package/dist/workflow/workflow-executor.test.js.map +0 -1
- package/dist/workflow/workflow-loader.d.ts.map +0 -1
- package/dist/workflow/workflow-loader.js.map +0 -1
- package/dist/workflow/workflow-loader.test.d.ts +0 -15
- package/dist/workflow/workflow-loader.test.d.ts.map +0 -1
- package/dist/workflow/workflow-loader.test.js +0 -354
- package/dist/workflow/workflow-loader.test.js.map +0 -1
- package/dist/workflow/workflow-migration.test.d.ts +0 -17
- package/dist/workflow/workflow-migration.test.d.ts.map +0 -1
- package/dist/workflow/workflow-migration.test.js +0 -371
- package/dist/workflow/workflow-migration.test.js.map +0 -1
- package/dist/workflow/workflow-permissions.d.ts.map +0 -1
- package/dist/workflow/workflow-permissions.js.map +0 -1
- package/dist/workflow/workflow-permissions.test.d.ts +0 -15
- package/dist/workflow/workflow-permissions.test.d.ts.map +0 -1
- package/dist/workflow/workflow-permissions.test.js +0 -301
- package/dist/workflow/workflow-permissions.test.js.map +0 -1
- package/dist/workflow/workflow-router.d.ts.map +0 -1
- package/dist/workflow/workflow-router.js.map +0 -1
- package/dist/workflow/workflow-router.test.d.ts +0 -20
- package/dist/workflow/workflow-router.test.d.ts.map +0 -1
- package/dist/workflow/workflow-router.test.js +0 -607
- package/dist/workflow/workflow-router.test.js.map +0 -1
- package/dist/workflow/workflow-schema.d.ts.map +0 -1
- package/dist/workflow/workflow-schema.js.map +0 -1
- package/dist/workflow/workflow-schema.test.d.ts +0 -45
- package/dist/workflow/workflow-schema.test.d.ts.map +0 -1
- package/dist/workflow/workflow-schema.test.js +0 -512
- package/dist/workflow/workflow-schema.test.js.map +0 -1
- package/dist/workflow/workflow-stepped-schema.test.d.ts +0 -18
- package/dist/workflow/workflow-stepped-schema.test.d.ts.map +0 -1
- package/dist/workflow/workflow-stepped-schema.test.js +0 -608
- package/dist/workflow/workflow-stepped-schema.test.js.map +0 -1
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test Result Caching
|
|
3
|
-
*
|
|
4
|
-
* Story 31-8: Eliminate redundant test runs in subagents by caching
|
|
5
|
-
* test results in the session file with git SHA validation.
|
|
6
|
-
*
|
|
7
|
-
* Multiple subagents independently run the full test suite during
|
|
8
|
-
* a single TDD cycle, wasting ~70-110 seconds per story:
|
|
9
|
-
* - reviewer-preflight runs tests (~36s)
|
|
10
|
-
* - dev-handoff runs tests via quality gate (~36s)
|
|
11
|
-
* - reviewer-handoff-approve could run tests (~36s)
|
|
12
|
-
*
|
|
13
|
-
* This module provides functions to:
|
|
14
|
-
* - Parse test cache from session file markdown
|
|
15
|
-
* - Validate cache freshness (timestamp + git SHA)
|
|
16
|
-
* - Format test results for session file caching
|
|
17
|
-
*/
|
|
18
|
-
/**
|
|
19
|
-
* Cached test result data
|
|
20
|
-
*/
|
|
21
|
-
export interface TestCacheEntry {
|
|
22
|
-
/** ISO 8601 timestamp of last test run */
|
|
23
|
-
lastRun: string;
|
|
24
|
-
/** Git commit SHA at time of test run */
|
|
25
|
-
gitSha: string;
|
|
26
|
-
/** Overall result: GREEN (all pass), RED (failures), YELLOW (pass with skips) */
|
|
27
|
-
result: 'GREEN' | 'RED' | 'YELLOW';
|
|
28
|
-
/** Number of passing tests */
|
|
29
|
-
passCount: number;
|
|
30
|
-
/** Number of failing tests */
|
|
31
|
-
failCount: number;
|
|
32
|
-
/** Number of skipped tests */
|
|
33
|
-
skipCount?: number;
|
|
34
|
-
/** Test run duration in seconds */
|
|
35
|
-
durationSeconds: number;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Result of cache validation
|
|
39
|
-
*/
|
|
40
|
-
export interface CacheValidationResult {
|
|
41
|
-
/** Whether cached result can be used */
|
|
42
|
-
valid: boolean;
|
|
43
|
-
/** Reason for validity/invalidity */
|
|
44
|
-
reason: string;
|
|
45
|
-
/** Cached entry if found */
|
|
46
|
-
entry?: TestCacheEntry;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Options for cache validation
|
|
50
|
-
*/
|
|
51
|
-
export interface CacheValidationOptions {
|
|
52
|
-
/** Maximum age in minutes (default: 5) */
|
|
53
|
-
maxAgeMinutes?: number;
|
|
54
|
-
/** Current git SHA to compare against cache */
|
|
55
|
-
currentGitSha: string;
|
|
56
|
-
/** Current timestamp for age check (default: now) */
|
|
57
|
-
currentTime?: Date;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Default cache validity duration in minutes
|
|
61
|
-
*/
|
|
62
|
-
export declare const DEFAULT_CACHE_MAX_AGE_MINUTES = 5;
|
|
63
|
-
/**
|
|
64
|
-
* Parse test cache from session file content
|
|
65
|
-
*
|
|
66
|
-
* Looks for a "## Test Cache" section with a markdown table containing:
|
|
67
|
-
* | Field | Value |
|
|
68
|
-
* |-------|-------|
|
|
69
|
-
* | Last Run | {timestamp} |
|
|
70
|
-
* | Git SHA | {sha} |
|
|
71
|
-
* | Result | {GREEN/RED/YELLOW} |
|
|
72
|
-
* | Pass | {count} |
|
|
73
|
-
* | Fail | {count} |
|
|
74
|
-
* | Skip | {count} |
|
|
75
|
-
* | Duration | {seconds}s |
|
|
76
|
-
*
|
|
77
|
-
* @param sessionContent - Full content of session file
|
|
78
|
-
* @returns Parsed cache entry or null if not found/invalid
|
|
79
|
-
*/
|
|
80
|
-
export declare function parseTestCache(sessionContent: string): TestCacheEntry | null;
|
|
81
|
-
/**
|
|
82
|
-
* Validate cached test results
|
|
83
|
-
*
|
|
84
|
-
* Cache is valid if:
|
|
85
|
-
* 1. Cache entry exists
|
|
86
|
-
* 2. Git SHA matches current HEAD
|
|
87
|
-
* 3. Timestamp is less than maxAgeMinutes old
|
|
88
|
-
*
|
|
89
|
-
* @param sessionContent - Full content of session file
|
|
90
|
-
* @param options - Validation options
|
|
91
|
-
* @returns Validation result with reason
|
|
92
|
-
*/
|
|
93
|
-
export declare function validateTestCache(sessionContent: string, options: CacheValidationOptions): CacheValidationResult;
|
|
94
|
-
/**
|
|
95
|
-
* Format test results as markdown table for session file
|
|
96
|
-
*
|
|
97
|
-
* @param entry - Test cache entry to format
|
|
98
|
-
* @returns Markdown string for Test Cache section
|
|
99
|
-
*/
|
|
100
|
-
export declare function formatTestCache(entry: TestCacheEntry): string;
|
|
101
|
-
/**
|
|
102
|
-
* Create a cache entry from test results
|
|
103
|
-
*
|
|
104
|
-
* @param results - Test run results
|
|
105
|
-
* @param gitSha - Current git SHA
|
|
106
|
-
* @param timestamp - Optional timestamp (default: now)
|
|
107
|
-
* @returns Cache entry ready for formatting
|
|
108
|
-
*/
|
|
109
|
-
export declare function createTestCacheEntry(results: {
|
|
110
|
-
passCount: number;
|
|
111
|
-
failCount: number;
|
|
112
|
-
skipCount?: number;
|
|
113
|
-
durationSeconds: number;
|
|
114
|
-
}, gitSha: string, timestamp?: Date): TestCacheEntry;
|
|
115
|
-
/**
|
|
116
|
-
* Check if tests should be skipped based on cache
|
|
117
|
-
*
|
|
118
|
-
* Convenience function that combines validation and provides
|
|
119
|
-
* a simple boolean result for subagent decision-making.
|
|
120
|
-
*
|
|
121
|
-
* @param sessionContent - Full content of session file
|
|
122
|
-
* @param currentGitSha - Current git SHA
|
|
123
|
-
* @param maxAgeMinutes - Maximum cache age (default: 5)
|
|
124
|
-
* @returns Object with skip decision and reason
|
|
125
|
-
*/
|
|
126
|
-
export declare function shouldSkipTests(sessionContent: string, currentGitSha: string, maxAgeMinutes?: number): {
|
|
127
|
-
skip: boolean;
|
|
128
|
-
reason: string;
|
|
129
|
-
cachedResult?: 'GREEN' | 'RED' | 'YELLOW';
|
|
130
|
-
};
|
|
131
|
-
//# sourceMappingURL=test-cache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-cache.d.ts","sourceRoot":"","sources":["../../src/workflow/test-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACnC,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA8D5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CA+CvB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAoB7D;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB,EACD,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,IAAI,GACf,cAAc,CAsBhB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;CAAE,CAkB9E"}
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test Result Caching
|
|
3
|
-
*
|
|
4
|
-
* Story 31-8: Eliminate redundant test runs in subagents by caching
|
|
5
|
-
* test results in the session file with git SHA validation.
|
|
6
|
-
*
|
|
7
|
-
* Multiple subagents independently run the full test suite during
|
|
8
|
-
* a single TDD cycle, wasting ~70-110 seconds per story:
|
|
9
|
-
* - reviewer-preflight runs tests (~36s)
|
|
10
|
-
* - dev-handoff runs tests via quality gate (~36s)
|
|
11
|
-
* - reviewer-handoff-approve could run tests (~36s)
|
|
12
|
-
*
|
|
13
|
-
* This module provides functions to:
|
|
14
|
-
* - Parse test cache from session file markdown
|
|
15
|
-
* - Validate cache freshness (timestamp + git SHA)
|
|
16
|
-
* - Format test results for session file caching
|
|
17
|
-
*/
|
|
18
|
-
/**
|
|
19
|
-
* Default cache validity duration in minutes
|
|
20
|
-
*/
|
|
21
|
-
export const DEFAULT_CACHE_MAX_AGE_MINUTES = 5;
|
|
22
|
-
/**
|
|
23
|
-
* Parse test cache from session file content
|
|
24
|
-
*
|
|
25
|
-
* Looks for a "## Test Cache" section with a markdown table containing:
|
|
26
|
-
* | Field | Value |
|
|
27
|
-
* |-------|-------|
|
|
28
|
-
* | Last Run | {timestamp} |
|
|
29
|
-
* | Git SHA | {sha} |
|
|
30
|
-
* | Result | {GREEN/RED/YELLOW} |
|
|
31
|
-
* | Pass | {count} |
|
|
32
|
-
* | Fail | {count} |
|
|
33
|
-
* | Skip | {count} |
|
|
34
|
-
* | Duration | {seconds}s |
|
|
35
|
-
*
|
|
36
|
-
* @param sessionContent - Full content of session file
|
|
37
|
-
* @returns Parsed cache entry or null if not found/invalid
|
|
38
|
-
*/
|
|
39
|
-
export function parseTestCache(sessionContent) {
|
|
40
|
-
// Find the Test Cache section
|
|
41
|
-
const cacheMatch = sessionContent.match(/## Test Cache\s*\n\s*\|[^\n]+\|\s*\n\s*\|[-|\s]+\|\s*\n((?:\|[^\n]+\|\s*\n?)+)/i);
|
|
42
|
-
if (!cacheMatch) {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
const tableContent = cacheMatch[1];
|
|
46
|
-
const rows = tableContent.trim().split('\n');
|
|
47
|
-
// Parse table rows into key-value map
|
|
48
|
-
const values = {};
|
|
49
|
-
for (const row of rows) {
|
|
50
|
-
const cells = row.split('|').map(c => c.trim()).filter(c => c);
|
|
51
|
-
if (cells.length >= 2) {
|
|
52
|
-
values[cells[0].toLowerCase()] = cells[1];
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
// Validate required fields
|
|
56
|
-
const lastRun = values['last run'];
|
|
57
|
-
const gitSha = values['git sha'];
|
|
58
|
-
const result = values['result'];
|
|
59
|
-
const passStr = values['pass'];
|
|
60
|
-
const failStr = values['fail'];
|
|
61
|
-
const durationStr = values['duration'];
|
|
62
|
-
if (!lastRun || !gitSha || !result || !passStr || !failStr || !durationStr) {
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
// Parse result enum
|
|
66
|
-
const resultUpper = result.toUpperCase();
|
|
67
|
-
if (resultUpper !== 'GREEN' && resultUpper !== 'RED' && resultUpper !== 'YELLOW') {
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
// Parse duration (e.g., "36s" -> 36)
|
|
71
|
-
const durationMatch = durationStr.match(/^(\d+)s?$/);
|
|
72
|
-
if (!durationMatch) {
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
const entry = {
|
|
76
|
-
lastRun,
|
|
77
|
-
gitSha,
|
|
78
|
-
result: resultUpper,
|
|
79
|
-
passCount: parseInt(passStr, 10),
|
|
80
|
-
failCount: parseInt(failStr, 10),
|
|
81
|
-
durationSeconds: parseInt(durationMatch[1], 10)
|
|
82
|
-
};
|
|
83
|
-
// Parse optional skip count
|
|
84
|
-
const skipStr = values['skip'];
|
|
85
|
-
if (skipStr) {
|
|
86
|
-
entry.skipCount = parseInt(skipStr, 10);
|
|
87
|
-
}
|
|
88
|
-
return entry;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Validate cached test results
|
|
92
|
-
*
|
|
93
|
-
* Cache is valid if:
|
|
94
|
-
* 1. Cache entry exists
|
|
95
|
-
* 2. Git SHA matches current HEAD
|
|
96
|
-
* 3. Timestamp is less than maxAgeMinutes old
|
|
97
|
-
*
|
|
98
|
-
* @param sessionContent - Full content of session file
|
|
99
|
-
* @param options - Validation options
|
|
100
|
-
* @returns Validation result with reason
|
|
101
|
-
*/
|
|
102
|
-
export function validateTestCache(sessionContent, options) {
|
|
103
|
-
const entry = parseTestCache(sessionContent);
|
|
104
|
-
if (!entry) {
|
|
105
|
-
return {
|
|
106
|
-
valid: false,
|
|
107
|
-
reason: 'No test cache found in session file'
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
// Check git SHA
|
|
111
|
-
if (entry.gitSha !== options.currentGitSha) {
|
|
112
|
-
return {
|
|
113
|
-
valid: false,
|
|
114
|
-
reason: `Code changed since last test run (cache: ${entry.gitSha.slice(0, 7)}, current: ${options.currentGitSha.slice(0, 7)})`,
|
|
115
|
-
entry
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
// Check age
|
|
119
|
-
const maxAge = options.maxAgeMinutes ?? DEFAULT_CACHE_MAX_AGE_MINUTES;
|
|
120
|
-
const currentTime = options.currentTime ?? new Date();
|
|
121
|
-
const cacheTime = new Date(entry.lastRun);
|
|
122
|
-
if (isNaN(cacheTime.getTime())) {
|
|
123
|
-
return {
|
|
124
|
-
valid: false,
|
|
125
|
-
reason: 'Invalid timestamp in cache',
|
|
126
|
-
entry
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
const ageMinutes = (currentTime.getTime() - cacheTime.getTime()) / (1000 * 60);
|
|
130
|
-
if (ageMinutes > maxAge) {
|
|
131
|
-
return {
|
|
132
|
-
valid: false,
|
|
133
|
-
reason: `Cache too old (${Math.round(ageMinutes)}m > ${maxAge}m limit)`,
|
|
134
|
-
entry
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
return {
|
|
138
|
-
valid: true,
|
|
139
|
-
reason: `Valid cache: ${entry.result} (${entry.passCount} pass, ${entry.failCount} fail) from ${Math.round(ageMinutes)}m ago`,
|
|
140
|
-
entry
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Format test results as markdown table for session file
|
|
145
|
-
*
|
|
146
|
-
* @param entry - Test cache entry to format
|
|
147
|
-
* @returns Markdown string for Test Cache section
|
|
148
|
-
*/
|
|
149
|
-
export function formatTestCache(entry) {
|
|
150
|
-
const lines = [
|
|
151
|
-
'## Test Cache',
|
|
152
|
-
'',
|
|
153
|
-
'| Field | Value |',
|
|
154
|
-
'|-------|-------|',
|
|
155
|
-
`| Last Run | ${entry.lastRun} |`,
|
|
156
|
-
`| Git SHA | ${entry.gitSha} |`,
|
|
157
|
-
`| Result | ${entry.result} |`,
|
|
158
|
-
`| Pass | ${entry.passCount} |`,
|
|
159
|
-
`| Fail | ${entry.failCount} |`
|
|
160
|
-
];
|
|
161
|
-
if (entry.skipCount !== undefined) {
|
|
162
|
-
lines.push(`| Skip | ${entry.skipCount} |`);
|
|
163
|
-
}
|
|
164
|
-
lines.push(`| Duration | ${entry.durationSeconds}s |`);
|
|
165
|
-
return lines.join('\n');
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Create a cache entry from test results
|
|
169
|
-
*
|
|
170
|
-
* @param results - Test run results
|
|
171
|
-
* @param gitSha - Current git SHA
|
|
172
|
-
* @param timestamp - Optional timestamp (default: now)
|
|
173
|
-
* @returns Cache entry ready for formatting
|
|
174
|
-
*/
|
|
175
|
-
export function createTestCacheEntry(results, gitSha, timestamp) {
|
|
176
|
-
const time = timestamp ?? new Date();
|
|
177
|
-
// Determine result status
|
|
178
|
-
let result;
|
|
179
|
-
if (results.failCount > 0) {
|
|
180
|
-
result = 'RED';
|
|
181
|
-
}
|
|
182
|
-
else if (results.skipCount && results.skipCount > 0) {
|
|
183
|
-
result = 'YELLOW';
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
result = 'GREEN';
|
|
187
|
-
}
|
|
188
|
-
return {
|
|
189
|
-
lastRun: time.toISOString(),
|
|
190
|
-
gitSha,
|
|
191
|
-
result,
|
|
192
|
-
passCount: results.passCount,
|
|
193
|
-
failCount: results.failCount,
|
|
194
|
-
skipCount: results.skipCount,
|
|
195
|
-
durationSeconds: results.durationSeconds
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Check if tests should be skipped based on cache
|
|
200
|
-
*
|
|
201
|
-
* Convenience function that combines validation and provides
|
|
202
|
-
* a simple boolean result for subagent decision-making.
|
|
203
|
-
*
|
|
204
|
-
* @param sessionContent - Full content of session file
|
|
205
|
-
* @param currentGitSha - Current git SHA
|
|
206
|
-
* @param maxAgeMinutes - Maximum cache age (default: 5)
|
|
207
|
-
* @returns Object with skip decision and reason
|
|
208
|
-
*/
|
|
209
|
-
export function shouldSkipTests(sessionContent, currentGitSha, maxAgeMinutes) {
|
|
210
|
-
const validation = validateTestCache(sessionContent, {
|
|
211
|
-
currentGitSha,
|
|
212
|
-
maxAgeMinutes
|
|
213
|
-
});
|
|
214
|
-
if (validation.valid && validation.entry) {
|
|
215
|
-
return {
|
|
216
|
-
skip: true,
|
|
217
|
-
reason: validation.reason,
|
|
218
|
-
cachedResult: validation.entry.result
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
return {
|
|
222
|
-
skip: false,
|
|
223
|
-
reason: validation.reason
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
//# sourceMappingURL=test-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-cache.js","sourceRoot":"","sources":["../../src/workflow/test-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Story 31-8: Test Result Caching
|
|
3
|
-
*
|
|
4
|
-
* These tests verify the test cache module that eliminates redundant
|
|
5
|
-
* test runs in subagents by caching results in the session file.
|
|
6
|
-
*
|
|
7
|
-
* Test categories:
|
|
8
|
-
* 1. parseTestCache() - Parse cache from session file markdown
|
|
9
|
-
* 2. validateTestCache() - Validate cache freshness
|
|
10
|
-
* 3. formatTestCache() - Format cache for session file
|
|
11
|
-
* 4. createTestCacheEntry() - Create entry from results
|
|
12
|
-
* 5. shouldSkipTests() - Convenience function for subagents
|
|
13
|
-
*
|
|
14
|
-
* Run with: npm test
|
|
15
|
-
*/
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=test-cache.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-cache.test.d.ts","sourceRoot":"","sources":["../../src/workflow/test-cache.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|