@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,470 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Story MSSCI-12079: Step file parser with <step-meta> extraction
|
|
3
|
-
*
|
|
4
|
-
* These tests define the contract for parsing step files in stepped workflows.
|
|
5
|
-
* Step files are markdown documents with an optional <step-meta> YAML block.
|
|
6
|
-
*
|
|
7
|
-
* Expected interface:
|
|
8
|
-
* - parseStepFile(content: string, filename?: string): StepParseResult
|
|
9
|
-
* - parseStepFromPath(filePath: string): Promise<StepParseResult>
|
|
10
|
-
*
|
|
11
|
-
* Run with: npm test
|
|
12
|
-
*/
|
|
13
|
-
import { describe, it } from 'node:test';
|
|
14
|
-
import assert from 'node:assert';
|
|
15
|
-
// Import will fail until implementation exists - this confirms RED state
|
|
16
|
-
import { parseStepFile, parseStepFromPath } from './step-parser.js';
|
|
17
|
-
describe('Step File Parser (MSSCI-12079)', () => {
|
|
18
|
-
describe('AC1: Parser extracts step-meta YAML block', () => {
|
|
19
|
-
it('should extract step-meta block from valid step file', () => {
|
|
20
|
-
const content = `# Step 2: Context Analysis
|
|
21
|
-
|
|
22
|
-
<step-meta>
|
|
23
|
-
number: 2
|
|
24
|
-
name: context-analysis
|
|
25
|
-
gate: true
|
|
26
|
-
</step-meta>
|
|
27
|
-
|
|
28
|
-
## Purpose
|
|
29
|
-
Analyze the project context...
|
|
30
|
-
`;
|
|
31
|
-
const result = parseStepFile(content);
|
|
32
|
-
assert.strictEqual(result.success, true, 'Should successfully parse valid step file');
|
|
33
|
-
assert.ok(result.step, 'Should return parsed step');
|
|
34
|
-
assert.ok(result.step.meta, 'Should include raw meta object');
|
|
35
|
-
assert.strictEqual(result.step.meta?.number, 2);
|
|
36
|
-
assert.strictEqual(result.step.meta?.name, 'context-analysis');
|
|
37
|
-
assert.strictEqual(result.step.meta?.gate, true);
|
|
38
|
-
});
|
|
39
|
-
it('should strip step-meta block from content', () => {
|
|
40
|
-
const content = `# Step 1: Introduction
|
|
41
|
-
|
|
42
|
-
<step-meta>
|
|
43
|
-
number: 1
|
|
44
|
-
name: introduction
|
|
45
|
-
</step-meta>
|
|
46
|
-
|
|
47
|
-
## Welcome
|
|
48
|
-
This is the introduction step.
|
|
49
|
-
`;
|
|
50
|
-
const result = parseStepFile(content);
|
|
51
|
-
assert.strictEqual(result.success, true);
|
|
52
|
-
assert.ok(result.step);
|
|
53
|
-
// Content should not contain the step-meta block
|
|
54
|
-
assert.ok(!result.step.content.includes('<step-meta>'), 'Content should not include step-meta opening tag');
|
|
55
|
-
assert.ok(!result.step.content.includes('</step-meta>'), 'Content should not include step-meta closing tag');
|
|
56
|
-
// Content should still include the markdown
|
|
57
|
-
assert.ok(result.step.content.includes('## Welcome'), 'Content should preserve markdown after meta');
|
|
58
|
-
assert.ok(result.step.content.includes('This is the introduction step'), 'Content should preserve body text');
|
|
59
|
-
});
|
|
60
|
-
it('should handle step-meta with extra fields', () => {
|
|
61
|
-
const content = `<step-meta>
|
|
62
|
-
number: 3
|
|
63
|
-
name: custom-step
|
|
64
|
-
gate: false
|
|
65
|
-
custom_field: some-value
|
|
66
|
-
another_field: 123
|
|
67
|
-
</step-meta>
|
|
68
|
-
|
|
69
|
-
Content here.
|
|
70
|
-
`;
|
|
71
|
-
const result = parseStepFile(content);
|
|
72
|
-
assert.strictEqual(result.success, true);
|
|
73
|
-
assert.ok(result.step?.meta);
|
|
74
|
-
assert.strictEqual(result.step.meta.custom_field, 'some-value');
|
|
75
|
-
assert.strictEqual(result.step.meta.another_field, 123);
|
|
76
|
-
});
|
|
77
|
-
it('should handle step-meta at different positions in file', () => {
|
|
78
|
-
// Meta after heading
|
|
79
|
-
const content = `# Step 5: Review
|
|
80
|
-
|
|
81
|
-
Some preamble text here.
|
|
82
|
-
|
|
83
|
-
<step-meta>
|
|
84
|
-
number: 5
|
|
85
|
-
name: review
|
|
86
|
-
</step-meta>
|
|
87
|
-
|
|
88
|
-
## Instructions
|
|
89
|
-
Do the review.
|
|
90
|
-
`;
|
|
91
|
-
const result = parseStepFile(content);
|
|
92
|
-
assert.strictEqual(result.success, true);
|
|
93
|
-
assert.strictEqual(result.step?.number, 5);
|
|
94
|
-
assert.strictEqual(result.step?.name, 'review');
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
describe('AC2: Parser returns step number, name, gate flag', () => {
|
|
98
|
-
it('should return number from meta', () => {
|
|
99
|
-
const content = `<step-meta>
|
|
100
|
-
number: 7
|
|
101
|
-
name: final-step
|
|
102
|
-
</step-meta>
|
|
103
|
-
|
|
104
|
-
Content.
|
|
105
|
-
`;
|
|
106
|
-
const result = parseStepFile(content);
|
|
107
|
-
assert.strictEqual(result.success, true);
|
|
108
|
-
assert.strictEqual(result.step?.number, 7);
|
|
109
|
-
});
|
|
110
|
-
it('should return name from meta', () => {
|
|
111
|
-
const content = `<step-meta>
|
|
112
|
-
number: 1
|
|
113
|
-
name: initialization-step
|
|
114
|
-
</step-meta>
|
|
115
|
-
|
|
116
|
-
Content.
|
|
117
|
-
`;
|
|
118
|
-
const result = parseStepFile(content);
|
|
119
|
-
assert.strictEqual(result.success, true);
|
|
120
|
-
assert.strictEqual(result.step?.name, 'initialization-step');
|
|
121
|
-
});
|
|
122
|
-
it('should return gate flag from meta when true', () => {
|
|
123
|
-
const content = `<step-meta>
|
|
124
|
-
number: 3
|
|
125
|
-
name: checkpoint
|
|
126
|
-
gate: true
|
|
127
|
-
</step-meta>
|
|
128
|
-
|
|
129
|
-
This step has a gate.
|
|
130
|
-
`;
|
|
131
|
-
const result = parseStepFile(content);
|
|
132
|
-
assert.strictEqual(result.success, true);
|
|
133
|
-
assert.strictEqual(result.step?.gate, true);
|
|
134
|
-
});
|
|
135
|
-
it('should return gate flag from meta when false', () => {
|
|
136
|
-
const content = `<step-meta>
|
|
137
|
-
number: 2
|
|
138
|
-
name: no-gate
|
|
139
|
-
gate: false
|
|
140
|
-
</step-meta>
|
|
141
|
-
|
|
142
|
-
This step has no gate.
|
|
143
|
-
`;
|
|
144
|
-
const result = parseStepFile(content);
|
|
145
|
-
assert.strictEqual(result.success, true);
|
|
146
|
-
assert.strictEqual(result.step?.gate, false);
|
|
147
|
-
});
|
|
148
|
-
it('should default gate to false when not specified in meta', () => {
|
|
149
|
-
const content = `<step-meta>
|
|
150
|
-
number: 4
|
|
151
|
-
name: implicit-no-gate
|
|
152
|
-
</step-meta>
|
|
153
|
-
|
|
154
|
-
No gate field specified.
|
|
155
|
-
`;
|
|
156
|
-
const result = parseStepFile(content);
|
|
157
|
-
assert.strictEqual(result.success, true);
|
|
158
|
-
assert.strictEqual(result.step?.gate, false, 'Gate should default to false');
|
|
159
|
-
});
|
|
160
|
-
it('should preserve content field with markdown intact', () => {
|
|
161
|
-
const content = `<step-meta>
|
|
162
|
-
number: 1
|
|
163
|
-
name: test
|
|
164
|
-
</step-meta>
|
|
165
|
-
|
|
166
|
-
# Heading
|
|
167
|
-
|
|
168
|
-
Some **bold** and *italic* text.
|
|
169
|
-
|
|
170
|
-
\`\`\`typescript
|
|
171
|
-
const x = 1;
|
|
172
|
-
\`\`\`
|
|
173
|
-
|
|
174
|
-
- List item 1
|
|
175
|
-
- List item 2
|
|
176
|
-
`;
|
|
177
|
-
const result = parseStepFile(content);
|
|
178
|
-
assert.strictEqual(result.success, true);
|
|
179
|
-
assert.ok(result.step?.content.includes('# Heading'));
|
|
180
|
-
assert.ok(result.step?.content.includes('**bold**'));
|
|
181
|
-
assert.ok(result.step?.content.includes('const x = 1;'));
|
|
182
|
-
assert.ok(result.step?.content.includes('- List item 1'));
|
|
183
|
-
});
|
|
184
|
-
});
|
|
185
|
-
describe('AC3: Parser handles missing meta gracefully', () => {
|
|
186
|
-
it('should extract number and name from filename when no meta block', () => {
|
|
187
|
-
const content = `# Step 3: Architecture Design
|
|
188
|
-
|
|
189
|
-
This step file has no meta block.
|
|
190
|
-
|
|
191
|
-
## Instructions
|
|
192
|
-
Design the architecture.
|
|
193
|
-
`;
|
|
194
|
-
const result = parseStepFile(content, 'step-03-architecture-design.md');
|
|
195
|
-
assert.strictEqual(result.success, true);
|
|
196
|
-
assert.strictEqual(result.step?.number, 3);
|
|
197
|
-
assert.strictEqual(result.step?.name, 'architecture-design');
|
|
198
|
-
});
|
|
199
|
-
it('should handle step-{n} filename pattern (single digit)', () => {
|
|
200
|
-
const content = `No meta here.`;
|
|
201
|
-
const result = parseStepFile(content, 'step-5-review.md');
|
|
202
|
-
assert.strictEqual(result.success, true);
|
|
203
|
-
assert.strictEqual(result.step?.number, 5);
|
|
204
|
-
assert.strictEqual(result.step?.name, 'review');
|
|
205
|
-
});
|
|
206
|
-
it('should handle step-{nn} filename pattern (double digit)', () => {
|
|
207
|
-
const content = `No meta here.`;
|
|
208
|
-
const result = parseStepFile(content, 'step-12-final-review.md');
|
|
209
|
-
assert.strictEqual(result.success, true);
|
|
210
|
-
assert.strictEqual(result.step?.number, 12);
|
|
211
|
-
assert.strictEqual(result.step?.name, 'final-review');
|
|
212
|
-
});
|
|
213
|
-
it('should return entire content when no meta block', () => {
|
|
214
|
-
const fullContent = `# Full Content
|
|
215
|
-
|
|
216
|
-
All of this should be in the content field.
|
|
217
|
-
|
|
218
|
-
## Section 1
|
|
219
|
-
Text here.
|
|
220
|
-
|
|
221
|
-
## Section 2
|
|
222
|
-
More text.
|
|
223
|
-
`;
|
|
224
|
-
const result = parseStepFile(fullContent, 'step-01-full.md');
|
|
225
|
-
assert.strictEqual(result.success, true);
|
|
226
|
-
assert.ok(result.step?.content.includes('# Full Content'));
|
|
227
|
-
assert.ok(result.step?.content.includes('## Section 1'));
|
|
228
|
-
assert.ok(result.step?.content.includes('## Section 2'));
|
|
229
|
-
});
|
|
230
|
-
it('should return error when no meta and filename cannot be parsed', () => {
|
|
231
|
-
const content = `No meta block here.`;
|
|
232
|
-
const result = parseStepFile(content, 'random-file.md');
|
|
233
|
-
assert.strictEqual(result.success, false, 'Should fail without meta or parseable filename');
|
|
234
|
-
assert.ok(result.error, 'Should include error message');
|
|
235
|
-
});
|
|
236
|
-
it('should return error when no meta and no filename provided', () => {
|
|
237
|
-
const content = `No meta block here and no filename.`;
|
|
238
|
-
const result = parseStepFile(content);
|
|
239
|
-
assert.strictEqual(result.success, false, 'Should fail without meta or filename');
|
|
240
|
-
assert.ok(result.error, 'Should include error message');
|
|
241
|
-
});
|
|
242
|
-
it('should handle empty file', () => {
|
|
243
|
-
const result = parseStepFile('', 'step-01-empty.md');
|
|
244
|
-
assert.strictEqual(result.success, true, 'Empty file with valid filename should succeed');
|
|
245
|
-
assert.strictEqual(result.step?.number, 1);
|
|
246
|
-
assert.strictEqual(result.step?.name, 'empty');
|
|
247
|
-
assert.strictEqual(result.step?.content, '');
|
|
248
|
-
});
|
|
249
|
-
it('should handle malformed YAML in meta block gracefully', () => {
|
|
250
|
-
const content = `<step-meta>
|
|
251
|
-
number: not-a-number
|
|
252
|
-
name: [invalid yaml
|
|
253
|
-
gate: {broken
|
|
254
|
-
</step-meta>
|
|
255
|
-
|
|
256
|
-
Content after bad meta.
|
|
257
|
-
`;
|
|
258
|
-
const result = parseStepFile(content, 'step-01-fallback.md');
|
|
259
|
-
// Should fall back to filename parsing, not crash
|
|
260
|
-
assert.strictEqual(result.success, true, 'Should fall back to filename when meta is malformed');
|
|
261
|
-
assert.strictEqual(result.step?.number, 1);
|
|
262
|
-
assert.strictEqual(result.step?.name, 'fallback');
|
|
263
|
-
});
|
|
264
|
-
});
|
|
265
|
-
describe('AC4: Gate detection from meta or marker', () => {
|
|
266
|
-
it('should detect gate from meta gate: true', () => {
|
|
267
|
-
const content = `<step-meta>
|
|
268
|
-
number: 1
|
|
269
|
-
name: gated-step
|
|
270
|
-
gate: true
|
|
271
|
-
</step-meta>
|
|
272
|
-
|
|
273
|
-
No marker in content.
|
|
274
|
-
`;
|
|
275
|
-
const result = parseStepFile(content);
|
|
276
|
-
assert.strictEqual(result.success, true);
|
|
277
|
-
assert.strictEqual(result.step?.gate, true, 'Gate should be true from meta');
|
|
278
|
-
});
|
|
279
|
-
it('should detect gate from <!-- GATE --> marker in content', () => {
|
|
280
|
-
const content = `<step-meta>
|
|
281
|
-
number: 2
|
|
282
|
-
name: marker-gate
|
|
283
|
-
</step-meta>
|
|
284
|
-
|
|
285
|
-
## Instructions
|
|
286
|
-
Do the thing.
|
|
287
|
-
|
|
288
|
-
<!-- GATE -->
|
|
289
|
-
- [C] Continue
|
|
290
|
-
- [R] Revise
|
|
291
|
-
`;
|
|
292
|
-
const result = parseStepFile(content);
|
|
293
|
-
assert.strictEqual(result.success, true);
|
|
294
|
-
assert.strictEqual(result.step?.gate, true, 'Gate should be true from marker');
|
|
295
|
-
});
|
|
296
|
-
it('should detect gate from marker when no meta block', () => {
|
|
297
|
-
const content = `# Step 3: Review
|
|
298
|
-
|
|
299
|
-
Do the review.
|
|
300
|
-
|
|
301
|
-
## Gate
|
|
302
|
-
|
|
303
|
-
<!-- GATE -->
|
|
304
|
-
- [C] Continue to next step
|
|
305
|
-
- [R] Revise this step
|
|
306
|
-
`;
|
|
307
|
-
const result = parseStepFile(content, 'step-03-review.md');
|
|
308
|
-
assert.strictEqual(result.success, true);
|
|
309
|
-
assert.strictEqual(result.step?.gate, true, 'Gate should be detected from marker');
|
|
310
|
-
});
|
|
311
|
-
it('should prefer meta gate: true over missing marker', () => {
|
|
312
|
-
const content = `<step-meta>
|
|
313
|
-
number: 1
|
|
314
|
-
name: meta-wins
|
|
315
|
-
gate: true
|
|
316
|
-
</step-meta>
|
|
317
|
-
|
|
318
|
-
No marker here, but meta says gate is true.
|
|
319
|
-
`;
|
|
320
|
-
const result = parseStepFile(content);
|
|
321
|
-
assert.strictEqual(result.success, true);
|
|
322
|
-
assert.strictEqual(result.step?.gate, true);
|
|
323
|
-
});
|
|
324
|
-
it('should prefer meta gate: false over marker in content', () => {
|
|
325
|
-
// Meta explicitly says no gate, even though marker exists
|
|
326
|
-
const content = `<step-meta>
|
|
327
|
-
number: 5
|
|
328
|
-
name: meta-overrides
|
|
329
|
-
gate: false
|
|
330
|
-
</step-meta>
|
|
331
|
-
|
|
332
|
-
## Gate Section
|
|
333
|
-
|
|
334
|
-
<!-- GATE -->
|
|
335
|
-
This marker should be ignored because meta says gate: false.
|
|
336
|
-
`;
|
|
337
|
-
const result = parseStepFile(content);
|
|
338
|
-
assert.strictEqual(result.success, true);
|
|
339
|
-
assert.strictEqual(result.step?.gate, false, 'Meta gate: false should override marker');
|
|
340
|
-
});
|
|
341
|
-
it('should handle multiple gate markers (use first occurrence)', () => {
|
|
342
|
-
const content = `<step-meta>
|
|
343
|
-
number: 1
|
|
344
|
-
name: multi-gate
|
|
345
|
-
</step-meta>
|
|
346
|
-
|
|
347
|
-
## First Gate
|
|
348
|
-
|
|
349
|
-
<!-- GATE -->
|
|
350
|
-
First gate marker.
|
|
351
|
-
|
|
352
|
-
## Second Gate
|
|
353
|
-
|
|
354
|
-
<!-- GATE -->
|
|
355
|
-
Second gate marker should not matter.
|
|
356
|
-
`;
|
|
357
|
-
const result = parseStepFile(content);
|
|
358
|
-
assert.strictEqual(result.success, true);
|
|
359
|
-
assert.strictEqual(result.step?.gate, true);
|
|
360
|
-
});
|
|
361
|
-
it('should detect gate marker with surrounding whitespace', () => {
|
|
362
|
-
const content = `<step-meta>
|
|
363
|
-
number: 1
|
|
364
|
-
name: whitespace-gate
|
|
365
|
-
</step-meta>
|
|
366
|
-
|
|
367
|
-
Content.
|
|
368
|
-
|
|
369
|
-
<!-- GATE -->
|
|
370
|
-
|
|
371
|
-
More content.
|
|
372
|
-
`;
|
|
373
|
-
const result = parseStepFile(content);
|
|
374
|
-
assert.strictEqual(result.success, true);
|
|
375
|
-
assert.strictEqual(result.step?.gate, true, 'Should detect marker with whitespace');
|
|
376
|
-
});
|
|
377
|
-
it('should not detect gate from similar but different markers', () => {
|
|
378
|
-
const content = `<step-meta>
|
|
379
|
-
number: 1
|
|
380
|
-
name: no-gate
|
|
381
|
-
</step-meta>
|
|
382
|
-
|
|
383
|
-
<!-- NOT A GATE -->
|
|
384
|
-
<!-- GATES -->
|
|
385
|
-
<!-- gate -->
|
|
386
|
-
<!--GATE-->
|
|
387
|
-
|
|
388
|
-
These are not the gate marker you're looking for.
|
|
389
|
-
`;
|
|
390
|
-
const result = parseStepFile(content);
|
|
391
|
-
assert.strictEqual(result.success, true);
|
|
392
|
-
// Only exact "<!-- GATE -->" should match (case sensitive, with spaces)
|
|
393
|
-
assert.strictEqual(result.step?.gate, false, 'Should not match similar markers');
|
|
394
|
-
});
|
|
395
|
-
});
|
|
396
|
-
describe('Edge Cases', () => {
|
|
397
|
-
it('should handle step-meta with only number', () => {
|
|
398
|
-
const content = `<step-meta>
|
|
399
|
-
number: 42
|
|
400
|
-
</step-meta>
|
|
401
|
-
|
|
402
|
-
Content.
|
|
403
|
-
`;
|
|
404
|
-
const result = parseStepFile(content, 'step-42-named-in-file.md');
|
|
405
|
-
assert.strictEqual(result.success, true);
|
|
406
|
-
assert.strictEqual(result.step?.number, 42);
|
|
407
|
-
// Name should come from filename since not in meta
|
|
408
|
-
assert.strictEqual(result.step?.name, 'named-in-file');
|
|
409
|
-
});
|
|
410
|
-
it('should handle step-meta with only name', () => {
|
|
411
|
-
const content = `<step-meta>
|
|
412
|
-
name: only-name
|
|
413
|
-
</step-meta>
|
|
414
|
-
|
|
415
|
-
Content.
|
|
416
|
-
`;
|
|
417
|
-
const result = parseStepFile(content, 'step-07-ignored.md');
|
|
418
|
-
assert.strictEqual(result.success, true);
|
|
419
|
-
// Number should come from filename since not in meta
|
|
420
|
-
assert.strictEqual(result.step?.number, 7);
|
|
421
|
-
assert.strictEqual(result.step?.name, 'only-name');
|
|
422
|
-
});
|
|
423
|
-
it('should handle unicode in content', () => {
|
|
424
|
-
const content = `<step-meta>
|
|
425
|
-
number: 1
|
|
426
|
-
name: unicode
|
|
427
|
-
</step-meta>
|
|
428
|
-
|
|
429
|
-
# こんにちは 🌍
|
|
430
|
-
|
|
431
|
-
Content with émojis 🎉 and spëcial çharacters.
|
|
432
|
-
`;
|
|
433
|
-
const result = parseStepFile(content);
|
|
434
|
-
assert.strictEqual(result.success, true);
|
|
435
|
-
assert.ok(result.step?.content.includes('こんにちは'));
|
|
436
|
-
assert.ok(result.step?.content.includes('🌍'));
|
|
437
|
-
});
|
|
438
|
-
it('should handle Windows line endings (CRLF)', () => {
|
|
439
|
-
const content = `<step-meta>\r\nnumber: 1\r\nname: crlf\r\n</step-meta>\r\n\r\nContent with CRLF.\r\n`;
|
|
440
|
-
const result = parseStepFile(content);
|
|
441
|
-
assert.strictEqual(result.success, true);
|
|
442
|
-
assert.strictEqual(result.step?.number, 1);
|
|
443
|
-
assert.strictEqual(result.step?.name, 'crlf');
|
|
444
|
-
});
|
|
445
|
-
it('should preserve indentation in content', () => {
|
|
446
|
-
const content = `<step-meta>
|
|
447
|
-
number: 1
|
|
448
|
-
name: indented
|
|
449
|
-
</step-meta>
|
|
450
|
-
|
|
451
|
-
indented line
|
|
452
|
-
double indented
|
|
453
|
-
\ttab indented
|
|
454
|
-
`;
|
|
455
|
-
const result = parseStepFile(content);
|
|
456
|
-
assert.strictEqual(result.success, true);
|
|
457
|
-
assert.ok(result.step?.content.includes(' indented line'));
|
|
458
|
-
assert.ok(result.step?.content.includes(' double indented'));
|
|
459
|
-
});
|
|
460
|
-
});
|
|
461
|
-
describe('parseStepFromPath', () => {
|
|
462
|
-
it('should be an async function', () => {
|
|
463
|
-
// This test verifies the function signature
|
|
464
|
-
assert.strictEqual(typeof parseStepFromPath, 'function');
|
|
465
|
-
// The actual file reading tests would need mock filesystem
|
|
466
|
-
// but we verify the function exists and returns a promise-like value
|
|
467
|
-
});
|
|
468
|
-
});
|
|
469
|
-
});
|
|
470
|
-
//# sourceMappingURL=step-parser.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"step-parser.test.js","sourceRoot":"","sources":["../../src/workflow/step-parser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Story 38-9: SM Workflow Routing from Story Tags
|
|
3
|
-
*
|
|
4
|
-
* These tests define the contract for SM reading and honoring
|
|
5
|
-
* the `workflow:` tag on stories in sprint YAML.
|
|
6
|
-
*
|
|
7
|
-
* Acceptance Criteria:
|
|
8
|
-
* - AC1: SM reads workflow tag from story in sprint YAML
|
|
9
|
-
* - AC2: SM loads correct workflow definition from pennyfarthing-dist/workflows/
|
|
10
|
-
* - AC3: SM follows workflow's phase sequence (agent-docs → Orchestrator)
|
|
11
|
-
* - AC4: Fallback to TDD if no tag or unknown workflow
|
|
12
|
-
* - AC5: Session file records which workflow is active
|
|
13
|
-
*
|
|
14
|
-
* Run with: npm test
|
|
15
|
-
*/
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=story-workflow-routing.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"story-workflow-routing.test.d.ts","sourceRoot":"","sources":["../../src/workflow/story-workflow-routing.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|