@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,363 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Story 11-7: Build slice/report generator
|
|
3
|
-
*
|
|
4
|
-
* These tests verify:
|
|
5
|
-
* AC1: scripts/face-report.sh (or generate-report.ts) generates filtered views
|
|
6
|
-
* AC2: Supports role, theme, and OCEAN filters
|
|
7
|
-
* AC3: Comparison mode for 2-4 characters
|
|
8
|
-
* AC4: Output as markdown with embedded SVGs
|
|
9
|
-
*
|
|
10
|
-
* Run with: npm test
|
|
11
|
-
*/
|
|
12
|
-
import { describe, it } from 'node:test';
|
|
13
|
-
import assert from 'node:assert';
|
|
14
|
-
// ============================================================================
|
|
15
|
-
// AC1: Generator Module Exists and Exports
|
|
16
|
-
// ============================================================================
|
|
17
|
-
describe('AC1: Report Generator Module Exists', () => {
|
|
18
|
-
it('should export generateReport function', async () => {
|
|
19
|
-
const module = await import('./generate-report.js');
|
|
20
|
-
assert.ok(typeof module.generateReport === 'function', 'generateReport should be a function');
|
|
21
|
-
});
|
|
22
|
-
it('should export filterByOcean function', async () => {
|
|
23
|
-
const module = await import('./generate-report.js');
|
|
24
|
-
assert.ok(typeof module.filterByOcean === 'function', 'filterByOcean should be a function');
|
|
25
|
-
});
|
|
26
|
-
it('should export filterByRole function', async () => {
|
|
27
|
-
const module = await import('./generate-report.js');
|
|
28
|
-
assert.ok(typeof module.filterByRole === 'function', 'filterByRole should be a function');
|
|
29
|
-
});
|
|
30
|
-
it('should export filterByTheme function', async () => {
|
|
31
|
-
const module = await import('./generate-report.js');
|
|
32
|
-
assert.ok(typeof module.filterByTheme === 'function', 'filterByTheme should be a function');
|
|
33
|
-
});
|
|
34
|
-
it('should export compareCharacters function', async () => {
|
|
35
|
-
const module = await import('./generate-report.js');
|
|
36
|
-
assert.ok(typeof module.compareCharacters === 'function', 'compareCharacters should be a function');
|
|
37
|
-
});
|
|
38
|
-
it('should export parseOceanFilter function', async () => {
|
|
39
|
-
const module = await import('./generate-report.js');
|
|
40
|
-
assert.ok(typeof module.parseOceanFilter === 'function', 'parseOceanFilter should be a function');
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
// ============================================================================
|
|
44
|
-
// AC2: OCEAN Filter Support
|
|
45
|
-
// ============================================================================
|
|
46
|
-
describe('AC2: OCEAN Filter Parsing', () => {
|
|
47
|
-
it('should parse "O>=4" into dimension O, operator >=, value 4', async () => {
|
|
48
|
-
const { parseOceanFilter } = await import('./generate-report.js');
|
|
49
|
-
const filter = parseOceanFilter('O>=4');
|
|
50
|
-
assert.strictEqual(filter.dimension, 'O');
|
|
51
|
-
assert.strictEqual(filter.operator, '>=');
|
|
52
|
-
assert.strictEqual(filter.value, 4);
|
|
53
|
-
});
|
|
54
|
-
it('should parse "A<=2" into dimension A, operator <=, value 2', async () => {
|
|
55
|
-
const { parseOceanFilter } = await import('./generate-report.js');
|
|
56
|
-
const filter = parseOceanFilter('A<=2');
|
|
57
|
-
assert.strictEqual(filter.dimension, 'A');
|
|
58
|
-
assert.strictEqual(filter.operator, '<=');
|
|
59
|
-
assert.strictEqual(filter.value, 2);
|
|
60
|
-
});
|
|
61
|
-
it('should parse "C=5" into dimension C, operator =, value 5', async () => {
|
|
62
|
-
const { parseOceanFilter } = await import('./generate-report.js');
|
|
63
|
-
const filter = parseOceanFilter('C=5');
|
|
64
|
-
assert.strictEqual(filter.dimension, 'C');
|
|
65
|
-
assert.strictEqual(filter.operator, '=');
|
|
66
|
-
assert.strictEqual(filter.value, 5);
|
|
67
|
-
});
|
|
68
|
-
it('should parse "N>3" into dimension N, operator >, value 3', async () => {
|
|
69
|
-
const { parseOceanFilter } = await import('./generate-report.js');
|
|
70
|
-
const filter = parseOceanFilter('N>3');
|
|
71
|
-
assert.strictEqual(filter.dimension, 'N');
|
|
72
|
-
assert.strictEqual(filter.operator, '>');
|
|
73
|
-
assert.strictEqual(filter.value, 3);
|
|
74
|
-
});
|
|
75
|
-
it('should parse "E<2" into dimension E, operator <, value 2', async () => {
|
|
76
|
-
const { parseOceanFilter } = await import('./generate-report.js');
|
|
77
|
-
const filter = parseOceanFilter('E<2');
|
|
78
|
-
assert.strictEqual(filter.dimension, 'E');
|
|
79
|
-
assert.strictEqual(filter.operator, '<');
|
|
80
|
-
assert.strictEqual(filter.value, 2);
|
|
81
|
-
});
|
|
82
|
-
it('should throw error for invalid dimension "X>=4"', async () => {
|
|
83
|
-
const { parseOceanFilter } = await import('./generate-report.js');
|
|
84
|
-
assert.throws(() => parseOceanFilter('X>=4'), /invalid.*dimension/i, 'Should throw for invalid OCEAN dimension');
|
|
85
|
-
});
|
|
86
|
-
it('should throw error for invalid operator "O~4"', async () => {
|
|
87
|
-
const { parseOceanFilter } = await import('./generate-report.js');
|
|
88
|
-
assert.throws(() => parseOceanFilter('O~4'), /invalid.*operator/i, 'Should throw for invalid operator');
|
|
89
|
-
});
|
|
90
|
-
it('should throw error for invalid value "O>=six"', async () => {
|
|
91
|
-
const { parseOceanFilter } = await import('./generate-report.js');
|
|
92
|
-
assert.throws(() => parseOceanFilter('O>=six'), /invalid.*value/i, 'Should throw for non-numeric value');
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
describe('AC2: OCEAN Filtering Results', () => {
|
|
96
|
-
it('should return only characters with O >= 4 when filtering by "O>=4"', async () => {
|
|
97
|
-
const { filterByOcean } = await import('./generate-report.js');
|
|
98
|
-
const results = filterByOcean('O>=4');
|
|
99
|
-
assert.ok(Array.isArray(results), 'Should return array');
|
|
100
|
-
assert.ok(results.length > 0, 'Should return at least one character');
|
|
101
|
-
// Verify all returned characters have O >= 4
|
|
102
|
-
for (const char of results) {
|
|
103
|
-
assert.ok(char.ocean.O >= 4, `Character ${char.theme}:${char.agent} should have O >= 4, got ${char.ocean.O}`);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
it('should return only characters with A <= 2 when filtering by "A<=2"', async () => {
|
|
107
|
-
const { filterByOcean } = await import('./generate-report.js');
|
|
108
|
-
const results = filterByOcean('A<=2');
|
|
109
|
-
assert.ok(Array.isArray(results), 'Should return array');
|
|
110
|
-
for (const char of results) {
|
|
111
|
-
assert.ok(char.ocean.A <= 2, `Character ${char.theme}:${char.agent} should have A <= 2, got ${char.ocean.A}`);
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
it('should return characters with exact match for "C=5"', async () => {
|
|
115
|
-
const { filterByOcean } = await import('./generate-report.js');
|
|
116
|
-
const results = filterByOcean('C=5');
|
|
117
|
-
for (const char of results) {
|
|
118
|
-
assert.strictEqual(char.ocean.C, 5, `Character ${char.theme}:${char.agent} should have C = 5`);
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
describe('AC2: Role Filter Support', () => {
|
|
123
|
-
it('should return only reviewers when filtering by role "reviewer"', async () => {
|
|
124
|
-
const { filterByRole } = await import('./generate-report.js');
|
|
125
|
-
const results = filterByRole('reviewer');
|
|
126
|
-
assert.ok(Array.isArray(results), 'Should return array');
|
|
127
|
-
assert.ok(results.length > 0, 'Should return at least one character');
|
|
128
|
-
for (const char of results) {
|
|
129
|
-
assert.strictEqual(char.agent, 'reviewer', `Should only return reviewers, got ${char.agent}`);
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
it('should return all agents for a role across all themes', async () => {
|
|
133
|
-
const { filterByRole } = await import('./generate-report.js');
|
|
134
|
-
const results = filterByRole('sm');
|
|
135
|
-
// Should have one SM per theme (63 themes)
|
|
136
|
-
assert.ok(results.length >= 60, `Should have 60+ SMs, got ${results.length}`);
|
|
137
|
-
});
|
|
138
|
-
it('should throw error for invalid role', async () => {
|
|
139
|
-
const { filterByRole } = await import('./generate-report.js');
|
|
140
|
-
assert.throws(() => filterByRole('invalid-role'), /invalid.*role/i, 'Should throw for invalid role');
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
describe('AC2: Theme Filter Support', () => {
|
|
144
|
-
it('should return all 10 agents for deadwood theme', async () => {
|
|
145
|
-
const { filterByTheme } = await import('./generate-report.js');
|
|
146
|
-
const results = filterByTheme('deadwood');
|
|
147
|
-
assert.ok(Array.isArray(results), 'Should return array');
|
|
148
|
-
assert.strictEqual(results.length, 10, 'Should return exactly 10 agents');
|
|
149
|
-
for (const char of results) {
|
|
150
|
-
assert.strictEqual(char.theme, 'deadwood', `Should only return deadwood characters, got ${char.theme}`);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
it('should return agents with character names from theme', async () => {
|
|
154
|
-
const { filterByTheme } = await import('./generate-report.js');
|
|
155
|
-
const results = filterByTheme('deadwood');
|
|
156
|
-
const sm = results.find((r) => r.agent === 'sm');
|
|
157
|
-
assert.ok(sm, 'Should have an SM agent');
|
|
158
|
-
assert.ok(sm.character, 'SM should have a character name');
|
|
159
|
-
assert.ok(sm.character.length > 0, 'Character name should not be empty');
|
|
160
|
-
});
|
|
161
|
-
it('should throw error for non-existent theme', async () => {
|
|
162
|
-
const { filterByTheme } = await import('./generate-report.js');
|
|
163
|
-
assert.throws(() => filterByTheme('nonexistent-theme'), /theme.*not found/i, 'Should throw for non-existent theme');
|
|
164
|
-
});
|
|
165
|
-
});
|
|
166
|
-
describe('AC2: Combined Filters', () => {
|
|
167
|
-
it('should support combining role and OCEAN filters', async () => {
|
|
168
|
-
const { generateReport } = await import('./generate-report.js');
|
|
169
|
-
const results = generateReport({ role: 'reviewer', ocean: 'A<=2' });
|
|
170
|
-
assert.ok(Array.isArray(results.characters), 'Should return characters array');
|
|
171
|
-
for (const char of results.characters) {
|
|
172
|
-
assert.strictEqual(char.agent, 'reviewer', 'Should be reviewer');
|
|
173
|
-
assert.ok(char.ocean.A <= 2, `Should have A <= 2, got ${char.ocean.A}`);
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
it('should support combining theme and OCEAN filters', async () => {
|
|
177
|
-
const { generateReport } = await import('./generate-report.js');
|
|
178
|
-
const results = generateReport({ theme: 'deadwood', ocean: 'N>=4' });
|
|
179
|
-
for (const char of results.characters) {
|
|
180
|
-
assert.strictEqual(char.theme, 'deadwood', 'Should be deadwood');
|
|
181
|
-
assert.ok(char.ocean.N >= 4, `Should have N >= 4, got ${char.ocean.N}`);
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
});
|
|
185
|
-
// ============================================================================
|
|
186
|
-
// AC3: Comparison Mode for 2-4 Characters
|
|
187
|
-
// ============================================================================
|
|
188
|
-
describe('AC3: Character Comparison Mode', () => {
|
|
189
|
-
it('should compare 2 characters side-by-side', async () => {
|
|
190
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
191
|
-
const result = compareCharacters(['deadwood:sm', 'firefly:sm']);
|
|
192
|
-
assert.ok(result.characters, 'Should have characters array');
|
|
193
|
-
assert.strictEqual(result.characters.length, 2, 'Should have 2 characters');
|
|
194
|
-
assert.strictEqual(result.characters[0].theme, 'deadwood');
|
|
195
|
-
assert.strictEqual(result.characters[1].theme, 'firefly');
|
|
196
|
-
});
|
|
197
|
-
it('should compare 3 characters side-by-side', async () => {
|
|
198
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
199
|
-
const result = compareCharacters(['deadwood:sm', 'firefly:sm', 'fargo:sm']);
|
|
200
|
-
assert.strictEqual(result.characters.length, 3, 'Should have 3 characters');
|
|
201
|
-
});
|
|
202
|
-
it('should compare 4 characters side-by-side', async () => {
|
|
203
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
204
|
-
const result = compareCharacters([
|
|
205
|
-
'deadwood:sm',
|
|
206
|
-
'firefly:sm',
|
|
207
|
-
'fargo:sm',
|
|
208
|
-
'succession:sm',
|
|
209
|
-
]);
|
|
210
|
-
assert.strictEqual(result.characters.length, 4, 'Should have 4 characters');
|
|
211
|
-
});
|
|
212
|
-
it('should include OCEAN scores for each compared character', async () => {
|
|
213
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
214
|
-
const result = compareCharacters(['deadwood:sm', 'firefly:sm']);
|
|
215
|
-
for (const char of result.characters) {
|
|
216
|
-
assert.ok(char.ocean, 'Character should have OCEAN scores');
|
|
217
|
-
assert.ok(typeof char.ocean.O === 'number', 'O should be a number');
|
|
218
|
-
assert.ok(typeof char.ocean.C === 'number', 'C should be a number');
|
|
219
|
-
assert.ok(typeof char.ocean.E === 'number', 'E should be a number');
|
|
220
|
-
assert.ok(typeof char.ocean.A === 'number', 'A should be a number');
|
|
221
|
-
assert.ok(typeof char.ocean.N === 'number', 'N should be a number');
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
it('should include character name for each compared character', async () => {
|
|
225
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
226
|
-
const result = compareCharacters(['deadwood:sm', 'firefly:sm']);
|
|
227
|
-
for (const char of result.characters) {
|
|
228
|
-
assert.ok(char.character, 'Character should have a name');
|
|
229
|
-
assert.ok(char.character.length > 0, 'Character name should not be empty');
|
|
230
|
-
}
|
|
231
|
-
});
|
|
232
|
-
it('should reject comparison with fewer than 2 characters', async () => {
|
|
233
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
234
|
-
assert.throws(() => compareCharacters(['deadwood:sm']), /at least 2/i, 'Should require at least 2 characters');
|
|
235
|
-
});
|
|
236
|
-
it('should reject comparison with more than 4 characters', async () => {
|
|
237
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
238
|
-
assert.throws(() => compareCharacters([
|
|
239
|
-
'deadwood:sm',
|
|
240
|
-
'firefly:sm',
|
|
241
|
-
'fargo:sm',
|
|
242
|
-
'succession:sm',
|
|
243
|
-
'breaking-bad:sm',
|
|
244
|
-
]), /at most 4/i, 'Should allow at most 4 characters');
|
|
245
|
-
});
|
|
246
|
-
it('should parse "theme:agent" format correctly', async () => {
|
|
247
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
248
|
-
const result = compareCharacters(['deadwood:reviewer', 'firefly:tea']);
|
|
249
|
-
assert.strictEqual(result.characters[0].theme, 'deadwood');
|
|
250
|
-
assert.strictEqual(result.characters[0].agent, 'reviewer');
|
|
251
|
-
assert.strictEqual(result.characters[1].theme, 'firefly');
|
|
252
|
-
assert.strictEqual(result.characters[1].agent, 'tea');
|
|
253
|
-
});
|
|
254
|
-
it('should throw error for invalid theme:agent format', async () => {
|
|
255
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
256
|
-
assert.throws(() => compareCharacters(['deadwood-sm', 'firefly:sm']), /invalid.*format/i, 'Should throw for missing colon separator');
|
|
257
|
-
});
|
|
258
|
-
it('should throw error for non-existent theme in comparison', async () => {
|
|
259
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
260
|
-
assert.throws(() => compareCharacters(['nonexistent:sm', 'firefly:sm']), /theme.*not found/i, 'Should throw for non-existent theme');
|
|
261
|
-
});
|
|
262
|
-
it('should throw error for non-existent agent in comparison', async () => {
|
|
263
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
264
|
-
assert.throws(() => compareCharacters(['deadwood:nonexistent', 'firefly:sm']), /agent.*not found/i, 'Should throw for non-existent agent');
|
|
265
|
-
});
|
|
266
|
-
});
|
|
267
|
-
// ============================================================================
|
|
268
|
-
// AC4: Markdown Output with Embedded SVGs
|
|
269
|
-
// ============================================================================
|
|
270
|
-
describe('AC4: Markdown Output Format', () => {
|
|
271
|
-
it('should output valid markdown string', async () => {
|
|
272
|
-
const { generateReport } = await import('./generate-report.js');
|
|
273
|
-
const result = generateReport({ role: 'sm' });
|
|
274
|
-
assert.ok(typeof result.markdown === 'string', 'Should have markdown property');
|
|
275
|
-
assert.ok(result.markdown.length > 0, 'Markdown should not be empty');
|
|
276
|
-
});
|
|
277
|
-
it('should include markdown header', async () => {
|
|
278
|
-
const { generateReport } = await import('./generate-report.js');
|
|
279
|
-
const result = generateReport({ role: 'sm' });
|
|
280
|
-
assert.ok(result.markdown.includes('#'), 'Should have markdown header');
|
|
281
|
-
});
|
|
282
|
-
it('should embed SVG references in markdown', async () => {
|
|
283
|
-
const { generateReport } = await import('./generate-report.js');
|
|
284
|
-
const result = generateReport({ role: 'sm' });
|
|
285
|
-
// Should reference SVG files
|
|
286
|
-
assert.ok(result.markdown.includes('.svg') || result.markdown.includes('<img'), 'Should reference SVG files');
|
|
287
|
-
});
|
|
288
|
-
it('should include character names in output', async () => {
|
|
289
|
-
const { generateReport } = await import('./generate-report.js');
|
|
290
|
-
const result = generateReport({ theme: 'deadwood' });
|
|
291
|
-
// Deadwood SM is Seth Bullock
|
|
292
|
-
assert.ok(result.markdown.includes('Bullock') || result.markdown.includes('Seth'), 'Should include character names');
|
|
293
|
-
});
|
|
294
|
-
it('should include OCEAN scores table for filtered results', async () => {
|
|
295
|
-
const { generateReport } = await import('./generate-report.js');
|
|
296
|
-
const result = generateReport({ ocean: 'O>=4' });
|
|
297
|
-
// Should have a table with OCEAN scores
|
|
298
|
-
assert.ok(result.markdown.includes('|') && result.markdown.includes('O'), 'Should include OCEAN table');
|
|
299
|
-
});
|
|
300
|
-
it('should format comparison as side-by-side table', async () => {
|
|
301
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
302
|
-
const result = compareCharacters(['deadwood:sm', 'firefly:sm']);
|
|
303
|
-
assert.ok(result.markdown, 'Should have markdown output');
|
|
304
|
-
// Should have multiple columns for comparison
|
|
305
|
-
assert.ok(result.markdown.includes('|') &&
|
|
306
|
-
result.markdown.includes('deadwood') &&
|
|
307
|
-
result.markdown.includes('firefly'), 'Should show both themes in comparison table');
|
|
308
|
-
});
|
|
309
|
-
it('should include face SVG paths in comparison output', async () => {
|
|
310
|
-
const { compareCharacters } = await import('./generate-report.js');
|
|
311
|
-
const result = compareCharacters(['deadwood:sm', 'firefly:sm']);
|
|
312
|
-
assert.ok(result.markdown.includes('deadwood') && result.markdown.includes('sm.svg'), 'Should include SVG paths for faces');
|
|
313
|
-
});
|
|
314
|
-
});
|
|
315
|
-
// ============================================================================
|
|
316
|
-
// Integration: Full Report Generation
|
|
317
|
-
// ============================================================================
|
|
318
|
-
describe('Integration: Full Report Pipeline', () => {
|
|
319
|
-
it('should generate complete report with filter, characters, and markdown', async () => {
|
|
320
|
-
const { generateReport } = await import('./generate-report.js');
|
|
321
|
-
const result = generateReport({ role: 'reviewer' });
|
|
322
|
-
assert.ok(result.characters, 'Should have characters');
|
|
323
|
-
assert.ok(result.markdown, 'Should have markdown');
|
|
324
|
-
assert.ok(result.filter, 'Should echo back filter criteria');
|
|
325
|
-
assert.strictEqual(result.filter.role, 'reviewer');
|
|
326
|
-
});
|
|
327
|
-
it('should generate report with multiple combined filters', async () => {
|
|
328
|
-
const { generateReport } = await import('./generate-report.js');
|
|
329
|
-
const result = generateReport({
|
|
330
|
-
role: 'sm',
|
|
331
|
-
ocean: 'C>=4',
|
|
332
|
-
});
|
|
333
|
-
// All results should match both criteria
|
|
334
|
-
for (const char of result.characters) {
|
|
335
|
-
assert.strictEqual(char.agent, 'sm');
|
|
336
|
-
assert.ok(char.ocean.C >= 4);
|
|
337
|
-
}
|
|
338
|
-
});
|
|
339
|
-
it('should return empty results for impossible filter combination', async () => {
|
|
340
|
-
const { generateReport } = await import('./generate-report.js');
|
|
341
|
-
// Filter for O=1 AND O=5 (impossible)
|
|
342
|
-
const result = generateReport({
|
|
343
|
-
ocean: 'O=1',
|
|
344
|
-
// Would need second filter mechanism for this test
|
|
345
|
-
});
|
|
346
|
-
// This should return results that match O=1
|
|
347
|
-
for (const char of result.characters) {
|
|
348
|
-
assert.strictEqual(char.ocean.O, 1);
|
|
349
|
-
}
|
|
350
|
-
});
|
|
351
|
-
it('should handle empty result set gracefully', async () => {
|
|
352
|
-
const { generateReport } = await import('./generate-report.js');
|
|
353
|
-
// Very restrictive filter that likely returns nothing
|
|
354
|
-
const result = generateReport({
|
|
355
|
-
role: 'sm',
|
|
356
|
-
ocean: 'O=1',
|
|
357
|
-
theme: 'deadwood', // Valid theme for testing
|
|
358
|
-
});
|
|
359
|
-
assert.ok(Array.isArray(result.characters), 'Should return array even if empty');
|
|
360
|
-
assert.ok(typeof result.markdown === 'string', 'Should return markdown even if empty');
|
|
361
|
-
});
|
|
362
|
-
});
|
|
363
|
-
//# sourceMappingURL=generate-report.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-report.test.js","sourceRoot":"","sources":["../../src/scripts/generate-report.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OCEAN Spider Chart Report Generator
|
|
3
|
-
*
|
|
4
|
-
* Story 11-12: Build spider chart report generator
|
|
5
|
-
*
|
|
6
|
-
* Generates filtered spider chart reports and character comparisons with markdown output.
|
|
7
|
-
* Mirrors generate-report.ts interface but outputs spider charts instead of Chernoff faces.
|
|
8
|
-
*/
|
|
9
|
-
export interface OceanScores {
|
|
10
|
-
O: number;
|
|
11
|
-
C: number;
|
|
12
|
-
E: number;
|
|
13
|
-
A: number;
|
|
14
|
-
N: number;
|
|
15
|
-
}
|
|
16
|
-
export interface CharacterInfo {
|
|
17
|
-
theme: string;
|
|
18
|
-
agent: string;
|
|
19
|
-
character: string;
|
|
20
|
-
ocean: OceanScores;
|
|
21
|
-
}
|
|
22
|
-
export interface OceanFilter {
|
|
23
|
-
dimension: keyof OceanScores;
|
|
24
|
-
operator: '>=' | '<=' | '=' | '>' | '<';
|
|
25
|
-
value: number;
|
|
26
|
-
}
|
|
27
|
-
export interface ReportOptions {
|
|
28
|
-
role?: string;
|
|
29
|
-
theme?: string;
|
|
30
|
-
ocean?: string;
|
|
31
|
-
}
|
|
32
|
-
export interface ReportResult {
|
|
33
|
-
characters: CharacterInfo[];
|
|
34
|
-
markdown: string;
|
|
35
|
-
filter: ReportOptions;
|
|
36
|
-
}
|
|
37
|
-
export interface ComparisonResult {
|
|
38
|
-
characters: CharacterInfo[];
|
|
39
|
-
markdown: string;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Parse an OCEAN filter expression like "O>=4" or "A<=2"
|
|
43
|
-
*/
|
|
44
|
-
export declare function parseOceanFilter(expr: string): OceanFilter;
|
|
45
|
-
/**
|
|
46
|
-
* Filter characters by OCEAN dimension expression
|
|
47
|
-
*/
|
|
48
|
-
export declare function filterByOcean(expression: string): CharacterInfo[];
|
|
49
|
-
/**
|
|
50
|
-
* Filter characters by agent role
|
|
51
|
-
*/
|
|
52
|
-
export declare function filterByRole(role: string): CharacterInfo[];
|
|
53
|
-
/**
|
|
54
|
-
* Filter characters by theme (returns all 10 agents for that theme)
|
|
55
|
-
*/
|
|
56
|
-
export declare function filterByTheme(theme: string): CharacterInfo[];
|
|
57
|
-
/**
|
|
58
|
-
* Compare 2-4 characters using overlay spider chart
|
|
59
|
-
*/
|
|
60
|
-
export declare function compareCharacters(specs: string[]): ComparisonResult;
|
|
61
|
-
/**
|
|
62
|
-
* Generate a filtered report with markdown output
|
|
63
|
-
*/
|
|
64
|
-
export declare function generateReport(options: ReportOptions): ReportResult;
|
|
65
|
-
//# sourceMappingURL=generate-spider-report.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-spider-report.d.ts","sourceRoot":"","sources":["../../src/scripts/generate-spider-report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAoBH,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,WAAW,CAAC;IAC7B,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiKD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAsC1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE,CAKjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAO1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAgB5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAyCnE;AAiCD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAgCnE"}
|