@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,196 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Story 15-1: Cyclist launcher command
|
|
3
|
-
*
|
|
4
|
-
* Launches Cyclist with Pennyfarthing context.
|
|
5
|
-
*/
|
|
6
|
-
import { existsSync, readFileSync } from 'fs';
|
|
7
|
-
import { join, dirname } from 'path';
|
|
8
|
-
import { spawn as nodeSpawn } from 'child_process';
|
|
9
|
-
import { parse as yamlParse } from 'yaml';
|
|
10
|
-
import { fileURLToPath } from 'url';
|
|
11
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
-
const __dirname = dirname(__filename);
|
|
13
|
-
/**
|
|
14
|
-
* Find cyclist installation
|
|
15
|
-
*
|
|
16
|
-
* Priority:
|
|
17
|
-
* 1. CYCLIST_PATH environment variable
|
|
18
|
-
* 2. Sibling directory ../cyclist
|
|
19
|
-
* 3. Relative to pennyfarthing install
|
|
20
|
-
*/
|
|
21
|
-
export function findCyclist() {
|
|
22
|
-
// 1. Environment variable override
|
|
23
|
-
if (process.env.CYCLIST_PATH) {
|
|
24
|
-
return process.env.CYCLIST_PATH;
|
|
25
|
-
}
|
|
26
|
-
// 2. Sibling directory (development setup)
|
|
27
|
-
const cwd = process.cwd();
|
|
28
|
-
const parentDir = dirname(cwd);
|
|
29
|
-
const siblingCyclist = join(parentDir, 'cyclist');
|
|
30
|
-
if (existsSync(join(siblingCyclist, 'package.json'))) {
|
|
31
|
-
return siblingCyclist;
|
|
32
|
-
}
|
|
33
|
-
// 3. Relative to pennyfarthing install (monorepo structure)
|
|
34
|
-
// From packages/core/dist/cli/commands/ to packages/cyclist/
|
|
35
|
-
const searchPaths = [
|
|
36
|
-
join(__dirname, '../../../../cyclist'), // packages/core/dist/cli/commands -> packages/cyclist
|
|
37
|
-
join(__dirname, '../../../../../packages/cyclist'), // to root then packages/cyclist
|
|
38
|
-
join(__dirname, '../../../cyclist'), // fallback
|
|
39
|
-
];
|
|
40
|
-
for (const cyclistPath of searchPaths) {
|
|
41
|
-
if (existsSync(join(cyclistPath, 'package.json'))) {
|
|
42
|
-
return cyclistPath;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
// 4. Check if cyclist is installed in project's node_modules
|
|
46
|
-
const projectCyclist = join(cwd, 'node_modules/@pennyfarthing/cyclist');
|
|
47
|
-
if (existsSync(join(projectCyclist, 'package.json'))) {
|
|
48
|
-
return projectCyclist;
|
|
49
|
-
}
|
|
50
|
-
throw new Error('Cyclist not found.\n\n' +
|
|
51
|
-
'To use the visual terminal, install the optional Cyclist package:\n\n' +
|
|
52
|
-
' npm install @pennyfarthing/cyclist\n\n' +
|
|
53
|
-
'Then run: npx pennyfarthing cyclist');
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Load theme configuration
|
|
57
|
-
*
|
|
58
|
-
* Priority: .pennyfarthing/config.local.yaml > .claude/persona-config.yaml
|
|
59
|
-
*/
|
|
60
|
-
export function loadThemeConfig(projectDir) {
|
|
61
|
-
const pennyfarthingConfigPath = join(projectDir, '.pennyfarthing/config.local.yaml');
|
|
62
|
-
const sharedConfigPath = join(projectDir, '.claude/persona-config.yaml');
|
|
63
|
-
// Priority 1: .pennyfarthing/config.local.yaml
|
|
64
|
-
if (existsSync(pennyfarthingConfigPath)) {
|
|
65
|
-
try {
|
|
66
|
-
const content = readFileSync(pennyfarthingConfigPath, 'utf-8');
|
|
67
|
-
const config = yamlParse(content);
|
|
68
|
-
if (config?.theme) {
|
|
69
|
-
return { theme: config.theme };
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
// Fall through to shared config
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// Priority 2: .claude/persona-config.yaml (project default)
|
|
77
|
-
if (existsSync(sharedConfigPath)) {
|
|
78
|
-
try {
|
|
79
|
-
const content = readFileSync(sharedConfigPath, 'utf-8');
|
|
80
|
-
const config = yamlParse(content);
|
|
81
|
-
if (config?.theme) {
|
|
82
|
-
return { theme: config.theme };
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
// Fall through to default
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
// Default theme
|
|
90
|
-
return { theme: 'minimalist' };
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Resolve path to theme YAML file
|
|
94
|
-
*
|
|
95
|
-
* Checks project personas directory first, then node_modules.
|
|
96
|
-
*/
|
|
97
|
-
export function resolveThemePath(theme, projectDir) {
|
|
98
|
-
const claudeDir = join(projectDir, '.claude');
|
|
99
|
-
const projectThemePath = join(claudeDir, 'personas', `${theme}.yaml`);
|
|
100
|
-
// Check project personas directory
|
|
101
|
-
if (existsSync(projectThemePath)) {
|
|
102
|
-
return projectThemePath;
|
|
103
|
-
}
|
|
104
|
-
// Fall back to node_modules (pennyfarthing-dist) - check both package names
|
|
105
|
-
const packagePaths = [
|
|
106
|
-
'node_modules/@pennyfarthing/core/pennyfarthing-dist/personas',
|
|
107
|
-
'node_modules/pennyfarthing/pennyfarthing-dist/personas',
|
|
108
|
-
];
|
|
109
|
-
for (const pkgPath of packagePaths) {
|
|
110
|
-
const nodeModulesPath = join(projectDir, pkgPath, `${theme}.yaml`);
|
|
111
|
-
if (existsSync(nodeModulesPath)) {
|
|
112
|
-
return nodeModulesPath;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// Fall back to relative path from this module
|
|
116
|
-
const relativePath = join(__dirname, '../../pennyfarthing-dist/personas', `${theme}.yaml`);
|
|
117
|
-
if (existsSync(relativePath)) {
|
|
118
|
-
return relativePath;
|
|
119
|
-
}
|
|
120
|
-
// Return the expected path even if it doesn't exist
|
|
121
|
-
// (caller can handle the missing file)
|
|
122
|
-
return join(claudeDir, 'personas', `${theme}.yaml`);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Default open function using dynamic import
|
|
126
|
-
*/
|
|
127
|
-
async function defaultOpen(url) {
|
|
128
|
-
const open = (await import('open')).default;
|
|
129
|
-
await open(url);
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Main cyclist command
|
|
133
|
-
*
|
|
134
|
-
* Finds cyclist, sets environment, spawns server, opens browser
|
|
135
|
-
*/
|
|
136
|
-
export async function cyclistCommand(options, deps) {
|
|
137
|
-
const projectDir = process.cwd();
|
|
138
|
-
const port = options.port ?? 3000;
|
|
139
|
-
// Find cyclist installation
|
|
140
|
-
const cyclistPath = options.cyclistPath ?? findCyclist();
|
|
141
|
-
const serverPath = join(cyclistPath, 'dist', 'server.js');
|
|
142
|
-
// Load theme configuration
|
|
143
|
-
const themeConfig = loadThemeConfig(projectDir);
|
|
144
|
-
const themePath = resolveThemePath(themeConfig.theme, projectDir);
|
|
145
|
-
// Prepare environment variables
|
|
146
|
-
const env = {
|
|
147
|
-
...process.env,
|
|
148
|
-
CYCLIST_PROJECT_DIR: projectDir,
|
|
149
|
-
CYCLIST_THEME: themeConfig.theme,
|
|
150
|
-
CYCLIST_THEME_PATH: themePath,
|
|
151
|
-
PORT: String(port),
|
|
152
|
-
};
|
|
153
|
-
// Pass session ID if available (for session-specific agent detection)
|
|
154
|
-
if (process.env.SESSION_ID) {
|
|
155
|
-
env.CYCLIST_SESSION_ID = process.env.SESSION_ID;
|
|
156
|
-
}
|
|
157
|
-
// Get spawn function (use provided mock or real spawn)
|
|
158
|
-
const spawnFn = deps?.spawn ?? nodeSpawn;
|
|
159
|
-
// Spawn cyclist server from cyclist directory (needed for pnpm module resolution)
|
|
160
|
-
const child = spawnFn('node', [serverPath], {
|
|
161
|
-
cwd: cyclistPath,
|
|
162
|
-
env,
|
|
163
|
-
stdio: 'inherit',
|
|
164
|
-
});
|
|
165
|
-
// Handle process errors
|
|
166
|
-
child.on('error', (err) => {
|
|
167
|
-
console.error('Failed to start Cyclist:', err.message);
|
|
168
|
-
process.exit(1);
|
|
169
|
-
});
|
|
170
|
-
// Open browser unless --no-open
|
|
171
|
-
if (!options.noOpen) {
|
|
172
|
-
const openFn = deps?.open ?? defaultOpen;
|
|
173
|
-
const url = `http://localhost:${port}`;
|
|
174
|
-
if (deps?.open) {
|
|
175
|
-
// When mocks are provided (testing), call immediately
|
|
176
|
-
try {
|
|
177
|
-
await openFn(url);
|
|
178
|
-
}
|
|
179
|
-
catch {
|
|
180
|
-
// Ignore browser open errors
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
// In production, delay to let server start
|
|
185
|
-
setTimeout(async () => {
|
|
186
|
-
try {
|
|
187
|
-
await openFn(url);
|
|
188
|
-
}
|
|
189
|
-
catch {
|
|
190
|
-
// Ignore browser open errors
|
|
191
|
-
}
|
|
192
|
-
}, 1000);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
//# sourceMappingURL=cyclist.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cyclist.js","sourceRoot":"","sources":["../../../src/cli/commands/cyclist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Story 15-1: Add pennyfarthing cyclist launcher command
|
|
3
|
-
*
|
|
4
|
-
* These tests verify:
|
|
5
|
-
* - findCyclist() discovers cyclist installation correctly
|
|
6
|
-
* - loadThemeConfig() reads theme from persona-config
|
|
7
|
-
* - resolveThemePath() finds theme YAML files
|
|
8
|
-
* - cyclistCommand() orchestrates the full flow
|
|
9
|
-
*
|
|
10
|
-
* Run with: npm test
|
|
11
|
-
*/
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=cyclist.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cyclist.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cyclist.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Story 15-1: Add pennyfarthing cyclist launcher command
|
|
3
|
-
*
|
|
4
|
-
* These tests verify:
|
|
5
|
-
* - findCyclist() discovers cyclist installation correctly
|
|
6
|
-
* - loadThemeConfig() reads theme from persona-config
|
|
7
|
-
* - resolveThemePath() finds theme YAML files
|
|
8
|
-
* - cyclistCommand() orchestrates the full flow
|
|
9
|
-
*
|
|
10
|
-
* Run with: npm test
|
|
11
|
-
*/
|
|
12
|
-
import { describe, it, beforeEach, afterEach, mock } from 'node:test';
|
|
13
|
-
import assert from 'node:assert';
|
|
14
|
-
import { existsSync, mkdirSync, writeFileSync, rmSync } from 'fs';
|
|
15
|
-
import { join } from 'path';
|
|
16
|
-
import { tmpdir } from 'os';
|
|
17
|
-
import { stringify as yamlStringify } from 'yaml';
|
|
18
|
-
// Import functions to test - these don't exist yet, tests should fail
|
|
19
|
-
import { findCyclist, loadThemeConfig, resolveThemePath, cyclistCommand } from './cyclist.js';
|
|
20
|
-
describe('Story 15-1: Cyclist Launcher Command', () => {
|
|
21
|
-
let testDir;
|
|
22
|
-
let claudeDir;
|
|
23
|
-
let originalEnv;
|
|
24
|
-
let originalCwd;
|
|
25
|
-
beforeEach(() => {
|
|
26
|
-
// Save original environment and cwd
|
|
27
|
-
originalEnv = { ...process.env };
|
|
28
|
-
originalCwd = process.cwd;
|
|
29
|
-
// Create a temporary project directory for each test
|
|
30
|
-
testDir = join(tmpdir(), `pennyfarthing-cyclist-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
31
|
-
claudeDir = join(testDir, '.claude');
|
|
32
|
-
mkdirSync(claudeDir, { recursive: true });
|
|
33
|
-
// Mock process.cwd to return our test directory
|
|
34
|
-
process.cwd = () => testDir;
|
|
35
|
-
});
|
|
36
|
-
afterEach(() => {
|
|
37
|
-
// Restore original environment and cwd
|
|
38
|
-
process.env = originalEnv;
|
|
39
|
-
process.cwd = originalCwd;
|
|
40
|
-
// Clean up test directory
|
|
41
|
-
if (existsSync(testDir)) {
|
|
42
|
-
rmSync(testDir, { recursive: true, force: true });
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
describe('findCyclist()', () => {
|
|
46
|
-
it('should return CYCLIST_PATH when environment variable is set', () => {
|
|
47
|
-
// AC: Finds cyclist via CYCLIST_PATH env var
|
|
48
|
-
const customPath = '/custom/path/to/cyclist';
|
|
49
|
-
process.env.CYCLIST_PATH = customPath;
|
|
50
|
-
const result = findCyclist();
|
|
51
|
-
assert.strictEqual(result, customPath, 'Should return CYCLIST_PATH env var value');
|
|
52
|
-
});
|
|
53
|
-
it('should find cyclist in sibling directory ../cyclist', () => {
|
|
54
|
-
// AC: Finds cyclist in ../cyclist
|
|
55
|
-
// Setup: Create a mock cyclist installation as sibling
|
|
56
|
-
const parentDir = join(testDir, '..');
|
|
57
|
-
const siblingCyclist = join(parentDir, 'cyclist');
|
|
58
|
-
mkdirSync(siblingCyclist, { recursive: true });
|
|
59
|
-
writeFileSync(join(siblingCyclist, 'package.json'), JSON.stringify({ name: 'cyclist' }));
|
|
60
|
-
// Clear env var to test directory discovery
|
|
61
|
-
delete process.env.CYCLIST_PATH;
|
|
62
|
-
const result = findCyclist();
|
|
63
|
-
assert.strictEqual(result, siblingCyclist, 'Should find cyclist in sibling directory');
|
|
64
|
-
// Cleanup sibling
|
|
65
|
-
rmSync(siblingCyclist, { recursive: true, force: true });
|
|
66
|
-
});
|
|
67
|
-
it('should throw helpful error when cyclist is not found', () => {
|
|
68
|
-
// AC: Helpful error message if cyclist not found
|
|
69
|
-
delete process.env.CYCLIST_PATH;
|
|
70
|
-
assert.throws(() => findCyclist(), {
|
|
71
|
-
message: /Cyclist not found/i
|
|
72
|
-
}, 'Should throw error with helpful message when cyclist not found');
|
|
73
|
-
});
|
|
74
|
-
it('should include CYCLIST_PATH suggestion in error message', () => {
|
|
75
|
-
// AC: Helpful error message if cyclist not found
|
|
76
|
-
delete process.env.CYCLIST_PATH;
|
|
77
|
-
try {
|
|
78
|
-
findCyclist();
|
|
79
|
-
assert.fail('Should have thrown an error');
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
assert.ok(error.message.includes('CYCLIST_PATH'), 'Error message should suggest setting CYCLIST_PATH');
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
describe('loadThemeConfig()', () => {
|
|
87
|
-
it('should read theme from persona-config.yaml', () => {
|
|
88
|
-
// AC: Sets correct environment variables (CYCLIST_THEME)
|
|
89
|
-
const config = { theme: 'enlightenment-thinkers' };
|
|
90
|
-
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify(config));
|
|
91
|
-
const result = loadThemeConfig(testDir);
|
|
92
|
-
assert.strictEqual(result.theme, 'enlightenment-thinkers', 'Should read theme from config');
|
|
93
|
-
});
|
|
94
|
-
it('should prefer .pennyfarthing/config.local.yaml over shared config', () => {
|
|
95
|
-
// .pennyfarthing/config.local.yaml takes precedence over .claude/persona-config.yaml
|
|
96
|
-
const sharedConfig = { theme: 'discworld' };
|
|
97
|
-
const localConfig = { theme: 'star-trek' };
|
|
98
|
-
const pennyfarthingDir = join(testDir, '.pennyfarthing');
|
|
99
|
-
mkdirSync(pennyfarthingDir, { recursive: true });
|
|
100
|
-
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify(sharedConfig));
|
|
101
|
-
writeFileSync(join(pennyfarthingDir, 'config.local.yaml'), yamlStringify(localConfig));
|
|
102
|
-
const result = loadThemeConfig(testDir);
|
|
103
|
-
assert.strictEqual(result.theme, 'star-trek', 'Should prefer .pennyfarthing/config.local.yaml');
|
|
104
|
-
});
|
|
105
|
-
it('should return default theme when no config exists', () => {
|
|
106
|
-
// No config files exist
|
|
107
|
-
const result = loadThemeConfig(testDir);
|
|
108
|
-
assert.strictEqual(result.theme, 'minimalist', 'Should fall back to minimalist theme');
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
describe('resolveThemePath()', () => {
|
|
112
|
-
it('should resolve theme path in project personas directory', () => {
|
|
113
|
-
// AC: Sets correct CYCLIST_THEME_PATH
|
|
114
|
-
const personasDir = join(claudeDir, 'personas');
|
|
115
|
-
mkdirSync(personasDir, { recursive: true });
|
|
116
|
-
writeFileSync(join(personasDir, 'enlightenment-thinkers.yaml'), 'theme: test');
|
|
117
|
-
const result = resolveThemePath('enlightenment-thinkers', testDir);
|
|
118
|
-
assert.strictEqual(result, join(personasDir, 'enlightenment-thinkers.yaml'), 'Should resolve to project personas directory');
|
|
119
|
-
});
|
|
120
|
-
it('should resolve theme path in node_modules when not in project', () => {
|
|
121
|
-
// Setup: No local theme, but mock node_modules path exists
|
|
122
|
-
// This tests the fallback behavior
|
|
123
|
-
const result = resolveThemePath('minimalist', testDir);
|
|
124
|
-
assert.ok(result.includes('minimalist.yaml'), 'Should return a path ending in minimalist.yaml');
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
describe('cyclistCommand()', () => {
|
|
128
|
-
let spawnMock;
|
|
129
|
-
let openMock;
|
|
130
|
-
beforeEach(() => {
|
|
131
|
-
// Create mock cyclist installation
|
|
132
|
-
const parentDir = join(testDir, '..');
|
|
133
|
-
const siblingCyclist = join(parentDir, 'cyclist');
|
|
134
|
-
mkdirSync(siblingCyclist, { recursive: true });
|
|
135
|
-
mkdirSync(join(siblingCyclist, 'dist'), { recursive: true });
|
|
136
|
-
writeFileSync(join(siblingCyclist, 'package.json'), JSON.stringify({ name: 'cyclist' }));
|
|
137
|
-
writeFileSync(join(siblingCyclist, 'dist', 'server.js'), '// mock server');
|
|
138
|
-
// Create theme config
|
|
139
|
-
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'enlightenment-thinkers' }));
|
|
140
|
-
// Create theme file
|
|
141
|
-
const personasDir = join(claudeDir, 'personas');
|
|
142
|
-
mkdirSync(personasDir, { recursive: true });
|
|
143
|
-
writeFileSync(join(personasDir, 'enlightenment-thinkers.yaml'), 'theme: test');
|
|
144
|
-
// Create mocks
|
|
145
|
-
spawnMock = mock.fn(() => ({
|
|
146
|
-
on: mock.fn(),
|
|
147
|
-
stdout: { on: mock.fn() },
|
|
148
|
-
stderr: { on: mock.fn() }
|
|
149
|
-
}));
|
|
150
|
-
openMock = mock.fn();
|
|
151
|
-
});
|
|
152
|
-
afterEach(() => {
|
|
153
|
-
// Cleanup sibling cyclist
|
|
154
|
-
const siblingCyclist = join(testDir, '..', 'cyclist');
|
|
155
|
-
if (existsSync(siblingCyclist)) {
|
|
156
|
-
rmSync(siblingCyclist, { recursive: true, force: true });
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
it('should set CYCLIST_PROJECT_DIR environment variable', async () => {
|
|
160
|
-
// AC: Sets correct environment variables - CYCLIST_PROJECT_DIR
|
|
161
|
-
await cyclistCommand({ noOpen: true }, { spawn: spawnMock, open: openMock });
|
|
162
|
-
// Check the spawn was called with correct env
|
|
163
|
-
assert.ok(spawnMock.mock.calls.length > 0, 'spawn should be called');
|
|
164
|
-
const spawnCall = spawnMock.mock.calls[0];
|
|
165
|
-
const spawnOptions = spawnCall.arguments[2];
|
|
166
|
-
assert.strictEqual(spawnOptions.env.CYCLIST_PROJECT_DIR, testDir, 'Should set CYCLIST_PROJECT_DIR to current working directory');
|
|
167
|
-
});
|
|
168
|
-
it('should set CYCLIST_THEME environment variable', async () => {
|
|
169
|
-
// AC: Sets correct environment variables - CYCLIST_THEME
|
|
170
|
-
await cyclistCommand({ noOpen: true }, { spawn: spawnMock, open: openMock });
|
|
171
|
-
const spawnCall = spawnMock.mock.calls[0];
|
|
172
|
-
const spawnOptions = spawnCall.arguments[2];
|
|
173
|
-
assert.strictEqual(spawnOptions.env.CYCLIST_THEME, 'enlightenment-thinkers', 'Should set CYCLIST_THEME from persona config');
|
|
174
|
-
});
|
|
175
|
-
it('should set CYCLIST_THEME_PATH environment variable', async () => {
|
|
176
|
-
// AC: Sets correct environment variables - CYCLIST_THEME_PATH
|
|
177
|
-
await cyclistCommand({ noOpen: true }, { spawn: spawnMock, open: openMock });
|
|
178
|
-
const spawnCall = spawnMock.mock.calls[0];
|
|
179
|
-
const spawnOptions = spawnCall.arguments[2];
|
|
180
|
-
assert.ok(spawnOptions.env.CYCLIST_THEME_PATH.includes('enlightenment-thinkers.yaml'), 'Should set CYCLIST_THEME_PATH to theme YAML path');
|
|
181
|
-
});
|
|
182
|
-
it('should spawn cyclist server process', async () => {
|
|
183
|
-
// AC: Spawns cyclist server successfully
|
|
184
|
-
await cyclistCommand({ noOpen: true }, { spawn: spawnMock, open: openMock });
|
|
185
|
-
assert.ok(spawnMock.mock.calls.length > 0, 'spawn should be called');
|
|
186
|
-
const spawnCall = spawnMock.mock.calls[0];
|
|
187
|
-
const command = spawnCall.arguments[0];
|
|
188
|
-
const args = spawnCall.arguments[1];
|
|
189
|
-
assert.strictEqual(command, 'node', 'Should spawn node process');
|
|
190
|
-
assert.ok(args[0].includes('server.js'), 'Should spawn cyclist server.js');
|
|
191
|
-
});
|
|
192
|
-
it('should open browser by default', async () => {
|
|
193
|
-
// AC: Opens browser
|
|
194
|
-
await cyclistCommand({}, { spawn: spawnMock, open: openMock });
|
|
195
|
-
assert.ok(openMock.mock.calls.length > 0, 'open should be called');
|
|
196
|
-
const openCall = openMock.mock.calls[0];
|
|
197
|
-
assert.ok(openCall.arguments[0].includes('localhost:3000'), 'Should open localhost:3000');
|
|
198
|
-
});
|
|
199
|
-
it('should not open browser when --no-open flag is set', async () => {
|
|
200
|
-
// AC: Opens browser (with --no-open flag to disable)
|
|
201
|
-
await cyclistCommand({ noOpen: true }, { spawn: spawnMock, open: openMock });
|
|
202
|
-
assert.strictEqual(openMock.mock.calls.length, 0, 'open should not be called when noOpen is true');
|
|
203
|
-
});
|
|
204
|
-
it('should use custom port when specified', async () => {
|
|
205
|
-
// Additional feature: --port option
|
|
206
|
-
await cyclistCommand({ port: 4000, noOpen: true }, { spawn: spawnMock, open: openMock });
|
|
207
|
-
const spawnCall = spawnMock.mock.calls[0];
|
|
208
|
-
const spawnOptions = spawnCall.arguments[2];
|
|
209
|
-
assert.strictEqual(spawnOptions.env.PORT, '4000', 'Should pass custom port to cyclist');
|
|
210
|
-
});
|
|
211
|
-
it('should use cyclist path from --cyclist-path option', async () => {
|
|
212
|
-
// Additional feature: --cyclist-path option
|
|
213
|
-
const customPath = join(testDir, 'custom-cyclist');
|
|
214
|
-
mkdirSync(join(customPath, 'dist'), { recursive: true });
|
|
215
|
-
writeFileSync(join(customPath, 'package.json'), JSON.stringify({ name: 'cyclist' }));
|
|
216
|
-
writeFileSync(join(customPath, 'dist', 'server.js'), '// mock');
|
|
217
|
-
await cyclistCommand({ cyclistPath: customPath, noOpen: true }, { spawn: spawnMock, open: openMock });
|
|
218
|
-
const spawnCall = spawnMock.mock.calls[0];
|
|
219
|
-
const args = spawnCall.arguments[1];
|
|
220
|
-
assert.ok(args[0].includes(customPath), 'Should use custom cyclist path');
|
|
221
|
-
});
|
|
222
|
-
});
|
|
223
|
-
describe('CLI Registration', () => {
|
|
224
|
-
it('should be registered as a command in the CLI', async () => {
|
|
225
|
-
// AC: Command registered in pennyfarthing CLI
|
|
226
|
-
// This is an integration test - verify the command exists in index.ts
|
|
227
|
-
const _indexPath = join(process.cwd(), 'src/cli/index.ts');
|
|
228
|
-
// For now, this will fail because the command isn't registered yet
|
|
229
|
-
// The implementation should add the cyclist command to index.ts
|
|
230
|
-
const { execSync } = await import('child_process');
|
|
231
|
-
try {
|
|
232
|
-
const result = execSync('npx pennyfarthing cyclist --help', {
|
|
233
|
-
encoding: 'utf-8',
|
|
234
|
-
cwd: testDir
|
|
235
|
-
});
|
|
236
|
-
assert.ok(result.includes('cyclist') || result.includes('Cyclist'), 'cyclist command should be registered');
|
|
237
|
-
}
|
|
238
|
-
catch {
|
|
239
|
-
// Expected to fail until implementation
|
|
240
|
-
assert.fail('cyclist command should be registered in CLI');
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
//# sourceMappingURL=cyclist.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cyclist.test.js","sourceRoot":"","sources":["../../../src/cli/commands/cyclist.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAoBA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GzE"}
|