@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"variable-resolver.js","sourceRoot":"","sources":["../../src/workflow/variable-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0CH,0FAA0F;AAC1F,gDAAgD;AAChD,uFAAuF;AACvF,MAAM,cAAc,GAAG,2CAA2C,CAAC;AAEnE;;GAEG;AACH,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,OAAe,EACf,aAA+B;IAE/B,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,OAAyB;IAEzB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,SAAS,GAA2B,EAAE,CAAC;IAE7C,4DAA4D;IAC5D,sDAAsD;IACtD,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE3E,0CAA0C;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtB,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,SAAS,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACzE,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,QAAQ;QACR,UAAU;QACV,OAAO,EAAE,SAAS;KACnB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,OAA4B;IAE5B,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,iCAAiC;IACjC,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;QAC1B,MAAM,cAAc,GAA2B,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAChE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,cAAc,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YACjC,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;IACL,CAAC;IAED,gCAAgC;IAChC,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,OAAO,CAAC,WAAW;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,MAAM,SAAS,GAA2B;QACxC,IAAI,EAAE,cAAc,EAAE;KACvB,CAAC;IACF,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;QACzB,SAAS,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAC/C,CAAC;IACD,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IAEH,6BAA6B;IAC7B,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE;YACN,kBAAkB,EAAE,qBAAqB;SAC1C;KACF,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Story MSSCI-12081: Variable resolver with priority chain
|
|
3
|
-
*
|
|
4
|
-
* These tests define the contract for resolving {variable} placeholders
|
|
5
|
-
* in step file content from multiple sources with priority ordering.
|
|
6
|
-
*
|
|
7
|
-
* Expected interface:
|
|
8
|
-
* - resolveVariables(content: string, sources: VariableSource[]): ResolveResult
|
|
9
|
-
* - resolveStepVariables(stepContent: string, options?): ResolveResult
|
|
10
|
-
*
|
|
11
|
-
* Run with: npm test
|
|
12
|
-
*/
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=variable-resolver.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"variable-resolver.test.d.ts","sourceRoot":"","sources":["../../src/workflow/variable-resolver.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -1,400 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Story MSSCI-12081: Variable resolver with priority chain
|
|
3
|
-
*
|
|
4
|
-
* These tests define the contract for resolving {variable} placeholders
|
|
5
|
-
* in step file content from multiple sources with priority ordering.
|
|
6
|
-
*
|
|
7
|
-
* Expected interface:
|
|
8
|
-
* - resolveVariables(content: string, sources: VariableSource[]): ResolveResult
|
|
9
|
-
* - resolveStepVariables(stepContent: string, options?): ResolveResult
|
|
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 { resolveVariables, resolveStepVariables, } from './variable-resolver.js';
|
|
17
|
-
describe('Variable Resolver (MSSCI-12081)', () => {
|
|
18
|
-
describe('AC1: Resolves variables from workflow YAML', () => {
|
|
19
|
-
it('should resolve a single variable from source', () => {
|
|
20
|
-
const content = 'Write output to {output_file}.';
|
|
21
|
-
const sources = [
|
|
22
|
-
{ name: 'workflow', priority: 1, values: { output_file: 'results.md' } }
|
|
23
|
-
];
|
|
24
|
-
const result = resolveVariables(content, sources);
|
|
25
|
-
assert.strictEqual(result.content, 'Write output to results.md.');
|
|
26
|
-
assert.deepStrictEqual(result.resolved, ['output_file']);
|
|
27
|
-
assert.deepStrictEqual(result.unresolved, []);
|
|
28
|
-
assert.strictEqual(result.sources['output_file'], 'workflow');
|
|
29
|
-
});
|
|
30
|
-
it('should resolve multiple variables in one string', () => {
|
|
31
|
-
const content = 'Project: {project_name} | Version: {version}';
|
|
32
|
-
const sources = [
|
|
33
|
-
{ name: 'workflow', priority: 1, values: { project_name: 'pennyfarthing', version: '7.0.2' } }
|
|
34
|
-
];
|
|
35
|
-
const result = resolveVariables(content, sources);
|
|
36
|
-
assert.strictEqual(result.content, 'Project: pennyfarthing | Version: 7.0.2');
|
|
37
|
-
assert.ok(result.resolved.includes('project_name'));
|
|
38
|
-
assert.ok(result.resolved.includes('version'));
|
|
39
|
-
assert.strictEqual(result.resolved.length, 2);
|
|
40
|
-
});
|
|
41
|
-
it('should resolve same variable appearing multiple times', () => {
|
|
42
|
-
const content = '{name} is here. Hello, {name}!';
|
|
43
|
-
const sources = [
|
|
44
|
-
{ name: 'workflow', priority: 1, values: { name: 'Sam' } }
|
|
45
|
-
];
|
|
46
|
-
const result = resolveVariables(content, sources);
|
|
47
|
-
assert.strictEqual(result.content, 'Sam is here. Hello, Sam!');
|
|
48
|
-
// resolved should list variable once, not twice
|
|
49
|
-
assert.deepStrictEqual(result.resolved, ['name']);
|
|
50
|
-
});
|
|
51
|
-
it('should handle content with no variables', () => {
|
|
52
|
-
const content = 'This content has no variables at all.';
|
|
53
|
-
const sources = [
|
|
54
|
-
{ name: 'workflow', priority: 1, values: { unused: 'value' } }
|
|
55
|
-
];
|
|
56
|
-
const result = resolveVariables(content, sources);
|
|
57
|
-
assert.strictEqual(result.content, content);
|
|
58
|
-
assert.deepStrictEqual(result.resolved, []);
|
|
59
|
-
assert.deepStrictEqual(result.unresolved, []);
|
|
60
|
-
});
|
|
61
|
-
it('should handle empty sources array', () => {
|
|
62
|
-
const content = 'Value: {some_var}';
|
|
63
|
-
const sources = [];
|
|
64
|
-
const result = resolveVariables(content, sources);
|
|
65
|
-
assert.strictEqual(result.content, 'Value: {some_var}');
|
|
66
|
-
assert.deepStrictEqual(result.resolved, []);
|
|
67
|
-
assert.deepStrictEqual(result.unresolved, ['some_var']);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
describe('AC2: Falls back through priority chain', () => {
|
|
71
|
-
it('should resolve from highest priority source first', () => {
|
|
72
|
-
const content = 'Theme: {theme}';
|
|
73
|
-
const sources = [
|
|
74
|
-
{ name: 'workflow', priority: 1, values: { theme: 'west-wing' } },
|
|
75
|
-
{ name: 'session', priority: 2, values: { theme: 'star-trek' } },
|
|
76
|
-
{ name: 'config', priority: 3, values: { theme: 'discworld' } },
|
|
77
|
-
];
|
|
78
|
-
const result = resolveVariables(content, sources);
|
|
79
|
-
assert.strictEqual(result.content, 'Theme: west-wing');
|
|
80
|
-
assert.strictEqual(result.sources['theme'], 'workflow');
|
|
81
|
-
});
|
|
82
|
-
it('should fall back to lower priority when higher priority lacks variable', () => {
|
|
83
|
-
const content = 'Project: {project_root}';
|
|
84
|
-
const sources = [
|
|
85
|
-
{ name: 'workflow', priority: 1, values: {} },
|
|
86
|
-
{ name: 'session', priority: 2, values: {} },
|
|
87
|
-
{ name: 'environment', priority: 4, values: { project_root: '/Users/keithavery/Projects/pennyfarthing' } },
|
|
88
|
-
];
|
|
89
|
-
const result = resolveVariables(content, sources);
|
|
90
|
-
assert.strictEqual(result.content, 'Project: /Users/keithavery/Projects/pennyfarthing');
|
|
91
|
-
assert.strictEqual(result.sources['project_root'], 'environment');
|
|
92
|
-
});
|
|
93
|
-
it('should resolve different variables from different sources', () => {
|
|
94
|
-
const content = '{story_id} in {project_root} with {theme}';
|
|
95
|
-
const sources = [
|
|
96
|
-
{ name: 'workflow', priority: 1, values: { theme: 'west-wing' } },
|
|
97
|
-
{ name: 'session', priority: 2, values: { story_id: 'MSSCI-12081' } },
|
|
98
|
-
{ name: 'environment', priority: 4, values: { project_root: '/home/user/project' } },
|
|
99
|
-
];
|
|
100
|
-
const result = resolveVariables(content, sources);
|
|
101
|
-
assert.strictEqual(result.content, 'MSSCI-12081 in /home/user/project with west-wing');
|
|
102
|
-
assert.strictEqual(result.sources['theme'], 'workflow');
|
|
103
|
-
assert.strictEqual(result.sources['story_id'], 'session');
|
|
104
|
-
assert.strictEqual(result.sources['project_root'], 'environment');
|
|
105
|
-
});
|
|
106
|
-
it('should respect priority ordering regardless of array order', () => {
|
|
107
|
-
const content = 'Value: {key}';
|
|
108
|
-
// Sources provided out of priority order
|
|
109
|
-
const sources = [
|
|
110
|
-
{ name: 'config', priority: 3, values: { key: 'from-config' } },
|
|
111
|
-
{ name: 'workflow', priority: 1, values: { key: 'from-workflow' } },
|
|
112
|
-
{ name: 'defaults', priority: 5, values: { key: 'from-defaults' } },
|
|
113
|
-
{ name: 'session', priority: 2, values: { key: 'from-session' } },
|
|
114
|
-
];
|
|
115
|
-
const result = resolveVariables(content, sources);
|
|
116
|
-
assert.strictEqual(result.content, 'Value: from-workflow');
|
|
117
|
-
assert.strictEqual(result.sources['key'], 'workflow');
|
|
118
|
-
});
|
|
119
|
-
it('should handle sources with same priority (first wins)', () => {
|
|
120
|
-
const content = 'Value: {var}';
|
|
121
|
-
const sources = [
|
|
122
|
-
{ name: 'source-a', priority: 1, values: { var: 'a-value' } },
|
|
123
|
-
{ name: 'source-b', priority: 1, values: { var: 'b-value' } },
|
|
124
|
-
];
|
|
125
|
-
const result = resolveVariables(content, sources);
|
|
126
|
-
// First source with matching priority wins
|
|
127
|
-
assert.strictEqual(result.content, 'Value: a-value');
|
|
128
|
-
assert.strictEqual(result.sources['var'], 'source-a');
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
describe('AC3: Standard variables documented and working', () => {
|
|
132
|
-
it('should resolve project_root from environment source', () => {
|
|
133
|
-
const content = 'Root: {project_root}';
|
|
134
|
-
const sources = [
|
|
135
|
-
{ name: 'environment', priority: 4, values: { project_root: '/abs/path/to/project' } },
|
|
136
|
-
];
|
|
137
|
-
const result = resolveVariables(content, sources);
|
|
138
|
-
assert.strictEqual(result.content, 'Root: /abs/path/to/project');
|
|
139
|
-
});
|
|
140
|
-
it('should resolve date variable with YYYY-MM-DD format', () => {
|
|
141
|
-
const content = 'Today: {date}';
|
|
142
|
-
const sources = [
|
|
143
|
-
{ name: 'system', priority: 4, values: { date: '2026-01-20' } },
|
|
144
|
-
];
|
|
145
|
-
const result = resolveVariables(content, sources);
|
|
146
|
-
assert.strictEqual(result.content, 'Today: 2026-01-20');
|
|
147
|
-
// Verify date format matches pattern
|
|
148
|
-
assert.match(result.content, /\d{4}-\d{2}-\d{2}/);
|
|
149
|
-
});
|
|
150
|
-
it('should resolve story_id from session source', () => {
|
|
151
|
-
const content = 'Working on {story_id}';
|
|
152
|
-
const sources = [
|
|
153
|
-
{ name: 'session', priority: 2, values: { story_id: 'MSSCI-12081' } },
|
|
154
|
-
];
|
|
155
|
-
const result = resolveVariables(content, sources);
|
|
156
|
-
assert.strictEqual(result.content, 'Working on MSSCI-12081');
|
|
157
|
-
});
|
|
158
|
-
it('should resolve output_file from workflow source', () => {
|
|
159
|
-
const content = 'Write to {output_file}';
|
|
160
|
-
const sources = [
|
|
161
|
-
{ name: 'workflow', priority: 1, values: { output_file: 'analysis-output.md' } },
|
|
162
|
-
];
|
|
163
|
-
const result = resolveVariables(content, sources);
|
|
164
|
-
assert.strictEqual(result.content, 'Write to analysis-output.md');
|
|
165
|
-
});
|
|
166
|
-
it('should resolve planning_artifacts from defaults', () => {
|
|
167
|
-
const content = 'Artifacts in {planning_artifacts}';
|
|
168
|
-
const sources = [
|
|
169
|
-
{ name: 'defaults', priority: 5, values: { planning_artifacts: 'planning-artifacts/' } },
|
|
170
|
-
];
|
|
171
|
-
const result = resolveVariables(content, sources);
|
|
172
|
-
assert.strictEqual(result.content, 'Artifacts in planning-artifacts/');
|
|
173
|
-
});
|
|
174
|
-
it('should resolve all standard variables together', () => {
|
|
175
|
-
const content = `# Analysis for {story_id}
|
|
176
|
-
|
|
177
|
-
Project: {project_root}
|
|
178
|
-
Date: {date}
|
|
179
|
-
Output: {output_file}
|
|
180
|
-
Artifacts: {planning_artifacts}
|
|
181
|
-
`;
|
|
182
|
-
const sources = [
|
|
183
|
-
{ name: 'workflow', priority: 1, values: { output_file: 'report.md' } },
|
|
184
|
-
{ name: 'session', priority: 2, values: { story_id: 'MSSCI-12081' } },
|
|
185
|
-
{ name: 'environment', priority: 4, values: {
|
|
186
|
-
project_root: '/Users/keithavery/Projects/pennyfarthing',
|
|
187
|
-
date: '2026-01-20'
|
|
188
|
-
} },
|
|
189
|
-
{ name: 'defaults', priority: 5, values: { planning_artifacts: 'planning-artifacts/' } },
|
|
190
|
-
];
|
|
191
|
-
const result = resolveVariables(content, sources);
|
|
192
|
-
assert.ok(result.content.includes('MSSCI-12081'));
|
|
193
|
-
assert.ok(result.content.includes('/Users/keithavery/Projects/pennyfarthing'));
|
|
194
|
-
assert.ok(result.content.includes('2026-01-20'));
|
|
195
|
-
assert.ok(result.content.includes('report.md'));
|
|
196
|
-
assert.ok(result.content.includes('planning-artifacts/'));
|
|
197
|
-
assert.strictEqual(result.resolved.length, 5);
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
describe('AC4: Unresolved variables flagged with warning', () => {
|
|
201
|
-
it('should leave unresolved variable as-is in content', () => {
|
|
202
|
-
const content = 'Value: {missing_var}';
|
|
203
|
-
const sources = [
|
|
204
|
-
{ name: 'workflow', priority: 1, values: { other_var: 'something' } },
|
|
205
|
-
];
|
|
206
|
-
const result = resolveVariables(content, sources);
|
|
207
|
-
assert.strictEqual(result.content, 'Value: {missing_var}');
|
|
208
|
-
});
|
|
209
|
-
it('should track unresolved variables in result', () => {
|
|
210
|
-
const content = '{found} and {not_found} and {also_missing}';
|
|
211
|
-
const sources = [
|
|
212
|
-
{ name: 'workflow', priority: 1, values: { found: 'yes' } },
|
|
213
|
-
];
|
|
214
|
-
const result = resolveVariables(content, sources);
|
|
215
|
-
assert.strictEqual(result.content, 'yes and {not_found} and {also_missing}');
|
|
216
|
-
assert.deepStrictEqual(result.resolved, ['found']);
|
|
217
|
-
assert.ok(result.unresolved.includes('not_found'));
|
|
218
|
-
assert.ok(result.unresolved.includes('also_missing'));
|
|
219
|
-
assert.strictEqual(result.unresolved.length, 2);
|
|
220
|
-
});
|
|
221
|
-
it('should not include unresolved variables in sources map', () => {
|
|
222
|
-
const content = '{resolved_var} {unresolved_var}';
|
|
223
|
-
const sources = [
|
|
224
|
-
{ name: 'workflow', priority: 1, values: { resolved_var: 'value' } },
|
|
225
|
-
];
|
|
226
|
-
const result = resolveVariables(content, sources);
|
|
227
|
-
assert.ok('resolved_var' in result.sources);
|
|
228
|
-
assert.ok(!('unresolved_var' in result.sources));
|
|
229
|
-
});
|
|
230
|
-
it('should list each unresolved variable only once', () => {
|
|
231
|
-
const content = '{missing} appears twice: {missing}';
|
|
232
|
-
const sources = [];
|
|
233
|
-
const result = resolveVariables(content, sources);
|
|
234
|
-
assert.strictEqual(result.content, '{missing} appears twice: {missing}');
|
|
235
|
-
assert.deepStrictEqual(result.unresolved, ['missing']);
|
|
236
|
-
});
|
|
237
|
-
});
|
|
238
|
-
describe('Edge Cases', () => {
|
|
239
|
-
it('should match valid variable names only (letters, numbers, underscores)', () => {
|
|
240
|
-
const content = '{valid_name} {valid123} {_underscore_start}';
|
|
241
|
-
const sources = [
|
|
242
|
-
{ name: 'test', priority: 1, values: {
|
|
243
|
-
valid_name: 'a',
|
|
244
|
-
valid123: 'b',
|
|
245
|
-
_underscore_start: 'c'
|
|
246
|
-
} },
|
|
247
|
-
];
|
|
248
|
-
const result = resolveVariables(content, sources);
|
|
249
|
-
assert.strictEqual(result.content, 'a b c');
|
|
250
|
-
});
|
|
251
|
-
it('should not match variables starting with numbers', () => {
|
|
252
|
-
const content = '{123invalid} {9lives}';
|
|
253
|
-
const sources = [
|
|
254
|
-
{ name: 'test', priority: 1, values: { '123invalid': 'no', '9lives': 'no' } },
|
|
255
|
-
];
|
|
256
|
-
const result = resolveVariables(content, sources);
|
|
257
|
-
// Should remain unchanged (invalid variable syntax)
|
|
258
|
-
assert.strictEqual(result.content, '{123invalid} {9lives}');
|
|
259
|
-
assert.deepStrictEqual(result.resolved, []);
|
|
260
|
-
// These aren't variables, so they shouldn't be in unresolved either
|
|
261
|
-
assert.deepStrictEqual(result.unresolved, []);
|
|
262
|
-
});
|
|
263
|
-
it('should not match nested variables', () => {
|
|
264
|
-
const content = '{outer_{inner}}';
|
|
265
|
-
const sources = [
|
|
266
|
-
{ name: 'test', priority: 1, values: { outer_inner: 'nested', inner: 'value' } },
|
|
267
|
-
];
|
|
268
|
-
const result = resolveVariables(content, sources);
|
|
269
|
-
// Nested syntax is not supported - should not parse as a variable
|
|
270
|
-
assert.strictEqual(result.content, '{outer_{inner}}');
|
|
271
|
-
});
|
|
272
|
-
it('should handle empty string value as valid resolution', () => {
|
|
273
|
-
const content = 'Value: [{empty_value}]';
|
|
274
|
-
const sources = [
|
|
275
|
-
{ name: 'test', priority: 1, values: { empty_value: '' } },
|
|
276
|
-
];
|
|
277
|
-
const result = resolveVariables(content, sources);
|
|
278
|
-
assert.strictEqual(result.content, 'Value: []');
|
|
279
|
-
assert.deepStrictEqual(result.resolved, ['empty_value']);
|
|
280
|
-
assert.deepStrictEqual(result.unresolved, []);
|
|
281
|
-
});
|
|
282
|
-
it('should treat null value as unresolved', () => {
|
|
283
|
-
const content = 'Value: {null_value}';
|
|
284
|
-
const sources = [
|
|
285
|
-
{ name: 'test', priority: 1, values: { null_value: null } },
|
|
286
|
-
];
|
|
287
|
-
const result = resolveVariables(content, sources);
|
|
288
|
-
assert.strictEqual(result.content, 'Value: {null_value}');
|
|
289
|
-
assert.deepStrictEqual(result.unresolved, ['null_value']);
|
|
290
|
-
});
|
|
291
|
-
it('should treat undefined value as unresolved', () => {
|
|
292
|
-
const content = 'Value: {undefined_value}';
|
|
293
|
-
const sources = [
|
|
294
|
-
{ name: 'test', priority: 1, values: { undefined_value: undefined } },
|
|
295
|
-
];
|
|
296
|
-
const result = resolveVariables(content, sources);
|
|
297
|
-
assert.strictEqual(result.content, 'Value: {undefined_value}');
|
|
298
|
-
assert.deepStrictEqual(result.unresolved, ['undefined_value']);
|
|
299
|
-
});
|
|
300
|
-
it('should convert number values to strings', () => {
|
|
301
|
-
const content = 'Count: {count} | Points: {points}';
|
|
302
|
-
const sources = [
|
|
303
|
-
{ name: 'test', priority: 1, values: {
|
|
304
|
-
count: 42,
|
|
305
|
-
points: 3.14
|
|
306
|
-
} },
|
|
307
|
-
];
|
|
308
|
-
const result = resolveVariables(content, sources);
|
|
309
|
-
assert.strictEqual(result.content, 'Count: 42 | Points: 3.14');
|
|
310
|
-
});
|
|
311
|
-
it('should convert boolean values to strings', () => {
|
|
312
|
-
const content = 'Enabled: {enabled} | Debug: {debug}';
|
|
313
|
-
const sources = [
|
|
314
|
-
{ name: 'test', priority: 1, values: {
|
|
315
|
-
enabled: true,
|
|
316
|
-
debug: false
|
|
317
|
-
} },
|
|
318
|
-
];
|
|
319
|
-
const result = resolveVariables(content, sources);
|
|
320
|
-
assert.strictEqual(result.content, 'Enabled: true | Debug: false');
|
|
321
|
-
});
|
|
322
|
-
it('should handle curly braces that are not variables', () => {
|
|
323
|
-
const content = 'JSON: { "key": "value" } and regex: [a-z]{3}';
|
|
324
|
-
const sources = [];
|
|
325
|
-
const result = resolveVariables(content, sources);
|
|
326
|
-
// These aren't valid variable patterns - should remain unchanged
|
|
327
|
-
assert.strictEqual(result.content, 'JSON: { "key": "value" } and regex: [a-z]{3}');
|
|
328
|
-
});
|
|
329
|
-
it('should handle special characters in variable values', () => {
|
|
330
|
-
const content = 'Path: {path}';
|
|
331
|
-
const sources = [
|
|
332
|
-
{ name: 'test', priority: 1, values: { path: '/home/user/Documents & Files/project' } },
|
|
333
|
-
];
|
|
334
|
-
const result = resolveVariables(content, sources);
|
|
335
|
-
assert.strictEqual(result.content, 'Path: /home/user/Documents & Files/project');
|
|
336
|
-
});
|
|
337
|
-
it('should handle multiline content', () => {
|
|
338
|
-
const content = `Line 1: {var1}
|
|
339
|
-
Line 2: {var2}
|
|
340
|
-
Line 3: {var3}`;
|
|
341
|
-
const sources = [
|
|
342
|
-
{ name: 'test', priority: 1, values: { var1: 'a', var2: 'b', var3: 'c' } },
|
|
343
|
-
];
|
|
344
|
-
const result = resolveVariables(content, sources);
|
|
345
|
-
assert.strictEqual(result.content, `Line 1: a
|
|
346
|
-
Line 2: b
|
|
347
|
-
Line 3: c`);
|
|
348
|
-
});
|
|
349
|
-
it('should handle variable in markdown code block', () => {
|
|
350
|
-
const content = '```\nconfig: {config_path}\n```';
|
|
351
|
-
const sources = [
|
|
352
|
-
{ name: 'test', priority: 1, values: { config_path: '/etc/app.yaml' } },
|
|
353
|
-
];
|
|
354
|
-
const result = resolveVariables(content, sources);
|
|
355
|
-
assert.strictEqual(result.content, '```\nconfig: /etc/app.yaml\n```');
|
|
356
|
-
});
|
|
357
|
-
it('should handle empty content', () => {
|
|
358
|
-
const content = '';
|
|
359
|
-
const sources = [
|
|
360
|
-
{ name: 'test', priority: 1, values: { unused: 'value' } },
|
|
361
|
-
];
|
|
362
|
-
const result = resolveVariables(content, sources);
|
|
363
|
-
assert.strictEqual(result.content, '');
|
|
364
|
-
assert.deepStrictEqual(result.resolved, []);
|
|
365
|
-
assert.deepStrictEqual(result.unresolved, []);
|
|
366
|
-
});
|
|
367
|
-
});
|
|
368
|
-
describe('resolveStepVariables convenience function', () => {
|
|
369
|
-
it('should build sources from workflow, session, and config', () => {
|
|
370
|
-
const content = '{workflow_var} and {story_id} and {project_root}';
|
|
371
|
-
const result = resolveStepVariables(content, {
|
|
372
|
-
workflowVars: { workflow_var: 'from-workflow' },
|
|
373
|
-
sessionVars: { story_id: 'MSSCI-12081' },
|
|
374
|
-
projectRoot: '/Users/keithavery/Projects/pennyfarthing',
|
|
375
|
-
});
|
|
376
|
-
assert.strictEqual(result.content, 'from-workflow and MSSCI-12081 and /Users/keithavery/Projects/pennyfarthing');
|
|
377
|
-
});
|
|
378
|
-
it('should include system defaults (date, planning_artifacts)', () => {
|
|
379
|
-
const content = 'Date: {date} | Artifacts: {planning_artifacts}';
|
|
380
|
-
const result = resolveStepVariables(content, {});
|
|
381
|
-
// Date should be current date in YYYY-MM-DD format
|
|
382
|
-
assert.match(result.content, /Date: \d{4}-\d{2}-\d{2}/);
|
|
383
|
-
// planning_artifacts should have default value
|
|
384
|
-
assert.ok(result.content.includes('planning-artifacts/'));
|
|
385
|
-
});
|
|
386
|
-
it('should work with no options provided', () => {
|
|
387
|
-
const content = 'No variables here.';
|
|
388
|
-
const result = resolveStepVariables(content);
|
|
389
|
-
assert.strictEqual(result.content, 'No variables here.');
|
|
390
|
-
});
|
|
391
|
-
it('should allow workflow vars to override system defaults', () => {
|
|
392
|
-
const content = 'Artifacts: {planning_artifacts}';
|
|
393
|
-
const result = resolveStepVariables(content, {
|
|
394
|
-
workflowVars: { planning_artifacts: 'custom-artifacts/' },
|
|
395
|
-
});
|
|
396
|
-
assert.strictEqual(result.content, 'Artifacts: custom-artifacts/');
|
|
397
|
-
});
|
|
398
|
-
});
|
|
399
|
-
});
|
|
400
|
-
//# sourceMappingURL=variable-resolver.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"variable-resolver.test.js","sourceRoot":"","sources":["../../src/workflow/variable-resolver.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workflow Executor for MSSCI-12084
|
|
3
|
-
*
|
|
4
|
-
* Implements /workflow start, resume, and status commands for stepped workflows.
|
|
5
|
-
* Coordinates step loading, session state tracking, and progress reporting.
|
|
6
|
-
*/
|
|
7
|
-
import { WorkflowState } from './session-state.js';
|
|
8
|
-
import { ParsedStep } from './step-parser.js';
|
|
9
|
-
/**
|
|
10
|
-
* Workflow definition loaded from YAML
|
|
11
|
-
*/
|
|
12
|
-
export interface WorkflowDefinition {
|
|
13
|
-
/** Workflow name/identifier */
|
|
14
|
-
name: string;
|
|
15
|
-
/** Workflow type: stepped or phased */
|
|
16
|
-
type: 'stepped' | 'phased';
|
|
17
|
-
/** Optional description */
|
|
18
|
-
description?: string;
|
|
19
|
-
/** Step file configuration */
|
|
20
|
-
steps: {
|
|
21
|
-
/** Base path for step files */
|
|
22
|
-
path: string;
|
|
23
|
-
/** Glob pattern for step files (default: step-*.md) */
|
|
24
|
-
pattern?: string;
|
|
25
|
-
};
|
|
26
|
-
/** Tri-modal configuration */
|
|
27
|
-
modes?: {
|
|
28
|
-
/** Default mode when not specified */
|
|
29
|
-
default?: 'create' | 'validate' | 'edit';
|
|
30
|
-
/** Available modes */
|
|
31
|
-
available?: ('create' | 'validate' | 'edit')[];
|
|
32
|
-
};
|
|
33
|
-
/** Variables for step content resolution */
|
|
34
|
-
variables?: Record<string, string>;
|
|
35
|
-
/** Gate configuration */
|
|
36
|
-
gates?: {
|
|
37
|
-
/** Step numbers after which gates occur */
|
|
38
|
-
after_steps?: number[];
|
|
39
|
-
};
|
|
40
|
-
/** Total number of steps in workflow */
|
|
41
|
-
totalSteps?: number;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Result of starting a workflow
|
|
45
|
-
*/
|
|
46
|
-
export interface StartResult {
|
|
47
|
-
success: boolean;
|
|
48
|
-
/** Initialized workflow state */
|
|
49
|
-
state?: WorkflowState;
|
|
50
|
-
/** First step content (resolved) */
|
|
51
|
-
step?: ParsedStep;
|
|
52
|
-
/** Updated session content */
|
|
53
|
-
sessionContent?: string;
|
|
54
|
-
/** Error message if failed */
|
|
55
|
-
error?: string;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Result of resuming a workflow
|
|
59
|
-
*/
|
|
60
|
-
export interface ResumeResult {
|
|
61
|
-
success: boolean;
|
|
62
|
-
/** Current workflow state */
|
|
63
|
-
state?: WorkflowState;
|
|
64
|
-
/** Next step to execute */
|
|
65
|
-
step?: ParsedStep;
|
|
66
|
-
/** Whether workflow is already complete */
|
|
67
|
-
isComplete?: boolean;
|
|
68
|
-
/** Error message if failed */
|
|
69
|
-
error?: string;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Workflow status information
|
|
73
|
-
*/
|
|
74
|
-
export interface WorkflowStatus {
|
|
75
|
-
/** Workflow name */
|
|
76
|
-
name: string;
|
|
77
|
-
/** Workflow type */
|
|
78
|
-
type: 'stepped' | 'phased';
|
|
79
|
-
/** Current mode if tri-modal */
|
|
80
|
-
mode?: 'create' | 'validate' | 'edit';
|
|
81
|
-
/** Current step number */
|
|
82
|
-
currentStep: number;
|
|
83
|
-
/** Total steps in workflow */
|
|
84
|
-
totalSteps: number;
|
|
85
|
-
/** Array of completed step numbers */
|
|
86
|
-
stepsCompleted: number[];
|
|
87
|
-
/** Completion percentage (0-100) */
|
|
88
|
-
completionPercent: number;
|
|
89
|
-
/** Workflow status */
|
|
90
|
-
status: 'in_progress' | 'completed' | 'paused';
|
|
91
|
-
/** When workflow started */
|
|
92
|
-
started: string;
|
|
93
|
-
/** Last update timestamp */
|
|
94
|
-
lastUpdated: string;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Result of getting workflow status
|
|
98
|
-
*/
|
|
99
|
-
export interface StatusResult {
|
|
100
|
-
success: boolean;
|
|
101
|
-
/** Workflow status if found */
|
|
102
|
-
status?: WorkflowStatus;
|
|
103
|
-
/** Error message if failed */
|
|
104
|
-
error?: string;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Start a new stepped workflow
|
|
108
|
-
*
|
|
109
|
-
* @param workflow - Workflow definition
|
|
110
|
-
* @param sessionContent - Current session file content (or empty for new)
|
|
111
|
-
* @param mode - Optional tri-modal mode (default: workflow default or 'create')
|
|
112
|
-
* @returns StartResult with state, first step, and updated session
|
|
113
|
-
*/
|
|
114
|
-
export declare function startWorkflow(workflow: WorkflowDefinition, sessionContent: string, mode?: 'create' | 'validate' | 'edit'): Promise<StartResult>;
|
|
115
|
-
/**
|
|
116
|
-
* Resume an existing stepped workflow from last completed step
|
|
117
|
-
*
|
|
118
|
-
* @param workflow - Workflow definition
|
|
119
|
-
* @param sessionContent - Current session file content with state
|
|
120
|
-
* @returns ResumeResult with state and next step
|
|
121
|
-
*/
|
|
122
|
-
export declare function resumeWorkflow(workflow: WorkflowDefinition, sessionContent: string): Promise<ResumeResult>;
|
|
123
|
-
/**
|
|
124
|
-
* Get current workflow status from session
|
|
125
|
-
*
|
|
126
|
-
* @param sessionContent - Session file content
|
|
127
|
-
* @param totalSteps - Total number of steps in workflow
|
|
128
|
-
* @returns StatusResult with progress information
|
|
129
|
-
*/
|
|
130
|
-
export declare function getWorkflowStatus(sessionContent: string, totalSteps: number): StatusResult;
|
|
131
|
-
/**
|
|
132
|
-
* Load step file for a specific step number
|
|
133
|
-
*
|
|
134
|
-
* @param workflow - Workflow definition
|
|
135
|
-
* @param stepNumber - Step number to load
|
|
136
|
-
* @param variables - Variables for content resolution
|
|
137
|
-
* @returns ParsedStep with resolved content
|
|
138
|
-
*/
|
|
139
|
-
export declare function loadStep(workflow: WorkflowDefinition, stepNumber: number, variables?: Record<string, string>): Promise<ParsedStep | null>;
|
|
140
|
-
/**
|
|
141
|
-
* Complete current step and advance workflow state
|
|
142
|
-
*
|
|
143
|
-
* @param sessionContent - Current session content
|
|
144
|
-
* @param stepNumber - Step number being completed
|
|
145
|
-
* @param nextStep - Optional specific next step (for skip scenarios)
|
|
146
|
-
* @returns Updated session content
|
|
147
|
-
*/
|
|
148
|
-
export declare function completeStep(sessionContent: string, stepNumber: number, nextStep?: number): string;
|
|
149
|
-
/**
|
|
150
|
-
* Check if workflow has an in-progress state in session
|
|
151
|
-
*
|
|
152
|
-
* @param sessionContent - Session file content
|
|
153
|
-
* @returns true if workflow is in progress
|
|
154
|
-
*/
|
|
155
|
-
export declare function hasActiveWorkflow(sessionContent: string): boolean;
|
|
156
|
-
/**
|
|
157
|
-
* Detect incomplete workflow from session and return name
|
|
158
|
-
*
|
|
159
|
-
* @param sessionContent - Session file content
|
|
160
|
-
* @returns Workflow name if incomplete workflow found, undefined otherwise
|
|
161
|
-
*/
|
|
162
|
-
export declare function detectIncompleteWorkflow(sessionContent: string): string | undefined;
|
|
163
|
-
//# sourceMappingURL=workflow-executor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../src/workflow/workflow-executor.ts"],"names":[],"mappings":"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"}
|