@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,416 +0,0 @@
|
|
|
1
|
-
import { readdirSync, readlinkSync, unlinkSync, symlinkSync, writeFileSync } from 'fs';
|
|
2
|
-
import { join, relative, dirname } from 'path';
|
|
3
|
-
import fsExtra from 'fs-extra';
|
|
4
|
-
const { ensureDirSync, removeSync } = fsExtra;
|
|
5
|
-
import { logger } from '../utils/logger.js';
|
|
6
|
-
import { confirm } from '../utils/prompts.js';
|
|
7
|
-
import { pathExists, isSymlink, isDirectory } from '../utils/files.js';
|
|
8
|
-
import { manifestExists } from '../utils/manifest.js';
|
|
9
|
-
/**
|
|
10
|
-
* Compute relative path for symlink
|
|
11
|
-
*/
|
|
12
|
-
function computeRelativeSymlink(linkPath, targetPath) {
|
|
13
|
-
return relative(dirname(linkPath), targetPath);
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Get skill source type based on symlink target
|
|
17
|
-
*/
|
|
18
|
-
function getSkillSource(skillsDir, filename) {
|
|
19
|
-
const linkPath = join(skillsDir, filename);
|
|
20
|
-
if (!isSymlink(linkPath)) {
|
|
21
|
-
return { type: 'local' };
|
|
22
|
-
}
|
|
23
|
-
try {
|
|
24
|
-
const target = readlinkSync(linkPath);
|
|
25
|
-
if (target.includes('pennyfarthing/skills/') || target.includes('pennyfarthing-dist/skills/')) {
|
|
26
|
-
return { type: 'built-in', target };
|
|
27
|
-
}
|
|
28
|
-
else if (target.includes('project/skills/')) {
|
|
29
|
-
return { type: 'user', target };
|
|
30
|
-
}
|
|
31
|
-
return { type: 'local', target };
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
return { type: 'local' };
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* List all skills with their sources
|
|
39
|
-
*/
|
|
40
|
-
export async function listSkill() {
|
|
41
|
-
const projectRoot = process.cwd();
|
|
42
|
-
if (!manifestExists(projectRoot)) {
|
|
43
|
-
logger.error('Pennyfarthing not initialized. Run `pennyfarthing init` first.');
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
const skillsDir = join(projectRoot, '.claude/skills');
|
|
47
|
-
if (!pathExists(skillsDir)) {
|
|
48
|
-
logger.error('Skills directory not found. Run `pennyfarthing update` to create it.');
|
|
49
|
-
process.exit(1);
|
|
50
|
-
}
|
|
51
|
-
// Check if it's old-style symlink
|
|
52
|
-
if (isSymlink(skillsDir)) {
|
|
53
|
-
logger.warning('Skills directory is using old symlink style.');
|
|
54
|
-
logger.info('Run `pennyfarthing update` to migrate to new directory structure.');
|
|
55
|
-
logger.info('(This enables custom skills alongside built-in ones)');
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
// Skills are directories, not .md files
|
|
59
|
-
const entries = readdirSync(skillsDir).filter(f => {
|
|
60
|
-
const fullPath = join(skillsDir, f);
|
|
61
|
-
return (isSymlink(fullPath) || isDirectory(fullPath)) && !f.startsWith('.');
|
|
62
|
-
}).sort();
|
|
63
|
-
const builtIn = [];
|
|
64
|
-
const user = [];
|
|
65
|
-
const local = [];
|
|
66
|
-
for (const entry of entries) {
|
|
67
|
-
const source = getSkillSource(skillsDir, entry);
|
|
68
|
-
switch (source.type) {
|
|
69
|
-
case 'built-in':
|
|
70
|
-
builtIn.push(entry);
|
|
71
|
-
break;
|
|
72
|
-
case 'user':
|
|
73
|
-
user.push(entry);
|
|
74
|
-
break;
|
|
75
|
-
case 'local':
|
|
76
|
-
local.push(entry);
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
logger.header('Pennyfarthing Skills');
|
|
81
|
-
logger.newline();
|
|
82
|
-
logger.info(`Built-in skills (${builtIn.length}):`);
|
|
83
|
-
if (builtIn.length > 0) {
|
|
84
|
-
// Display in columns
|
|
85
|
-
const cols = 3;
|
|
86
|
-
const width = 25;
|
|
87
|
-
for (let i = 0; i < builtIn.length; i += cols) {
|
|
88
|
-
const row = builtIn.slice(i, i + cols).map(c => ` /${c}`.padEnd(width)).join('');
|
|
89
|
-
console.log(row);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
logger.info(' (none)');
|
|
94
|
-
}
|
|
95
|
-
logger.newline();
|
|
96
|
-
logger.info(`User skills (${user.length}):`);
|
|
97
|
-
if (user.length > 0) {
|
|
98
|
-
for (const skill of user) {
|
|
99
|
-
console.log(` /${skill}`);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
logger.info(' (none - add with `pennyfarthing skill add <name>`)');
|
|
104
|
-
}
|
|
105
|
-
if (local.length > 0) {
|
|
106
|
-
logger.newline();
|
|
107
|
-
logger.info(`Local skills (${local.length}):`);
|
|
108
|
-
for (const skill of local) {
|
|
109
|
-
console.log(` /${skill} (file in .claude/skills/)`);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
logger.newline();
|
|
113
|
-
logger.info('Tip: Use `pennyfarthing skill add <name>` to create a custom skill');
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Add a new custom skill
|
|
117
|
-
*/
|
|
118
|
-
export async function addSkill(name, options) {
|
|
119
|
-
const projectRoot = process.cwd();
|
|
120
|
-
if (!manifestExists(projectRoot)) {
|
|
121
|
-
logger.error('Pennyfarthing not initialized. Run `pennyfarthing init` first.');
|
|
122
|
-
process.exit(1);
|
|
123
|
-
}
|
|
124
|
-
// Validate name
|
|
125
|
-
if (!/^[a-z][a-z0-9-]*$/.test(name)) {
|
|
126
|
-
logger.error('Skill name must start with lowercase letter and contain only lowercase letters, numbers, and hyphens');
|
|
127
|
-
process.exit(1);
|
|
128
|
-
}
|
|
129
|
-
const skillsDir = join(projectRoot, '.claude/skills');
|
|
130
|
-
const projectSkillsDir = join(projectRoot, '.claude/project/skills');
|
|
131
|
-
// Check if skills dir is old-style symlink
|
|
132
|
-
if (isSymlink(skillsDir)) {
|
|
133
|
-
logger.error('Skills directory is using old symlink style.');
|
|
134
|
-
logger.info('Run `pennyfarthing update` first to migrate to new directory structure.');
|
|
135
|
-
process.exit(1);
|
|
136
|
-
}
|
|
137
|
-
// Check if skill already exists (skills are directories)
|
|
138
|
-
const linkPath = join(skillsDir, name);
|
|
139
|
-
if (pathExists(linkPath)) {
|
|
140
|
-
const source = getSkillSource(skillsDir, name);
|
|
141
|
-
if (source.type === 'built-in') {
|
|
142
|
-
logger.error(`'${name}' is a built-in skill and cannot be overridden.`);
|
|
143
|
-
logger.info('Choose a different name for your custom skill.');
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
logger.error(`Skill '${name}' already exists.`);
|
|
147
|
-
logger.info(`Edit it at: .claude/project/skills/${name}/SKILL.md`);
|
|
148
|
-
}
|
|
149
|
-
process.exit(1);
|
|
150
|
-
}
|
|
151
|
-
// Ensure project skills directory exists
|
|
152
|
-
if (!pathExists(projectSkillsDir)) {
|
|
153
|
-
ensureDirSync(projectSkillsDir);
|
|
154
|
-
logger.created('.claude/project/skills/');
|
|
155
|
-
}
|
|
156
|
-
// Create the skill directory
|
|
157
|
-
const skillDir = join(projectSkillsDir, name);
|
|
158
|
-
const skillFilePath = join(skillDir, 'SKILL.md');
|
|
159
|
-
const template = options.template || 'default';
|
|
160
|
-
let content;
|
|
161
|
-
switch (template) {
|
|
162
|
-
case 'knowledge':
|
|
163
|
-
content = `# ${name}
|
|
164
|
-
|
|
165
|
-
> Domain knowledge and reference information
|
|
166
|
-
|
|
167
|
-
## Overview
|
|
168
|
-
|
|
169
|
-
Describe the domain this skill covers.
|
|
170
|
-
|
|
171
|
-
## Key Concepts
|
|
172
|
-
|
|
173
|
-
### Concept 1
|
|
174
|
-
|
|
175
|
-
Explanation of the concept.
|
|
176
|
-
|
|
177
|
-
### Concept 2
|
|
178
|
-
|
|
179
|
-
Explanation of the concept.
|
|
180
|
-
|
|
181
|
-
## Common Patterns
|
|
182
|
-
|
|
183
|
-
\`\`\`
|
|
184
|
-
Pattern example here
|
|
185
|
-
\`\`\`
|
|
186
|
-
|
|
187
|
-
## Reference
|
|
188
|
-
|
|
189
|
-
- Link or reference 1
|
|
190
|
-
- Link or reference 2
|
|
191
|
-
`;
|
|
192
|
-
break;
|
|
193
|
-
case 'workflow':
|
|
194
|
-
content = `# ${name}
|
|
195
|
-
|
|
196
|
-
> Workflow guide for a specific process
|
|
197
|
-
|
|
198
|
-
## When to Use
|
|
199
|
-
|
|
200
|
-
Use this skill when:
|
|
201
|
-
- Condition 1
|
|
202
|
-
- Condition 2
|
|
203
|
-
|
|
204
|
-
## Steps
|
|
205
|
-
|
|
206
|
-
### Step 1: First Thing
|
|
207
|
-
|
|
208
|
-
Do this first.
|
|
209
|
-
|
|
210
|
-
### Step 2: Second Thing
|
|
211
|
-
|
|
212
|
-
Then do this.
|
|
213
|
-
|
|
214
|
-
### Step 3: Final Thing
|
|
215
|
-
|
|
216
|
-
Complete with this.
|
|
217
|
-
|
|
218
|
-
## Tips
|
|
219
|
-
|
|
220
|
-
- Tip 1
|
|
221
|
-
- Tip 2
|
|
222
|
-
`;
|
|
223
|
-
break;
|
|
224
|
-
default:
|
|
225
|
-
content = `# ${name}
|
|
226
|
-
|
|
227
|
-
> Brief description of what this skill provides
|
|
228
|
-
|
|
229
|
-
## Overview
|
|
230
|
-
|
|
231
|
-
Describe what this skill helps with.
|
|
232
|
-
|
|
233
|
-
## Usage
|
|
234
|
-
|
|
235
|
-
When to use this skill and how.
|
|
236
|
-
|
|
237
|
-
## Content
|
|
238
|
-
|
|
239
|
-
Add your skill content here.
|
|
240
|
-
`;
|
|
241
|
-
}
|
|
242
|
-
// Create skill directory and write SKILL.md
|
|
243
|
-
ensureDirSync(skillDir);
|
|
244
|
-
writeFileSync(skillFilePath, content, 'utf8');
|
|
245
|
-
logger.created(`.claude/project/skills/${name}/SKILL.md`);
|
|
246
|
-
// Create symlink in skills directory (points to the directory)
|
|
247
|
-
const relativeTarget = computeRelativeSymlink(linkPath, skillDir);
|
|
248
|
-
symlinkSync(relativeTarget, linkPath);
|
|
249
|
-
logger.created(`.claude/skills/${name} -> ${relativeTarget}`);
|
|
250
|
-
logger.newline();
|
|
251
|
-
logger.success(`Skill '/${name}' created!`);
|
|
252
|
-
logger.newline();
|
|
253
|
-
logger.info('Next steps:');
|
|
254
|
-
logger.info(` 1. Edit .claude/project/skills/${name}/SKILL.md to customize`);
|
|
255
|
-
logger.info(` 2. Use /${name} in Claude Code`);
|
|
256
|
-
if (options.edit) {
|
|
257
|
-
logger.newline();
|
|
258
|
-
logger.info(`Opening ${skillFilePath} in editor...`);
|
|
259
|
-
// Could open in $EDITOR here if desired
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Remove a custom skill
|
|
264
|
-
*/
|
|
265
|
-
export async function removeSkill(name, options) {
|
|
266
|
-
const projectRoot = process.cwd();
|
|
267
|
-
if (!manifestExists(projectRoot)) {
|
|
268
|
-
logger.error('Pennyfarthing not initialized. Run `pennyfarthing init` first.');
|
|
269
|
-
process.exit(1);
|
|
270
|
-
}
|
|
271
|
-
const skillsDir = join(projectRoot, '.claude/skills');
|
|
272
|
-
const projectSkillsDir = join(projectRoot, '.claude/project/skills');
|
|
273
|
-
// Skills are directories
|
|
274
|
-
const linkPath = join(skillsDir, name);
|
|
275
|
-
const sourceDir = join(projectSkillsDir, name);
|
|
276
|
-
if (!pathExists(linkPath)) {
|
|
277
|
-
logger.error(`Skill '${name}' not found.`);
|
|
278
|
-
process.exit(1);
|
|
279
|
-
}
|
|
280
|
-
const source = getSkillSource(skillsDir, name);
|
|
281
|
-
if (source.type === 'built-in') {
|
|
282
|
-
logger.error(`'${name}' is a built-in skill and cannot be removed.`);
|
|
283
|
-
logger.info('You can only remove custom skills.');
|
|
284
|
-
process.exit(1);
|
|
285
|
-
}
|
|
286
|
-
// Confirm removal
|
|
287
|
-
if (!options.force) {
|
|
288
|
-
const confirmed = await confirm(`Remove skill '/${name}'?`);
|
|
289
|
-
if (!confirmed) {
|
|
290
|
-
logger.info('Aborted');
|
|
291
|
-
return;
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
// Remove symlink
|
|
295
|
-
if (isSymlink(linkPath)) {
|
|
296
|
-
unlinkSync(linkPath);
|
|
297
|
-
logger.info(`Removed symlink: .claude/skills/${name}`);
|
|
298
|
-
}
|
|
299
|
-
// Ask about source directory
|
|
300
|
-
if (pathExists(sourceDir)) {
|
|
301
|
-
const removeSource = options.force || await confirm(`Also delete source directory .claude/project/skills/${name}/?`);
|
|
302
|
-
if (removeSource) {
|
|
303
|
-
removeSync(sourceDir);
|
|
304
|
-
logger.info(`Removed source: .claude/project/skills/${name}/`);
|
|
305
|
-
}
|
|
306
|
-
else {
|
|
307
|
-
logger.info(`Kept source directory: .claude/project/skills/${name}/`);
|
|
308
|
-
logger.info('(You can restore with: pennyfarthing skill link ' + name + ')');
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
logger.newline();
|
|
312
|
-
logger.success(`Skill '/${name}' removed.`);
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Link an existing skill directory
|
|
316
|
-
*/
|
|
317
|
-
export async function linkSkill(name) {
|
|
318
|
-
const projectRoot = process.cwd();
|
|
319
|
-
if (!manifestExists(projectRoot)) {
|
|
320
|
-
logger.error('Pennyfarthing not initialized. Run `pennyfarthing init` first.');
|
|
321
|
-
process.exit(1);
|
|
322
|
-
}
|
|
323
|
-
const skillsDir = join(projectRoot, '.claude/skills');
|
|
324
|
-
const projectSkillsDir = join(projectRoot, '.claude/project/skills');
|
|
325
|
-
// Skills are directories
|
|
326
|
-
const linkPath = join(skillsDir, name);
|
|
327
|
-
const sourceDir = join(projectSkillsDir, name);
|
|
328
|
-
// Check source exists (must be a directory)
|
|
329
|
-
if (!pathExists(sourceDir) || !isDirectory(sourceDir)) {
|
|
330
|
-
logger.error(`Source directory not found: .claude/project/skills/${name}/`);
|
|
331
|
-
logger.info('Create the skill directory first (with SKILL.md inside), then run this command to link it.');
|
|
332
|
-
process.exit(1);
|
|
333
|
-
}
|
|
334
|
-
// Check if already linked
|
|
335
|
-
if (pathExists(linkPath)) {
|
|
336
|
-
const source = getSkillSource(skillsDir, name);
|
|
337
|
-
if (source.type === 'built-in') {
|
|
338
|
-
logger.error(`'${name}' conflicts with a built-in skill.`);
|
|
339
|
-
logger.info('Rename your skill to avoid the conflict.');
|
|
340
|
-
}
|
|
341
|
-
else {
|
|
342
|
-
logger.info(`Skill '/${name}' is already linked.`);
|
|
343
|
-
}
|
|
344
|
-
process.exit(1);
|
|
345
|
-
}
|
|
346
|
-
// Create symlink
|
|
347
|
-
const relativeTarget = computeRelativeSymlink(linkPath, sourceDir);
|
|
348
|
-
symlinkSync(relativeTarget, linkPath);
|
|
349
|
-
logger.success(`Linked '/${name}' -> .claude/project/skills/${name}/`);
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Sync skills - rebuild symlinks from source directories
|
|
353
|
-
*/
|
|
354
|
-
export async function syncSkill(options) {
|
|
355
|
-
const projectRoot = process.cwd();
|
|
356
|
-
if (!manifestExists(projectRoot)) {
|
|
357
|
-
logger.error('Pennyfarthing not initialized. Run `pennyfarthing init` first.');
|
|
358
|
-
process.exit(1);
|
|
359
|
-
}
|
|
360
|
-
const skillsDir = join(projectRoot, '.claude/skills');
|
|
361
|
-
const projectSkillsDir = join(projectRoot, '.claude/project/skills');
|
|
362
|
-
// Check if skills dir is old-style symlink
|
|
363
|
-
if (isSymlink(skillsDir)) {
|
|
364
|
-
logger.error('Skills directory is using old symlink style.');
|
|
365
|
-
logger.info('Run `pennyfarthing update` first to migrate to new directory structure.');
|
|
366
|
-
process.exit(1);
|
|
367
|
-
}
|
|
368
|
-
if (!pathExists(projectSkillsDir)) {
|
|
369
|
-
logger.info('No user skills directory found. Nothing to sync.');
|
|
370
|
-
return;
|
|
371
|
-
}
|
|
372
|
-
logger.header('Syncing User Skills');
|
|
373
|
-
if (options.dryRun) {
|
|
374
|
-
logger.info('Dry run mode - no changes will be made');
|
|
375
|
-
}
|
|
376
|
-
// Find user skills that need linking (skills are directories)
|
|
377
|
-
const userSkills = readdirSync(projectSkillsDir).filter(f => {
|
|
378
|
-
const fullPath = join(projectSkillsDir, f);
|
|
379
|
-
return isDirectory(fullPath) && !f.startsWith('.');
|
|
380
|
-
});
|
|
381
|
-
let linked = 0;
|
|
382
|
-
let skipped = 0;
|
|
383
|
-
for (const name of userSkills) {
|
|
384
|
-
const linkPath = join(skillsDir, name);
|
|
385
|
-
const sourceDir = join(projectSkillsDir, name);
|
|
386
|
-
if (pathExists(linkPath)) {
|
|
387
|
-
const source = getSkillSource(skillsDir, name);
|
|
388
|
-
if (source.type === 'built-in') {
|
|
389
|
-
logger.warning(` Skipping ${name} - conflicts with built-in skill`);
|
|
390
|
-
skipped++;
|
|
391
|
-
}
|
|
392
|
-
else {
|
|
393
|
-
logger.info(` ✓ ${name} (already linked)`);
|
|
394
|
-
}
|
|
395
|
-
continue;
|
|
396
|
-
}
|
|
397
|
-
// Create symlink
|
|
398
|
-
const relativeTarget = computeRelativeSymlink(linkPath, sourceDir);
|
|
399
|
-
if (!options.dryRun) {
|
|
400
|
-
symlinkSync(relativeTarget, linkPath);
|
|
401
|
-
}
|
|
402
|
-
logger.created(` ${name} -> ${relativeTarget}`);
|
|
403
|
-
linked++;
|
|
404
|
-
}
|
|
405
|
-
logger.newline();
|
|
406
|
-
if (linked > 0) {
|
|
407
|
-
logger.success(`Linked ${linked} skill(s)`);
|
|
408
|
-
}
|
|
409
|
-
if (skipped > 0) {
|
|
410
|
-
logger.warning(`Skipped ${skipped} skill(s) due to conflicts`);
|
|
411
|
-
}
|
|
412
|
-
if (linked === 0 && skipped === 0) {
|
|
413
|
-
logger.info('All user skills are already linked.');
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
//# sourceMappingURL=skill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/cli/commands/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACvF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,OAAO,MAAM,UAAU,CAAC;AAE/B,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,SAAS,sBAAsB,CAAC,QAAgB,EAAE,UAAkB;IAClE,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,SAAiB,EAAE,QAAgB;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE3C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;YAC9F,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QACtC,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAEtD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kCAAkC;IAClC,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QACjF,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,wCAAwC;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEV,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAEhD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,UAAU;gBACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,OAAO;gBACV,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,MAAM;QACV,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAEtC,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,qBAAqB;QACrB,MAAM,IAAI,GAAG,CAAC,CAAC;QACf,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/C,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,4BAA4B,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,OAA8C;IACzF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,sGAAsG,CAAC,CAAC;QACrH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IAErE,2CAA2C;IAC3C,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yDAAyD;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,iDAAiD,CAAC,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,sCAAsC,IAAI,WAAW,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IAED,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;IAC/C,IAAI,OAAe,CAAC;IAEpB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,GAAG,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BxB,CAAC;YACI,MAAM;QAER,KAAK,UAAU;YACb,OAAO,GAAG,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BxB,CAAC;YACI,MAAM;QAER;YACE,OAAO,GAAG,KAAK,IAAI;;;;;;;;;;;;;;;CAexB,CAAC;IACA,CAAC;IAED,4CAA4C;IAC5C,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxB,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,CAAC,0BAA0B,IAAI,WAAW,CAAC,CAAC;IAE1D,+DAA+D;IAC/D,MAAM,cAAc,GAAG,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClE,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,kBAAkB,IAAI,OAAO,cAAc,EAAE,CAAC,CAAC;IAE9D,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,MAAM,CAAC,IAAI,CAAC,oCAAoC,IAAI,wBAAwB,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,iBAAiB,CAAC,CAAC;IAEhD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,WAAW,aAAa,eAAe,CAAC,CAAC;QACrD,wCAAwC;IAC1C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,OAA4B;IAC1E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IAErE,yBAAyB;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE/C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,8CAA8C,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,6BAA6B;IAC7B,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,OAAO,CAAC,uDAAuD,IAAI,IAAI,CAAC,CAAC;QACrH,IAAI,YAAY,EAAE,CAAC;YACjB,UAAU,CAAC,SAAS,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,0CAA0C,IAAI,GAAG,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,iDAAiD,IAAI,GAAG,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,kDAAkD,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IAErE,yBAAyB;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAE/C,4CAA4C;IAC5C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,sDAAsD,IAAI,GAAG,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;QAC1G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,0BAA0B;IAC1B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,oCAAoC,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,sBAAsB,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;IACjB,MAAM,cAAc,GAAG,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnE,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAEtC,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,+BAA+B,IAAI,GAAG,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAA6B;IAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IAErE,2CAA2C;IAC3C,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAErC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;IAED,8DAA8D;IAC9D,MAAM,UAAU,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAE/C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,kCAAkC,CAAC,CAAC;gBACrE,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC;YAC9C,CAAC;YACD,SAAS;QACX,CAAC;QAED,iBAAiB;QACjB,MAAM,cAAc,GAAG,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,cAAc,EAAE,CAAC,CAAC;QACjD,MAAM,EAAE,CAAC;IACX,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,UAAU,MAAM,WAAW,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,WAAW,OAAO,4BAA4B,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* List all available themes
|
|
3
|
-
*/
|
|
4
|
-
export declare function listCommand(): Promise<void>;
|
|
5
|
-
/**
|
|
6
|
-
* Set the active theme
|
|
7
|
-
*/
|
|
8
|
-
export declare function setCommand(themeName: string): Promise<void>;
|
|
9
|
-
/**
|
|
10
|
-
* Show full details of a theme
|
|
11
|
-
*/
|
|
12
|
-
export declare function showCommand(themeName?: string): Promise<void>;
|
|
13
|
-
export interface CreateCommandOptions {
|
|
14
|
-
base?: string;
|
|
15
|
-
user?: boolean;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Create a new custom theme
|
|
19
|
-
*/
|
|
20
|
-
export declare function createCommand(themeName: string, options: CreateCommandOptions): Promise<void>;
|
|
21
|
-
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/theme.ts"],"names":[],"mappings":"AAiCA;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA0CjD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BjE;AAgBD;;GAEG;AACH,wBAAsB,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DnE;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
import { existsSync } from 'fs';
|
|
2
|
-
import { join, dirname } from 'path';
|
|
3
|
-
import { getThemes, getCurrentTheme, getAgentSamples, setTheme, createTheme } from '../utils/themes.js';
|
|
4
|
-
import { manifestExists } from '../utils/manifest.js';
|
|
5
|
-
/**
|
|
6
|
-
* Check if a directory is a Pennyfarthing project root
|
|
7
|
-
* Either has a manifest OR has .claude/persona-config.yaml (self-development case)
|
|
8
|
-
*/
|
|
9
|
-
function isPennyfarthingRoot(dir) {
|
|
10
|
-
if (manifestExists(dir)) {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
// Also check for persona-config.yaml (pennyfarthing developing itself)
|
|
14
|
-
return existsSync(join(dir, '.claude/persona-config.yaml'));
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Find the Pennyfarthing project root by walking up the directory tree
|
|
18
|
-
*/
|
|
19
|
-
function findProjectRoot() {
|
|
20
|
-
let dir = process.cwd();
|
|
21
|
-
while (dir !== '/') {
|
|
22
|
-
if (isPennyfarthingRoot(dir)) {
|
|
23
|
-
return dir;
|
|
24
|
-
}
|
|
25
|
-
dir = dirname(dir);
|
|
26
|
-
}
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* List all available themes
|
|
31
|
-
*/
|
|
32
|
-
export async function listCommand() {
|
|
33
|
-
const projectRoot = findProjectRoot();
|
|
34
|
-
// Check if in a Pennyfarthing project
|
|
35
|
-
if (!projectRoot) {
|
|
36
|
-
console.log('Not in a Pennyfarthing project.');
|
|
37
|
-
console.log('Run `pennyfarthing init` to install first.');
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const currentTheme = getCurrentTheme(projectRoot);
|
|
41
|
-
let themes;
|
|
42
|
-
try {
|
|
43
|
-
themes = getThemes();
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
console.error('Error loading themes:', error instanceof Error ? error.message : error);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
if (themes.length === 0) {
|
|
50
|
-
console.log('No themes found.');
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
console.log('Available themes:');
|
|
54
|
-
console.log();
|
|
55
|
-
for (const theme of themes) {
|
|
56
|
-
const isCurrent = theme.id === currentTheme;
|
|
57
|
-
const marker = isCurrent ? '* ' : ' ';
|
|
58
|
-
const currentLabel = isCurrent ? ' (current)' : '';
|
|
59
|
-
console.log(`${marker}${theme.id}${currentLabel}`);
|
|
60
|
-
const samples = getAgentSamples(theme);
|
|
61
|
-
if (samples) {
|
|
62
|
-
console.log(` ${samples}`);
|
|
63
|
-
}
|
|
64
|
-
console.log();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Set the active theme
|
|
69
|
-
*/
|
|
70
|
-
export async function setCommand(themeName) {
|
|
71
|
-
const projectRoot = findProjectRoot();
|
|
72
|
-
if (!projectRoot) {
|
|
73
|
-
console.log('Not in a Pennyfarthing project.');
|
|
74
|
-
console.log('Run `pennyfarthing init` to install first.');
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
try {
|
|
78
|
-
const theme = setTheme(themeName, projectRoot);
|
|
79
|
-
console.log(`Theme changed to '${theme.id}'.`);
|
|
80
|
-
console.log();
|
|
81
|
-
console.log(` ${theme.name}`);
|
|
82
|
-
const samples = getAgentSamples(theme);
|
|
83
|
-
if (samples) {
|
|
84
|
-
console.log(` ${samples}`);
|
|
85
|
-
}
|
|
86
|
-
console.log();
|
|
87
|
-
console.log('Start a new agent session to use the new theme.');
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
if (error instanceof Error) {
|
|
91
|
-
console.error(error.message);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
console.error('Error setting theme:', error);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Display theme details for a single agent
|
|
100
|
-
*/
|
|
101
|
-
function displayAgent(name, agent) {
|
|
102
|
-
console.log(` ${name}:`);
|
|
103
|
-
console.log(` Character: ${agent.character}`);
|
|
104
|
-
if (agent.style) {
|
|
105
|
-
console.log(` Style: ${agent.style}`);
|
|
106
|
-
}
|
|
107
|
-
if (agent.quote) {
|
|
108
|
-
console.log(` Quote: "${agent.quote}"`);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Show full details of a theme
|
|
113
|
-
*/
|
|
114
|
-
export async function showCommand(themeName) {
|
|
115
|
-
const projectRoot = findProjectRoot();
|
|
116
|
-
if (!projectRoot) {
|
|
117
|
-
console.log('Not in a Pennyfarthing project.');
|
|
118
|
-
console.log('Run `pennyfarthing init` to install first.');
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
let themes;
|
|
122
|
-
try {
|
|
123
|
-
themes = getThemes();
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
console.error('Error loading themes:', error instanceof Error ? error.message : error);
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
// Determine which theme to show
|
|
130
|
-
let targetThemeName = themeName;
|
|
131
|
-
if (!targetThemeName) {
|
|
132
|
-
const currentTheme = getCurrentTheme(projectRoot);
|
|
133
|
-
if (!currentTheme) {
|
|
134
|
-
console.log('No theme currently set.');
|
|
135
|
-
console.log('Use `pennyfarthing theme set <name>` to select a theme.');
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
targetThemeName = currentTheme;
|
|
139
|
-
}
|
|
140
|
-
const theme = themes.find(t => t.id === targetThemeName);
|
|
141
|
-
if (!theme) {
|
|
142
|
-
const available = themes.map(t => t.id).join(', ');
|
|
143
|
-
console.error(`Theme '${targetThemeName}' not found.`);
|
|
144
|
-
console.error(`Available themes: ${available}`);
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
// Display theme header
|
|
148
|
-
console.log(`Theme: ${theme.id}`);
|
|
149
|
-
if (theme.description) {
|
|
150
|
-
console.log(`Description: ${theme.description}`);
|
|
151
|
-
}
|
|
152
|
-
console.log();
|
|
153
|
-
// Display agents
|
|
154
|
-
console.log('Agents:');
|
|
155
|
-
const agentOrder = ['sm', 'tea', 'dev', 'reviewer', 'orchestrator', 'pm', 'architect', 'devops', 'tech-writer', 'ux-designer'];
|
|
156
|
-
for (const agentName of agentOrder) {
|
|
157
|
-
const agent = theme.agents[agentName];
|
|
158
|
-
if (agent?.character) {
|
|
159
|
-
displayAgent(agentName, agent);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
// Show any other agents not in the standard order
|
|
163
|
-
for (const [agentName, agent] of Object.entries(theme.agents)) {
|
|
164
|
-
if (!agentOrder.includes(agentName) && agent?.character) {
|
|
165
|
-
displayAgent(agentName, agent);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Create a new custom theme
|
|
171
|
-
*/
|
|
172
|
-
export async function createCommand(themeName, options) {
|
|
173
|
-
const projectRoot = findProjectRoot();
|
|
174
|
-
if (!projectRoot && !options.user) {
|
|
175
|
-
console.log('Not in a Pennyfarthing project.');
|
|
176
|
-
console.log('Use --user to create a user-level theme, or run from a project directory.');
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
try {
|
|
180
|
-
const themePath = createTheme(themeName, projectRoot || process.cwd(), {
|
|
181
|
-
baseTheme: options.base,
|
|
182
|
-
userLevel: options.user
|
|
183
|
-
});
|
|
184
|
-
console.log(`Created theme '${themeName}'.`);
|
|
185
|
-
console.log();
|
|
186
|
-
console.log(` File: ${themePath}`);
|
|
187
|
-
console.log();
|
|
188
|
-
console.log('Next steps:');
|
|
189
|
-
console.log(` 1. Edit the theme file to customize your agents`);
|
|
190
|
-
console.log(` 2. Run 'pennyfarthing theme set ${themeName}' to activate`);
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
if (error instanceof Error) {
|
|
194
|
-
console.error(error.message);
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
console.error('Error creating theme:', error);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
//# sourceMappingURL=theme.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli/commands/theme.ts"],"names":[],"mappings":"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"}
|