@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,225 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Story 11-3: Cyclist Migration Tests
|
|
3
|
-
*
|
|
4
|
-
* These tests verify the Cyclist Electron GUI is correctly migrated
|
|
5
|
-
* into the pnpm workspace as @pennyfarthing/cyclist.
|
|
6
|
-
* Tests are designed to FAIL until the migration is complete.
|
|
7
|
-
*
|
|
8
|
-
* Acceptance Criteria:
|
|
9
|
-
* 1. packages/cyclist/ contains Cyclist source
|
|
10
|
-
* 2. Dependencies use workspace:* for internal packages
|
|
11
|
-
* 3. Portrait resolution uses @pennyfarthing/shared
|
|
12
|
-
* 4. Electron app starts and shows portraits
|
|
13
|
-
* 5. Dogfooding scenario works (portraits load from pennyfarthing-dist/)
|
|
14
|
-
*/
|
|
15
|
-
import { describe, it } from 'node:test';
|
|
16
|
-
import assert from 'node:assert';
|
|
17
|
-
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
18
|
-
import { join } from 'node:path';
|
|
19
|
-
import { findMonorepoRoot } from './utils/files.js';
|
|
20
|
-
const __dirname = import.meta.dirname;
|
|
21
|
-
const PROJECT_ROOT = findMonorepoRoot(__dirname);
|
|
22
|
-
describe('Story 11-3: Cyclist Migration into Monorepo', () => {
|
|
23
|
-
describe('AC1: packages/cyclist/ contains Cyclist source', () => {
|
|
24
|
-
it('should have packages/cyclist directory', () => {
|
|
25
|
-
const cyclistDir = join(PROJECT_ROOT, 'packages', 'cyclist');
|
|
26
|
-
assert.ok(existsSync(cyclistDir), 'packages/cyclist/ directory must exist');
|
|
27
|
-
});
|
|
28
|
-
it('should have packages/cyclist/src directory', () => {
|
|
29
|
-
const srcDir = join(PROJECT_ROOT, 'packages', 'cyclist', 'src');
|
|
30
|
-
assert.ok(existsSync(srcDir), 'packages/cyclist/src/ directory must exist');
|
|
31
|
-
});
|
|
32
|
-
it('should have packages/cyclist/src/main.ts (Electron main process)', () => {
|
|
33
|
-
const mainTs = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'main.ts');
|
|
34
|
-
assert.ok(existsSync(mainTs), 'packages/cyclist/src/main.ts must exist');
|
|
35
|
-
});
|
|
36
|
-
it('should have packages/cyclist/src/paths.ts (path resolution)', () => {
|
|
37
|
-
const pathsTs = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'paths.ts');
|
|
38
|
-
assert.ok(existsSync(pathsTs), 'packages/cyclist/src/paths.ts must exist');
|
|
39
|
-
});
|
|
40
|
-
it('should have packages/cyclist/src/public directory', () => {
|
|
41
|
-
const publicDir = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'public');
|
|
42
|
-
assert.ok(existsSync(publicDir), 'packages/cyclist/src/public/ directory must exist');
|
|
43
|
-
});
|
|
44
|
-
it('should have packages/cyclist/package.json', () => {
|
|
45
|
-
const packageJson = join(PROJECT_ROOT, 'packages', 'cyclist', 'package.json');
|
|
46
|
-
assert.ok(existsSync(packageJson), 'packages/cyclist/package.json must exist');
|
|
47
|
-
});
|
|
48
|
-
it('should have @pennyfarthing/cyclist as package name', () => {
|
|
49
|
-
const packageJsonPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'package.json');
|
|
50
|
-
if (!existsSync(packageJsonPath)) {
|
|
51
|
-
assert.fail('packages/cyclist/package.json must exist first');
|
|
52
|
-
}
|
|
53
|
-
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
54
|
-
assert.strictEqual(pkg.name, '@pennyfarthing/cyclist', 'Package name must be @pennyfarthing/cyclist');
|
|
55
|
-
});
|
|
56
|
-
it('should have packages/cyclist/tsconfig.json', () => {
|
|
57
|
-
const tsconfig = join(PROJECT_ROOT, 'packages', 'cyclist', 'tsconfig.json');
|
|
58
|
-
assert.ok(existsSync(tsconfig), 'packages/cyclist/tsconfig.json must exist');
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
describe('AC2: Dependencies use workspace:* for internal packages', () => {
|
|
62
|
-
it('should have @pennyfarthing/shared as workspace dependency', () => {
|
|
63
|
-
const packageJsonPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'package.json');
|
|
64
|
-
if (!existsSync(packageJsonPath)) {
|
|
65
|
-
assert.fail('packages/cyclist/package.json must exist first');
|
|
66
|
-
}
|
|
67
|
-
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
68
|
-
const deps = pkg.dependencies || {};
|
|
69
|
-
assert.ok(deps['@pennyfarthing/shared'], 'packages/cyclist should depend on @pennyfarthing/shared');
|
|
70
|
-
assert.ok(deps['@pennyfarthing/shared'].includes('workspace'), '@pennyfarthing/shared dependency should use workspace protocol (workspace:*)');
|
|
71
|
-
});
|
|
72
|
-
it('should NOT have pennyfarthing GitHub dependency', () => {
|
|
73
|
-
const packageJsonPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'package.json');
|
|
74
|
-
if (!existsSync(packageJsonPath)) {
|
|
75
|
-
assert.fail('packages/cyclist/package.json must exist first');
|
|
76
|
-
}
|
|
77
|
-
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
78
|
-
const deps = pkg.dependencies || {};
|
|
79
|
-
assert.ok(!deps['pennyfarthing'] || !deps['pennyfarthing'].includes('github'), 'packages/cyclist should NOT have GitHub pennyfarthing dependency (use workspace instead)');
|
|
80
|
-
});
|
|
81
|
-
it('should be listed in pnpm-workspace.yaml packages', () => {
|
|
82
|
-
const workspaceYamlPath = join(PROJECT_ROOT, 'pnpm-workspace.yaml');
|
|
83
|
-
const content = readFileSync(workspaceYamlPath, 'utf-8');
|
|
84
|
-
// packages/* pattern should include packages/cyclist
|
|
85
|
-
assert.ok(content.includes('packages/*') || content.includes('packages/cyclist'), 'pnpm-workspace.yaml should include packages/cyclist (via packages/* pattern)');
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
describe('AC3: Portrait resolution uses @pennyfarthing/shared', () => {
|
|
89
|
-
it('should import from @pennyfarthing/shared in paths.ts', () => {
|
|
90
|
-
const pathsPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'paths.ts');
|
|
91
|
-
if (!existsSync(pathsPath)) {
|
|
92
|
-
assert.fail('packages/cyclist/src/paths.ts must exist first');
|
|
93
|
-
}
|
|
94
|
-
const content = readFileSync(pathsPath, 'utf-8');
|
|
95
|
-
assert.ok(content.includes('@pennyfarthing/shared'), 'paths.ts should import from @pennyfarthing/shared');
|
|
96
|
-
});
|
|
97
|
-
it('should use resolvePennyfarthingDist from shared package', () => {
|
|
98
|
-
const pathsPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'paths.ts');
|
|
99
|
-
if (!existsSync(pathsPath)) {
|
|
100
|
-
assert.fail('packages/cyclist/src/paths.ts must exist first');
|
|
101
|
-
}
|
|
102
|
-
const content = readFileSync(pathsPath, 'utf-8');
|
|
103
|
-
assert.ok(content.includes('resolvePennyfarthingDist'), 'paths.ts should use resolvePennyfarthingDist from @pennyfarthing/shared');
|
|
104
|
-
});
|
|
105
|
-
it('should use getPortraitPaths from shared package', () => {
|
|
106
|
-
const pathsPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'paths.ts');
|
|
107
|
-
if (!existsSync(pathsPath)) {
|
|
108
|
-
assert.fail('packages/cyclist/src/paths.ts must exist first');
|
|
109
|
-
}
|
|
110
|
-
const content = readFileSync(pathsPath, 'utf-8');
|
|
111
|
-
assert.ok(content.includes('getPortraitPaths'), 'paths.ts should use getPortraitPaths from @pennyfarthing/shared');
|
|
112
|
-
});
|
|
113
|
-
it('should NOT have hardcoded pennyfarthing path in getPortraitsDir', () => {
|
|
114
|
-
const pathsPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'paths.ts');
|
|
115
|
-
if (!existsSync(pathsPath)) {
|
|
116
|
-
assert.fail('packages/cyclist/src/paths.ts must exist first');
|
|
117
|
-
}
|
|
118
|
-
const content = readFileSync(pathsPath, 'utf-8');
|
|
119
|
-
// Should not contain the old hardcoded path logic (join calls, not comments)
|
|
120
|
-
// Old pattern was: join(..., 'pennyfarthing', 'pennyfarthing-dist')
|
|
121
|
-
const hasOldPattern = content.includes("join(__dirname, 'pennyfarthing', 'pennyfarthing-dist')") ||
|
|
122
|
-
content.includes('join(__dirname, "pennyfarthing", "pennyfarthing-dist")');
|
|
123
|
-
assert.ok(!hasOldPattern, 'paths.ts should NOT have hardcoded pennyfarthing path - use shared resolver instead');
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
describe('AC4: Electron app starts and shows portraits', () => {
|
|
127
|
-
// Note: Full build verification requires pnpm install which needs workspace resolution
|
|
128
|
-
// These tests verify the package configuration is correct for building
|
|
129
|
-
it('should have Electron dependency', () => {
|
|
130
|
-
const packageJsonPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'package.json');
|
|
131
|
-
if (!existsSync(packageJsonPath)) {
|
|
132
|
-
assert.fail('packages/cyclist/package.json must exist first');
|
|
133
|
-
}
|
|
134
|
-
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
135
|
-
const devDeps = pkg.devDependencies || {};
|
|
136
|
-
assert.ok(devDeps['electron'], 'packages/cyclist should have electron as devDependency');
|
|
137
|
-
});
|
|
138
|
-
it('should have build script in package.json', () => {
|
|
139
|
-
const packageJsonPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'package.json');
|
|
140
|
-
if (!existsSync(packageJsonPath)) {
|
|
141
|
-
assert.fail('packages/cyclist/package.json must exist first');
|
|
142
|
-
}
|
|
143
|
-
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
144
|
-
assert.ok(pkg.scripts?.build, 'packages/cyclist should have a build script');
|
|
145
|
-
});
|
|
146
|
-
it('should have main entry point configured', () => {
|
|
147
|
-
const packageJsonPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'package.json');
|
|
148
|
-
if (!existsSync(packageJsonPath)) {
|
|
149
|
-
assert.fail('packages/cyclist/package.json must exist first');
|
|
150
|
-
}
|
|
151
|
-
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
152
|
-
assert.ok(pkg.main, 'packages/cyclist should have a main entry point');
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
describe('AC5: Dogfooding scenario works', () => {
|
|
156
|
-
it('should resolve portraits from pennyfarthing-dist in monorepo', () => {
|
|
157
|
-
// This test validates that portrait resolution works in the monorepo context
|
|
158
|
-
const pennyfarthingDist = join(PROJECT_ROOT, 'pennyfarthing-dist');
|
|
159
|
-
assert.ok(existsSync(pennyfarthingDist), 'pennyfarthing-dist/ should exist at monorepo root for dogfooding');
|
|
160
|
-
});
|
|
161
|
-
it('should have portraits directory in pennyfarthing-dist', () => {
|
|
162
|
-
const portraitsDir = join(PROJECT_ROOT, 'pennyfarthing-dist', 'personas', 'portraits');
|
|
163
|
-
assert.ok(existsSync(portraitsDir), 'pennyfarthing-dist/personas/portraits/ should exist');
|
|
164
|
-
});
|
|
165
|
-
it('should have at least one theme with portraits', () => {
|
|
166
|
-
const portraitsDir = join(PROJECT_ROOT, 'pennyfarthing-dist', 'personas', 'portraits');
|
|
167
|
-
if (!existsSync(portraitsDir)) {
|
|
168
|
-
assert.fail('portraits directory must exist first');
|
|
169
|
-
}
|
|
170
|
-
const themes = readdirSync(portraitsDir);
|
|
171
|
-
assert.ok(themes.length > 0, 'Should have at least one theme directory in portraits');
|
|
172
|
-
});
|
|
173
|
-
it('should have paths.ts configured to use shared resolver', () => {
|
|
174
|
-
// Verify paths.ts source code uses the shared resolver
|
|
175
|
-
// Runtime verification requires pnpm install + build
|
|
176
|
-
const pathsPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'paths.ts');
|
|
177
|
-
if (!existsSync(pathsPath)) {
|
|
178
|
-
assert.fail('packages/cyclist/src/paths.ts must exist');
|
|
179
|
-
}
|
|
180
|
-
const content = readFileSync(pathsPath, 'utf-8');
|
|
181
|
-
assert.ok(content.includes('resolvePennyfarthingDist') && content.includes('getPortraitPaths'), 'paths.ts should use resolvePennyfarthingDist and getPortraitPaths from shared');
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
describe('Build Integration', () => {
|
|
185
|
-
// Note: Full TypeScript compilation requires pnpm install to resolve workspace dependencies
|
|
186
|
-
// These tests verify the build configuration is correct
|
|
187
|
-
it('should have valid tsconfig.json extending base', () => {
|
|
188
|
-
const tsconfigPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'tsconfig.json');
|
|
189
|
-
if (!existsSync(tsconfigPath)) {
|
|
190
|
-
assert.fail('packages/cyclist/tsconfig.json must exist');
|
|
191
|
-
}
|
|
192
|
-
const content = readFileSync(tsconfigPath, 'utf-8');
|
|
193
|
-
const tsconfig = JSON.parse(content);
|
|
194
|
-
assert.ok(tsconfig.extends?.includes('tsconfig.base.json'), 'tsconfig.json should extend ../../tsconfig.base.json');
|
|
195
|
-
});
|
|
196
|
-
it('should have outDir configured for dist', () => {
|
|
197
|
-
const tsconfigPath = join(PROJECT_ROOT, 'packages', 'cyclist', 'tsconfig.json');
|
|
198
|
-
if (!existsSync(tsconfigPath)) {
|
|
199
|
-
assert.fail('packages/cyclist/tsconfig.json must exist');
|
|
200
|
-
}
|
|
201
|
-
const content = readFileSync(tsconfigPath, 'utf-8');
|
|
202
|
-
const tsconfig = JSON.parse(content);
|
|
203
|
-
assert.strictEqual(tsconfig.compilerOptions?.outDir, 'dist', 'tsconfig.json should output to dist directory');
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
describe('Source File Completeness', () => {
|
|
207
|
-
it('should have pennyfarthing.ts (persona/theme loading)', () => {
|
|
208
|
-
const pennyfarthingTs = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'pennyfarthing.ts');
|
|
209
|
-
assert.ok(existsSync(pennyfarthingTs), 'packages/cyclist/src/pennyfarthing.ts must exist');
|
|
210
|
-
});
|
|
211
|
-
it('should have server.ts (Express server)', () => {
|
|
212
|
-
const serverTs = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'server.ts');
|
|
213
|
-
assert.ok(existsSync(serverTs), 'packages/cyclist/src/server.ts must exist');
|
|
214
|
-
});
|
|
215
|
-
it('should have api/ directory', () => {
|
|
216
|
-
const apiDir = join(PROJECT_ROOT, 'packages', 'cyclist', 'src', 'api');
|
|
217
|
-
assert.ok(existsSync(apiDir), 'packages/cyclist/src/api/ directory must exist');
|
|
218
|
-
});
|
|
219
|
-
it('should have tests/ directory', () => {
|
|
220
|
-
const testsDir = join(PROJECT_ROOT, 'packages', 'cyclist', 'tests');
|
|
221
|
-
assert.ok(existsSync(testsDir), 'packages/cyclist/tests/ directory must exist');
|
|
222
|
-
});
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
//# sourceMappingURL=cyclist-migration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cyclist-migration.test.js","sourceRoot":"","sources":["../../src/cli/cyclist-migration.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.d.ts
DELETED
package/dist/cli/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
package/dist/cli/index.js
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Command } from 'commander';
|
|
3
|
-
import { readFileSync } from 'fs';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
import { dirname, join } from 'path';
|
|
6
|
-
import { initCommand } from './commands/init.js';
|
|
7
|
-
import { updateCommand } from './commands/update.js';
|
|
8
|
-
import { doctorCommand } from './commands/doctor.js';
|
|
9
|
-
import { uninstallCommand } from './commands/uninstall.js';
|
|
10
|
-
import { versionCommand } from './commands/version.js';
|
|
11
|
-
import { listCommand as themeListCommand, setCommand as themeSetCommand, showCommand as themeShowCommand, createCommand as themeCreateCommand } from './commands/theme.js';
|
|
12
|
-
import { listCommand as cmdListCommand, addCommand as cmdAddCommand, removeCommand as cmdRemoveCommand, linkCommand as cmdLinkCommand, syncCommand as cmdSyncCommand } from './commands/command.js';
|
|
13
|
-
import { listSkill as skillListCommand, addSkill as skillAddCommand, removeSkill as skillRemoveCommand, linkSkill as skillLinkCommand, syncSkill as skillSyncCommand } from './commands/skill.js';
|
|
14
|
-
import { cyclistCommand } from './commands/cyclist.js';
|
|
15
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
16
|
-
const __dirname = dirname(__filename);
|
|
17
|
-
// Read version from VERSION file
|
|
18
|
-
const versionFile = join(__dirname, '../../VERSION');
|
|
19
|
-
let version = '2.0.0';
|
|
20
|
-
try {
|
|
21
|
-
version = readFileSync(versionFile, 'utf8').trim();
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
// Fallback to package.json version
|
|
25
|
-
try {
|
|
26
|
-
const pkg = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf8'));
|
|
27
|
-
version = pkg.version;
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
// Use default
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
const program = new Command();
|
|
34
|
-
program
|
|
35
|
-
.name('pennyfarthing')
|
|
36
|
-
.description('Claude Code agent framework with TDD workflow and persona system')
|
|
37
|
-
.version(version);
|
|
38
|
-
program
|
|
39
|
-
.command('init')
|
|
40
|
-
.description('Initialize Pennyfarthing in a project')
|
|
41
|
-
.argument('[project-name]', 'Name of the project')
|
|
42
|
-
.option('-f, --force', 'Skip prompts, overwrite existing files')
|
|
43
|
-
.option('--skip-templates', 'Skip generating template files')
|
|
44
|
-
.option('--dry-run', 'Show what would be done without doing it')
|
|
45
|
-
.action(initCommand);
|
|
46
|
-
program
|
|
47
|
-
.command('update')
|
|
48
|
-
.description('Update Pennyfarthing to the latest version')
|
|
49
|
-
.option('-f, --force', 'Overwrite locally modified files')
|
|
50
|
-
.option('-b, --backup', 'Backup modified files before replacing')
|
|
51
|
-
.option('-c, --check', 'Just check if update is available')
|
|
52
|
-
.option('--dry-run', 'Show what would be updated')
|
|
53
|
-
.action(updateCommand);
|
|
54
|
-
program
|
|
55
|
-
.command('doctor')
|
|
56
|
-
.description('Check installation health and diagnose issues')
|
|
57
|
-
.option('--fix', 'Auto-apply recommended fixes')
|
|
58
|
-
.option('--json', 'Output in JSON format')
|
|
59
|
-
.option('-q, --quiet', 'Only show errors')
|
|
60
|
-
.option('--dogfood', 'Run dogfooding checks (for pennyfarthing repo development)')
|
|
61
|
-
.action(doctorCommand);
|
|
62
|
-
program
|
|
63
|
-
.command('uninstall')
|
|
64
|
-
.description('Remove Pennyfarthing from the project')
|
|
65
|
-
.option('-f, --force', 'Skip confirmation prompts')
|
|
66
|
-
.option('-a, --all', 'Also remove project-specific files (.claude/project, .session)')
|
|
67
|
-
.option('--dry-run', 'Show what would be removed without removing')
|
|
68
|
-
.action(uninstallCommand);
|
|
69
|
-
program
|
|
70
|
-
.command('version')
|
|
71
|
-
.description('Show version information')
|
|
72
|
-
.action(versionCommand);
|
|
73
|
-
program
|
|
74
|
-
.command('cyclist')
|
|
75
|
-
.description('Launch Cyclist with Pennyfarthing context')
|
|
76
|
-
.option('-p, --port <port>', 'Server port', '3000')
|
|
77
|
-
.option('--no-open', "Don't open browser automatically")
|
|
78
|
-
.option('--cyclist-path <path>', 'Path to cyclist installation')
|
|
79
|
-
.action(async (options) => {
|
|
80
|
-
await cyclistCommand({
|
|
81
|
-
port: options.port ? parseInt(options.port, 10) : undefined,
|
|
82
|
-
noOpen: options.open === false,
|
|
83
|
-
cyclistPath: options.cyclistPath,
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
// Theme management commands
|
|
87
|
-
const themeCmd = program
|
|
88
|
-
.command('theme')
|
|
89
|
-
.description('Manage persona themes');
|
|
90
|
-
themeCmd
|
|
91
|
-
.command('list')
|
|
92
|
-
.description('List available themes')
|
|
93
|
-
.action(themeListCommand);
|
|
94
|
-
themeCmd
|
|
95
|
-
.command('set')
|
|
96
|
-
.description('Set the active theme')
|
|
97
|
-
.argument('<name>', 'Theme name to activate')
|
|
98
|
-
.action(themeSetCommand);
|
|
99
|
-
themeCmd
|
|
100
|
-
.command('show')
|
|
101
|
-
.description('Show details of a theme')
|
|
102
|
-
.argument('[name]', 'Theme name (defaults to current theme)')
|
|
103
|
-
.action(themeShowCommand);
|
|
104
|
-
themeCmd
|
|
105
|
-
.command('create')
|
|
106
|
-
.description('Create a new custom theme')
|
|
107
|
-
.argument('<name>', 'Name for the new theme (lowercase, hyphens allowed)')
|
|
108
|
-
.option('-b, --base <theme>', 'Base theme to copy from', 'minimalist')
|
|
109
|
-
.option('-u, --user', 'Create as user-level theme (available across projects)')
|
|
110
|
-
.action(themeCreateCommand);
|
|
111
|
-
// Command management commands
|
|
112
|
-
const cmdCmd = program
|
|
113
|
-
.command('command')
|
|
114
|
-
.description('Manage custom slash commands');
|
|
115
|
-
cmdCmd
|
|
116
|
-
.command('list')
|
|
117
|
-
.description('List all available commands')
|
|
118
|
-
.action(cmdListCommand);
|
|
119
|
-
cmdCmd
|
|
120
|
-
.command('add')
|
|
121
|
-
.description('Create a new custom command')
|
|
122
|
-
.argument('<name>', 'Command name (lowercase, hyphens allowed)')
|
|
123
|
-
.option('-t, --template <type>', 'Template type: default, agent, task', 'default')
|
|
124
|
-
.option('-e, --edit', 'Open in editor after creation')
|
|
125
|
-
.action(cmdAddCommand);
|
|
126
|
-
cmdCmd
|
|
127
|
-
.command('remove')
|
|
128
|
-
.description('Remove a custom command')
|
|
129
|
-
.argument('<name>', 'Command name to remove')
|
|
130
|
-
.option('-f, --force', 'Skip confirmation prompts')
|
|
131
|
-
.action(cmdRemoveCommand);
|
|
132
|
-
cmdCmd
|
|
133
|
-
.command('link')
|
|
134
|
-
.description('Link an existing command file from project/commands/')
|
|
135
|
-
.argument('<name>', 'Command name to link')
|
|
136
|
-
.action(cmdLinkCommand);
|
|
137
|
-
cmdCmd
|
|
138
|
-
.command('sync')
|
|
139
|
-
.description('Sync all user commands from project/commands/')
|
|
140
|
-
.option('--dry-run', 'Show what would be done without doing it')
|
|
141
|
-
.action(cmdSyncCommand);
|
|
142
|
-
// Skill management commands
|
|
143
|
-
const skillCmd = program
|
|
144
|
-
.command('skill')
|
|
145
|
-
.description('Manage custom skills');
|
|
146
|
-
skillCmd
|
|
147
|
-
.command('list')
|
|
148
|
-
.description('List all available skills')
|
|
149
|
-
.action(skillListCommand);
|
|
150
|
-
skillCmd
|
|
151
|
-
.command('add')
|
|
152
|
-
.description('Create a new custom skill')
|
|
153
|
-
.argument('<name>', 'Skill name (lowercase, hyphens allowed)')
|
|
154
|
-
.option('-t, --template <type>', 'Template type: default, knowledge, workflow', 'default')
|
|
155
|
-
.option('-e, --edit', 'Open in editor after creation')
|
|
156
|
-
.action(skillAddCommand);
|
|
157
|
-
skillCmd
|
|
158
|
-
.command('remove')
|
|
159
|
-
.description('Remove a custom skill')
|
|
160
|
-
.argument('<name>', 'Skill name to remove')
|
|
161
|
-
.option('-f, --force', 'Skip confirmation prompts')
|
|
162
|
-
.action(skillRemoveCommand);
|
|
163
|
-
skillCmd
|
|
164
|
-
.command('link')
|
|
165
|
-
.description('Link an existing skill file from project/skills/')
|
|
166
|
-
.argument('<name>', 'Skill name to link')
|
|
167
|
-
.action(skillLinkCommand);
|
|
168
|
-
skillCmd
|
|
169
|
-
.command('sync')
|
|
170
|
-
.description('Sync all user skills from project/skills/')
|
|
171
|
-
.option('--dry-run', 'Show what would be done without doing it')
|
|
172
|
-
.action(skillSyncCommand);
|
|
173
|
-
program.parse();
|
|
174
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Story 11-2: Add OCEAN Profiles to 10 Anchor Themes
|
|
3
|
-
*
|
|
4
|
-
* These tests verify:
|
|
5
|
-
* - 10 anchor theme YAMLs have ocean blocks
|
|
6
|
-
* - All 10 agents in each theme have OCEAN scores
|
|
7
|
-
* - Each OCEAN score uses the 1-5 integer scale
|
|
8
|
-
* - 100 character profiles defined (10 themes × 10 agents)
|
|
9
|
-
*
|
|
10
|
-
* Run with: npm test
|
|
11
|
-
*/
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=ocean-profiles.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ocean-profiles.test.d.ts","sourceRoot":"","sources":["../../src/cli/ocean-profiles.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Story 11-2: Add OCEAN Profiles to 10 Anchor Themes
|
|
3
|
-
*
|
|
4
|
-
* These tests verify:
|
|
5
|
-
* - 10 anchor theme YAMLs have ocean blocks
|
|
6
|
-
* - All 10 agents in each theme have OCEAN scores
|
|
7
|
-
* - Each OCEAN score uses the 1-5 integer scale
|
|
8
|
-
* - 100 character profiles defined (10 themes × 10 agents)
|
|
9
|
-
*
|
|
10
|
-
* Run with: npm test
|
|
11
|
-
*/
|
|
12
|
-
import { describe, it } from 'node:test';
|
|
13
|
-
import assert from 'node:assert';
|
|
14
|
-
import { existsSync, readFileSync } from 'fs';
|
|
15
|
-
import { join, dirname } from 'path';
|
|
16
|
-
import { fileURLToPath } from 'url';
|
|
17
|
-
import { parse as parseYaml } from 'yaml';
|
|
18
|
-
import { findMonorepoRoot } from './utils/files.js';
|
|
19
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
-
const __dirname = dirname(__filename);
|
|
21
|
-
// Find monorepo root by walking up from current directory
|
|
22
|
-
const projectRoot = findMonorepoRoot(__dirname);
|
|
23
|
-
const themesDir = join(projectRoot, 'pennyfarthing-dist', 'personas', 'themes');
|
|
24
|
-
// 10 anchor themes for Phase 1
|
|
25
|
-
const ANCHOR_THEMES = [
|
|
26
|
-
'deadwood',
|
|
27
|
-
'firefly',
|
|
28
|
-
'breaking-bad',
|
|
29
|
-
'the-good-place',
|
|
30
|
-
'star-trek-tng',
|
|
31
|
-
'discworld',
|
|
32
|
-
'fargo',
|
|
33
|
-
'succession',
|
|
34
|
-
'mass-effect',
|
|
35
|
-
'software-pioneers',
|
|
36
|
-
];
|
|
37
|
-
// 10 agent roles
|
|
38
|
-
const AGENT_ROLES = [
|
|
39
|
-
'orchestrator',
|
|
40
|
-
'sm',
|
|
41
|
-
'tea',
|
|
42
|
-
'dev',
|
|
43
|
-
'reviewer',
|
|
44
|
-
'architect',
|
|
45
|
-
'pm',
|
|
46
|
-
'tech-writer',
|
|
47
|
-
'ux-designer',
|
|
48
|
-
'devops',
|
|
49
|
-
];
|
|
50
|
-
// OCEAN dimensions
|
|
51
|
-
const OCEAN_KEYS = ['O', 'C', 'E', 'A', 'N'];
|
|
52
|
-
// Helper to load and parse theme YAML
|
|
53
|
-
function loadTheme(themeName) {
|
|
54
|
-
const filePath = join(themesDir, `${themeName}.yaml`);
|
|
55
|
-
if (!existsSync(filePath)) {
|
|
56
|
-
throw new Error(`Theme file not found: ${filePath}`);
|
|
57
|
-
}
|
|
58
|
-
const content = readFileSync(filePath, 'utf-8');
|
|
59
|
-
return parseYaml(content);
|
|
60
|
-
}
|
|
61
|
-
describe('OCEAN Profiles - Anchor Themes', () => {
|
|
62
|
-
it('should have all 10 anchor theme files', () => {
|
|
63
|
-
for (const theme of ANCHOR_THEMES) {
|
|
64
|
-
const filePath = join(themesDir, `${theme}.yaml`);
|
|
65
|
-
assert.ok(existsSync(filePath), `Missing anchor theme: ${theme}.yaml`);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
describe('OCEAN Profiles - Structure Validation', () => {
|
|
70
|
-
for (const themeName of ANCHOR_THEMES) {
|
|
71
|
-
describe(`Theme: ${themeName}`, () => {
|
|
72
|
-
it('should have agents section', () => {
|
|
73
|
-
const theme = loadTheme(themeName);
|
|
74
|
-
assert.ok('agents' in theme && typeof theme.agents === 'object', `${themeName} should have agents section`);
|
|
75
|
-
});
|
|
76
|
-
it('should have all 10 agent roles', () => {
|
|
77
|
-
const theme = loadTheme(themeName);
|
|
78
|
-
const agents = theme.agents;
|
|
79
|
-
for (const role of AGENT_ROLES) {
|
|
80
|
-
assert.ok(role in agents, `${themeName} missing agent role: ${role}`);
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
for (const role of AGENT_ROLES) {
|
|
84
|
-
it(`agent ${role} should have ocean block`, () => {
|
|
85
|
-
const theme = loadTheme(themeName);
|
|
86
|
-
const agents = theme.agents;
|
|
87
|
-
const agent = agents[role];
|
|
88
|
-
assert.ok(agent && 'ocean' in agent, `${themeName}/${role} missing ocean block`);
|
|
89
|
-
});
|
|
90
|
-
it(`agent ${role} ocean block should have all 5 OCEAN keys`, () => {
|
|
91
|
-
const theme = loadTheme(themeName);
|
|
92
|
-
const agents = theme.agents;
|
|
93
|
-
const agent = agents[role];
|
|
94
|
-
const ocean = agent?.ocean;
|
|
95
|
-
assert.ok(ocean, `${themeName}/${role} missing ocean block`);
|
|
96
|
-
for (const key of OCEAN_KEYS) {
|
|
97
|
-
assert.ok(key in ocean, `${themeName}/${role}/ocean missing key: ${key}`);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
it(`agent ${role} OCEAN values should be integers 1-5`, () => {
|
|
101
|
-
const theme = loadTheme(themeName);
|
|
102
|
-
const agents = theme.agents;
|
|
103
|
-
const agent = agents[role];
|
|
104
|
-
const ocean = agent?.ocean;
|
|
105
|
-
assert.ok(ocean, `${themeName}/${role} missing ocean block`);
|
|
106
|
-
for (const key of OCEAN_KEYS) {
|
|
107
|
-
const value = ocean[key];
|
|
108
|
-
assert.ok(typeof value === 'number' &&
|
|
109
|
-
Number.isInteger(value) &&
|
|
110
|
-
value >= 1 &&
|
|
111
|
-
value <= 5, `${themeName}/${role}/ocean/${key} should be integer 1-5, got: ${value}`);
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
describe('OCEAN Profiles - Completeness', () => {
|
|
119
|
-
it('should have exactly 100 character profiles (10 themes × 10 agents)', () => {
|
|
120
|
-
let profileCount = 0;
|
|
121
|
-
for (const themeName of ANCHOR_THEMES) {
|
|
122
|
-
const theme = loadTheme(themeName);
|
|
123
|
-
const agents = theme.agents;
|
|
124
|
-
for (const role of AGENT_ROLES) {
|
|
125
|
-
const agent = agents[role];
|
|
126
|
-
if (agent && 'ocean' in agent) {
|
|
127
|
-
profileCount++;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
assert.strictEqual(profileCount, 100, `Expected 100 character profiles, found ${profileCount}`);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
//# sourceMappingURL=ocean-profiles.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ocean-profiles.test.js","sourceRoot":"","sources":["../../src/cli/ocean-profiles.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for /theme-maker command
|
|
3
|
-
*
|
|
4
|
-
* Story 6-1: Command skeleton - basic structure and validation
|
|
5
|
-
* Story 6-2: AI-Driven mode - universe input, agent generation, preview
|
|
6
|
-
* Story 6-3: Guided mode - character options per agent, user picks
|
|
7
|
-
*
|
|
8
|
-
* Run with: npm test
|
|
9
|
-
*/
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=theme-maker.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme-maker.test.d.ts","sourceRoot":"","sources":["../../src/cli/theme-maker.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|